diff --git a/utils/ldap_lib/ldap.go b/utils/ldap_lib/ldap.go deleted file mode 100644 index 93e9b184..00000000 --- a/utils/ldap_lib/ldap.go +++ /dev/null @@ -1,37 +0,0 @@ -package ldap_lib - -import ( - "github.com/go-ldap/ldap/v3" -) - -type LdapGroup struct { - conn *ldap.Conn -} - -func NewLdapGroup(conn *ldap.Conn) *LdapGroup { - return &LdapGroup{conn} -} - -// 更新分组信息 -func (l *LdapGroup) UpdateGroup(groupDN string, attr map[string][]string) error { - modify := ldap.NewModifyRequest(groupDN, nil) - for key, v := range attr { - modify.Replace(key, v) - } - return l.conn.Modify(modify) -} - -// 删除分组 -func (l *LdapGroup) DeleteGroup(groupDN string) error { - del := ldap.NewDelRequest(groupDN, nil) - return l.conn.Del(del) -} - -// 创建分组 -func (l *LdapGroup) CreateGroup(groupDN string, attr map[string][]string) error { - add := ldap.NewAddRequest(groupDN, nil) - for key, v := range attr { - add.Attribute(key, v) - } - return l.conn.Add(add) -} diff --git a/utils/ldap_lib/ldap_group.go b/utils/ldap_lib/ldap_group.go new file mode 100644 index 00000000..892b2692 --- /dev/null +++ b/utils/ldap_lib/ldap_group.go @@ -0,0 +1,56 @@ +package ldap_lib + +import ( + "errors" + "github.com/go-ldap/ldap/v3" +) + +type Ldap struct { + conn *ldap.Conn +} + +func NewLdap(conn *ldap.Conn) *Ldap { + return &Ldap{conn} +} + +// 更新资源(分组/用户) +func (l *Ldap) Update(DN string, attr map[string][]string) error { + modify := ldap.NewModifyRequest(DN, nil) + for key, v := range attr { + modify.Replace(key, v) + } + return l.conn.Modify(modify) +} + +// 创建资源(分组/用户) +func (l *Ldap) Create(DN string, attr map[string][]string) error { + add := ldap.NewAddRequest(DN, nil) + for key, v := range attr { + add.Attribute(key, v) + } + return l.conn.Add(add) +} + +// 删除资源(分组/用户) +func (l *Ldap) Delete(DN string) error { + del := ldap.NewDelRequest(DN, nil) + return l.conn.Del(del) +} + +// AddUserToGroup 添加用户到分组 +func (l *Ldap) AddUserToGroup(groupDN, userDN string) error { + //判断dn是否以ou开头 + if groupDN[:3] == "ou=" { + return errors.New("不能添加用户到OU组织单元") + } + modify := ldap.NewModifyRequest(groupDN, nil) + modify.Add("uniqueMember", []string{userDN}) + return l.conn.Modify(modify) +} + +// DelUserFromGroup 将用户从分组删除 +func (l *Ldap) RemoveUserFromGroup(groupDN, userDN string) error { + modify := ldap.NewModifyRequest(groupDN, nil) + modify.Delete("uniqueMember", []string{userDN}) + return l.conn.Modify(modify) +}