|
@@ -169,61 +169,59 @@ func UserSignIn(uname, passwd string) (*User, error) {
|
|
|
// For plain login, user must exist to reach this line.
|
|
|
// Now verify password.
|
|
|
if u.LoginType == PLAIN {
|
|
|
- newUser := &User{Passwd: passwd, Salt: u.Salt}
|
|
|
- newUser.EncodePasswd()
|
|
|
- if u.Passwd != newUser.Passwd {
|
|
|
+ if !u.ValidtePassword(passwd) {
|
|
|
return nil, ErrUserNotExist
|
|
|
}
|
|
|
return u, nil
|
|
|
- } else {
|
|
|
- if !has {
|
|
|
- var sources []LoginSource
|
|
|
- if err = x.UseBool().Find(&sources,
|
|
|
- &LoginSource{IsActived: true, AllowAutoRegister: true}); err != nil {
|
|
|
- return nil, err
|
|
|
- }
|
|
|
+ }
|
|
|
+
|
|
|
+ if !has {
|
|
|
+ var sources []LoginSource
|
|
|
+ if err = x.UseBool().Find(&sources,
|
|
|
+ &LoginSource{IsActived: true, AllowAutoRegister: true}); err != nil {
|
|
|
+ return nil, err
|
|
|
+ }
|
|
|
|
|
|
- for _, source := range sources {
|
|
|
- if source.Type == LDAP {
|
|
|
- u, err := LoginUserLdapSource(nil, uname, passwd,
|
|
|
- source.Id, source.Cfg.(*LDAPConfig), true)
|
|
|
- if err == nil {
|
|
|
- return u, nil
|
|
|
- }
|
|
|
- log.Warn("Fail to login(%s) by LDAP(%s): %v", uname, source.Name, err)
|
|
|
- } else if source.Type == SMTP {
|
|
|
- u, err := LoginUserSMTPSource(nil, uname, passwd,
|
|
|
- source.Id, source.Cfg.(*SMTPConfig), true)
|
|
|
- if err == nil {
|
|
|
- return u, nil
|
|
|
- }
|
|
|
- log.Warn("Fail to login(%s) by SMTP(%s): %v", uname, source.Name, err)
|
|
|
+ for _, source := range sources {
|
|
|
+ if source.Type == LDAP {
|
|
|
+ u, err := LoginUserLdapSource(nil, uname, passwd,
|
|
|
+ source.Id, source.Cfg.(*LDAPConfig), true)
|
|
|
+ if err == nil {
|
|
|
+ return u, nil
|
|
|
+ }
|
|
|
+ log.Warn("Fail to login(%s) by LDAP(%s): %v", uname, source.Name, err)
|
|
|
+ } else if source.Type == SMTP {
|
|
|
+ u, err := LoginUserSMTPSource(nil, uname, passwd,
|
|
|
+ source.Id, source.Cfg.(*SMTPConfig), true)
|
|
|
+ if err == nil {
|
|
|
+ return u, nil
|
|
|
}
|
|
|
+ log.Warn("Fail to login(%s) by SMTP(%s): %v", uname, source.Name, err)
|
|
|
}
|
|
|
-
|
|
|
- return nil, ErrUserNotExist
|
|
|
}
|
|
|
|
|
|
- var source LoginSource
|
|
|
- hasSource, err := x.Id(u.LoginSource).Get(&source)
|
|
|
- if err != nil {
|
|
|
- return nil, err
|
|
|
- } else if !hasSource {
|
|
|
- return nil, ErrLoginSourceNotExist
|
|
|
- } else if !source.IsActived {
|
|
|
- return nil, ErrLoginSourceNotActived
|
|
|
- }
|
|
|
+ return nil, ErrUserNotExist
|
|
|
+ }
|
|
|
|
|
|
- switch u.LoginType {
|
|
|
- case LDAP:
|
|
|
- return LoginUserLdapSource(u, u.LoginName, passwd,
|
|
|
- source.Id, source.Cfg.(*LDAPConfig), false)
|
|
|
- case SMTP:
|
|
|
- return LoginUserSMTPSource(u, u.LoginName, passwd,
|
|
|
- source.Id, source.Cfg.(*SMTPConfig), false)
|
|
|
- }
|
|
|
- return nil, ErrUnsupportedLoginType
|
|
|
+ var source LoginSource
|
|
|
+ hasSource, err := x.Id(u.LoginSource).Get(&source)
|
|
|
+ if err != nil {
|
|
|
+ return nil, err
|
|
|
+ } else if !hasSource {
|
|
|
+ return nil, ErrLoginSourceNotExist
|
|
|
+ } else if !source.IsActived {
|
|
|
+ return nil, ErrLoginSourceNotActived
|
|
|
+ }
|
|
|
+
|
|
|
+ switch u.LoginType {
|
|
|
+ case LDAP:
|
|
|
+ return LoginUserLdapSource(u, u.LoginName, passwd,
|
|
|
+ source.Id, source.Cfg.(*LDAPConfig), false)
|
|
|
+ case SMTP:
|
|
|
+ return LoginUserSMTPSource(u, u.LoginName, passwd,
|
|
|
+ source.Id, source.Cfg.(*SMTPConfig), false)
|
|
|
}
|
|
|
+ return nil, ErrUnsupportedLoginType
|
|
|
}
|
|
|
|
|
|
// Query if name/passwd can login against the LDAP directory pool
|