當前位置: 首頁>>代碼示例>>Golang>>正文


Golang User.Realname方法代碼示例

本文整理匯總了Golang中github.com/vmware/harbor/models.User.Realname方法的典型用法代碼示例。如果您正苦於以下問題:Golang User.Realname方法的具體用法?Golang User.Realname怎麽用?Golang User.Realname使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在github.com/vmware/harbor/models.User的用法示例。


在下文中一共展示了User.Realname方法的1個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。

示例1: Authenticate

// Authenticate checks user's credential agains LDAP based on basedn template and LDAP URL,
// if the check is successful a dummy record will be insert into DB, such that this user can
// be associated to other entities in the system.
func (l *Auth) Authenticate(m models.AuthModel) (*models.User, error) {

    ldapURL := os.Getenv("LDAP_URL")
    if ldapURL == "" {
        return nil, errors.New("Can not get any available LDAP_URL.")
    }
    log.Debug("ldapURL:", ldapURL)

    p := m.Principal
    for _, c := range metaChars {
        if strings.ContainsRune(p, c) {
            return nil, fmt.Errorf("the principal contains meta char: %q", c)
        }
    }

    ldap, err := openldap.Initialize(ldapURL)
    if err != nil {
        return nil, err
    }

    ldap.SetOption(openldap.LDAP_OPT_PROTOCOL_VERSION, openldap.LDAP_VERSION3)

    ldapBaseDn := os.Getenv("LDAP_BASE_DN")
    if ldapBaseDn == "" {
        return nil, errors.New("Can not get any available LDAP_BASE_DN.")
    }

    baseDn := fmt.Sprintf(ldapBaseDn, m.Principal)
    log.Debug("baseDn:", baseDn)

    err = ldap.Bind(baseDn, m.Password)
    if err != nil {
        return nil, err
    }
    defer ldap.Close()

    scope := openldap.LDAP_SCOPE_SUBTREE // LDAP_SCOPE_BASE, LDAP_SCOPE_ONELEVEL, LDAP_SCOPE_SUBTREE
    filter := "objectClass=*"
    attributes := []string{"mail"}

    result, err := ldap.SearchAll(baseDn, scope, filter, attributes)
    if err != nil {
        return nil, err
    }
    u := models.User{}
    if len(result.Entries()) == 1 {
        en := result.Entries()[0]
        for _, attr := range en.Attributes() {
            val := attr.Values()[0]
            if attr.Name() == "mail" {
                u.Email = val
            }
        }
    }

    u.Username = m.Principal
    log.Debug("username:", u.Username, ",email:", u.Email)

    exist, err := dao.UserExists(u, "username")
    if err != nil {
        return nil, err
    }

    if exist {
        currentUser, err := dao.GetUser(u)
        if err != nil {
            return nil, err
        }
        u.UserID = currentUser.UserID
    } else {
        u.Realname = m.Principal
        u.Password = "12345678AbC"
        u.Comment = "registered from LDAP."
        userID, err := dao.Register(u)
        if err != nil {
            return nil, err
        }
        u.UserID = int(userID)
    }
    return &u, nil
}
開發者ID:CodingDance,項目名稱:harbor,代碼行數:84,代碼來源:ldap.go


注:本文中的github.com/vmware/harbor/models.User.Realname方法示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。