@@ -20,66 +20,66 @@ import (
2020)
2121
2222// UserSignIn validates user name and password.
23- func UserSignIn (username , password string ) (* models.User , error ) {
23+ func UserSignIn (username , password string ) (* models.User , * models. LoginSource , error ) {
2424 var user * models.User
2525 if strings .Contains (username , "@" ) {
2626 user = & models.User {Email : strings .ToLower (strings .TrimSpace (username ))}
2727 // check same email
2828 cnt , err := models .Count (user )
2929 if err != nil {
30- return nil , err
30+ return nil , nil , err
3131 }
3232 if cnt > 1 {
33- return nil , models.ErrEmailAlreadyUsed {
33+ return nil , nil , models.ErrEmailAlreadyUsed {
3434 Email : user .Email ,
3535 }
3636 }
3737 } else {
3838 trimmedUsername := strings .TrimSpace (username )
3939 if len (trimmedUsername ) == 0 {
40- return nil , models.ErrUserNotExist {Name : username }
40+ return nil , nil , models.ErrUserNotExist {Name : username }
4141 }
4242
4343 user = & models.User {LowerName : strings .ToLower (trimmedUsername )}
4444 }
4545
4646 hasUser , err := models .GetUser (user )
4747 if err != nil {
48- return nil , err
48+ return nil , nil , err
4949 }
5050
5151 if hasUser {
5252 source , err := models .GetLoginSourceByID (user .LoginSource )
5353 if err != nil {
54- return nil , err
54+ return nil , nil , err
5555 }
5656
5757 if ! source .IsActive {
58- return nil , models .ErrLoginSourceNotActived
58+ return nil , nil , models .ErrLoginSourceNotActived
5959 }
6060
6161 authenticator , ok := source .Cfg .(PasswordAuthenticator )
6262 if ! ok {
63- return nil , models .ErrUnsupportedLoginType
63+ return nil , nil , models .ErrUnsupportedLoginType
6464 }
6565
6666 user , err := authenticator .Authenticate (user , username , password )
6767 if err != nil {
68- return nil , err
68+ return nil , nil , err
6969 }
7070
7171 // WARN: DON'T check user.IsActive, that will be checked on reqSign so that
7272 // user could be hint to resend confirm email.
7373 if user .ProhibitLogin {
74- return nil , models.ErrUserProhibitLogin {UID : user .ID , Name : user .Name }
74+ return nil , nil , models.ErrUserProhibitLogin {UID : user .ID , Name : user .Name }
7575 }
7676
77- return user , nil
77+ return user , source , nil
7878 }
7979
8080 sources , err := models .AllActiveLoginSources ()
8181 if err != nil {
82- return nil , err
82+ return nil , nil , err
8383 }
8484
8585 for _ , source := range sources {
@@ -97,7 +97,7 @@ func UserSignIn(username, password string) (*models.User, error) {
9797
9898 if err == nil {
9999 if ! authUser .ProhibitLogin {
100- return authUser , nil
100+ return authUser , source , nil
101101 }
102102 err = models.ErrUserProhibitLogin {UID : authUser .ID , Name : authUser .Name }
103103 }
@@ -109,5 +109,5 @@ func UserSignIn(username, password string) (*models.User, error) {
109109 }
110110 }
111111
112- return nil , models.ErrUserNotExist {Name : username }
112+ return nil , nil , models.ErrUserNotExist {Name : username }
113113}
0 commit comments