12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- package ldap
- import (
- "encoding/json"
- "github.com/astaxie/beego/logs"
- "github.com/go-ldap/ldap/v3"
- "nginx-ui/server/models"
- "strings"
- "time"
- )
- func modifyLDAPUser(user *models.LdapUser, entry *ldap.Entry) {
- user.LastSyncDate = time.Now()
- user.Password = entry.GetAttributeValue("userPassword")
- user.UserName = entry.GetAttributeValue("cn")
- user.Mail = entry.GetAttributeValue("mail")
- user.DN = entry.DN
- var organizeList []string
- items := strings.Split(user.DN, ",")
- for _, item := range items {
- if !strings.HasPrefix(item, "cn=") {
- organizeList = append(organizeList, item)
- }
- }
- user.Organize = strings.Join(organizeList, ",")
- }
- func createUser(entry *ldap.Entry) models.LdapUser {
- user := models.LdapUser{
- Account: entry.GetAttributeValue("uid"),
- }
- modifyLDAPUser(&user, entry)
- jsonBytes, err := json.Marshal(entry.Attributes)
- if err != nil {
- logs.Error("marshal fail : %v", err)
- user.Remark = "attributes marshal fail: " + err.Error()
- } else {
- user.Attributes = string(jsonBytes)
- }
- return user
- }
- func CreateLocalUser(user *models.User, from *models.LdapUser) {
- user.Password = from.Password
- user.Account = from.Account
- user.Nickname = from.UserName
- user.Email = from.Mail
- user.Source = "LDAP"
- }
|