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  }