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

     1  package provider
     2  
     3  import (
     4  	"encoding/json"
     5  	"fmt"
     6  
     7  	"github.com/infraboard/mcube/http/request"
     8  	"github.com/infraboard/mcube/types/ftime"
     9  )
    10  
    11  // NewLDAPConfig todo
    12  func NewLDAPConfig(req *SaveLDAPConfigRequest) (*LDAPConfig, error) {
    13  	tk := req.GetToken()
    14  	if tk == nil {
    15  		return nil, fmt.Errorf("token requird")
    16  	}
    17  
    18  	if err := req.Config.Validate(); err != nil {
    19  		return nil, err
    20  	}
    21  
    22  	// 补充默认BaseDN
    23  	if req.BaseDN == "" {
    24  		req.BaseDN = req.GetBaseDNFromUser()
    25  	}
    26  
    27  	ins := &LDAPConfig{
    28  		Domain:                tk.Domain,
    29  		Creater:               tk.Account,
    30  		CreateAt:              ftime.Now(),
    31  		UpdateAt:              ftime.Now(),
    32  		SaveLDAPConfigRequest: req,
    33  	}
    34  	return ins, nil
    35  }
    36  
    37  // NewDefaultLDAPConfig todo
    38  func NewDefaultLDAPConfig() *LDAPConfig {
    39  	return &LDAPConfig{
    40  		SaveLDAPConfigRequest: NewSaveLDAPConfigRequest(),
    41  	}
    42  }
    43  
    44  // LDAPConfig todo
    45  type LDAPConfig struct {
    46  	Domain                 string     `bson:"_id" json:"domain,omitempty"`          // 所属域ID
    47  	Creater                string     `bson:"creater" json:"creater,omitempty"`     // 创建人
    48  	CreateAt               ftime.Time `bson:"create_at" json:"create_at,omitempty"` // 创建时间
    49  	UpdateAt               ftime.Time `bson:"update_at" json:"update_at,omitempty"` // 更新时间
    50  	*SaveLDAPConfigRequest `bson:",inline"`
    51  }
    52  
    53  // Merge todo
    54  func (ldap *LDAPConfig) Merge(data *LDAPConfig) {
    55  	mergeData, _ := json.Marshal(data)
    56  	json.Unmarshal(mergeData, ldap)
    57  }
    58  
    59  // NewLDAPSet 实例化
    60  func NewLDAPSet(req *request.PageRequest) *LDAPSet {
    61  	return &LDAPSet{
    62  		PageRequest: req,
    63  		Items:       []*LDAPConfig{},
    64  	}
    65  }
    66  
    67  // LDAPSet 列表
    68  type LDAPSet struct {
    69  	*request.PageRequest
    70  
    71  	Total int64         `json:"total"`
    72  	Items []*LDAPConfig `json:"items"`
    73  }
    74  
    75  // Add 添加应用
    76  func (s *LDAPSet) Add(item *LDAPConfig) {
    77  	s.Items = append(s.Items, item)
    78  }