github.com/infraboard/keyauth@v0.8.1/apps/provider/http/ldap.go (about)

     1  package http
     2  
     3  import (
     4  	"net/http"
     5  
     6  	"github.com/infraboard/mcube/exception"
     7  	"github.com/infraboard/mcube/http/context"
     8  	"github.com/infraboard/mcube/http/request"
     9  	"github.com/infraboard/mcube/http/response"
    10  
    11  	"github.com/infraboard/keyauth/apps/provider"
    12  	"github.com/infraboard/keyauth/apps/token"
    13  	"github.com/infraboard/keyauth/apps/user/types"
    14  )
    15  
    16  func (h *handler) List(w http.ResponseWriter, r *http.Request) {
    17  	page := request.NewPageRequestFromHTTP(r)
    18  	req := provider.NewQueryLDAPConfigRequest(page)
    19  
    20  	apps, err := h.service.QueryConfig(req)
    21  	if err != nil {
    22  		response.Failed(w, err)
    23  		return
    24  	}
    25  
    26  	response.Success(w, apps)
    27  }
    28  
    29  // CreateApplication 创建主账号
    30  func (h *handler) Create(w http.ResponseWriter, r *http.Request) {
    31  	ctx := context.GetContext(r)
    32  	tk := ctx.AuthInfo.(*token.Token)
    33  
    34  	req := provider.NewSaveLDAPConfigRequest()
    35  	req.WithToken(tk)
    36  	req.GetDryRunParamFromHTTP(r)
    37  	if err := request.GetDataFromRequest(r, req); err != nil {
    38  		response.Failed(w, err)
    39  		return
    40  	}
    41  
    42  	if !tk.UserType.IsIn(types.UserType_SUPPER, types.UserType_PRIMARY) {
    43  		response.Failed(w, exception.NewPermissionDeny("只有域管理员可以设置域的LDAP"))
    44  		return
    45  	}
    46  
    47  	d, err := h.service.SaveConfig(req)
    48  	if err != nil {
    49  		response.Failed(w, err)
    50  		return
    51  	}
    52  
    53  	response.Success(w, d)
    54  }
    55  
    56  func (h *handler) Get(w http.ResponseWriter, r *http.Request) {
    57  	ctx := context.GetContext(r)
    58  	tk := ctx.AuthInfo.(*token.Token)
    59  
    60  	req := provider.NewDescribeLDAPConfigWithDomain(tk.Domain)
    61  	d, err := h.service.DescribeConfig(req)
    62  	if err != nil {
    63  		response.Failed(w, err)
    64  		return
    65  	}
    66  
    67  	d.Desensitize()
    68  	response.Success(w, d)
    69  }
    70  
    71  func (h *handler) Check(w http.ResponseWriter, r *http.Request) {
    72  	ctx := context.GetContext(r)
    73  	tk := ctx.AuthInfo.(*token.Token)
    74  
    75  	req := provider.NewDescribeLDAPConfigWithDomain(tk.Domain)
    76  	if err := h.service.CheckConnect(req); err != nil {
    77  		response.Failed(w, err)
    78  		return
    79  	}
    80  
    81  	response.Success(w, "passed")
    82  }