github.com/infraboard/keyauth@v0.8.1/apps/user/http/profile.go (about) 1 package http 2 3 import ( 4 "net/http" 5 6 "github.com/infraboard/keyauth/apps/domain" 7 "github.com/infraboard/keyauth/apps/token" 8 "github.com/infraboard/keyauth/apps/user" 9 "github.com/infraboard/keyauth/apps/user/types" 10 "github.com/infraboard/mcube/exception" 11 "github.com/infraboard/mcube/http/context" 12 "github.com/infraboard/mcube/http/request" 13 "github.com/infraboard/mcube/http/response" 14 ) 15 16 func (h *handler) QueryProfile(w http.ResponseWriter, r *http.Request) { 17 ctx := context.GetContext(r) 18 tk := ctx.AuthInfo.(*token.Token) 19 20 req := user.NewDescriptAccountRequest() 21 req.Account = tk.Account 22 23 ins, err := h.service.DescribeAccount(r.Context(), req) 24 if err != nil { 25 response.Failed(w, err) 26 return 27 } 28 ins.Desensitize() 29 30 response.Success(w, ins) 31 return 32 } 33 34 func (h *handler) PutProfile(w http.ResponseWriter, r *http.Request) { 35 ctx := context.GetContext(r) 36 tk := ctx.AuthInfo.(*token.Token) 37 38 req := user.NewPutAccountRequest() 39 req.Account = tk.Account 40 41 if err := request.GetDataFromRequest(r, req.Profile); err != nil { 42 response.Failed(w, err) 43 return 44 } 45 46 ins, err := h.service.UpdateAccountProfile(r.Context(), req) 47 if err != nil { 48 response.Failed(w, err) 49 return 50 } 51 ins.Desensitize() 52 53 response.Success(w, ins) 54 } 55 56 func (h *handler) PatchProfile(w http.ResponseWriter, r *http.Request) { 57 ctx := context.GetContext(r) 58 tk := ctx.AuthInfo.(*token.Token) 59 60 req := user.NewPatchAccountRequest() 61 req.Account = tk.Account 62 63 if err := request.GetDataFromRequest(r, req.Profile); err != nil { 64 response.Failed(w, err) 65 return 66 } 67 68 // 更新部门 69 if req.DepartmentId != "" { 70 if !tk.UserType.IsIn(types.UserType_SUPPER, types.UserType_DOMAIN_ADMIN, types.UserType_ORG_ADMIN) { 71 response.Failed(w, exception.NewBadRequest("组织管理员才能直接修改用户部门")) 72 return 73 } 74 } 75 76 ins, err := h.service.UpdateAccountProfile(r.Context(), req) 77 if err != nil { 78 response.Failed(w, err) 79 return 80 } 81 ins.Desensitize() 82 83 response.Success(w, ins) 84 } 85 86 func (h *handler) QueryDomain(w http.ResponseWriter, r *http.Request) { 87 ctx := context.GetContext(r) 88 tk := ctx.AuthInfo.(*token.Token) 89 90 req := domain.NewDescribeDomainRequest() 91 req.Name = tk.Domain 92 93 ins, err := h.domain.DescribeDomain( 94 r.Context(), 95 req, 96 ) 97 if err != nil { 98 response.Failed(w, err) 99 return 100 } 101 102 response.Success(w, ins) 103 } 104 105 func (h *handler) UpdateDomainInfo(w http.ResponseWriter, r *http.Request) { 106 ctx := context.GetContext(r) 107 tk := ctx.AuthInfo.(*token.Token) 108 109 // 查找出原来的domain 110 req := domain.NewPatchDomainRequest() 111 req.Name = tk.Domain 112 113 // 解析需要更新的数据 114 if err := request.GetDataFromRequest(r, req.Profile); err != nil { 115 response.Failed(w, err) 116 return 117 } 118 119 ins, err := h.domain.UpdateDomain(r.Context(), req) 120 if err != nil { 121 response.Failed(w, err) 122 return 123 } 124 125 response.Success(w, ins) 126 } 127 128 func (h *handler) UpdateDomainSecurity(w http.ResponseWriter, r *http.Request) { 129 ctx := context.GetContext(r) 130 tk := ctx.AuthInfo.(*token.Token) 131 132 // 查找出原来的domain 133 req := domain.NewPutDomainSecurityRequest() 134 req.Name = tk.Domain 135 136 // 解析需要更新的数据 137 if err := request.GetDataFromRequest(r, req.SecuritySetting); err != nil { 138 response.Failed(w, err) 139 return 140 } 141 142 ins, err := h.domain.UpdateDomainSecurity(r.Context(), req) 143 if err != nil { 144 response.Failed(w, err) 145 return 146 } 147 148 response.Success(w, ins) 149 }