@@ -1041,27 +1041,40 @@ func (m *Manager) RegisterWithEmail(register request.MailRegister, admin bool) (
10411041 return user , nil
10421042}
10431043
1044- func (m * Manager ) RegisterVerifyMail (rvm request.RegisterVerifyMail ) (* models.User , * perror.PlutoError ) {
1045-
1046- identifyToken := b64 .RawStdEncoding .EncodeToString ([]byte (rvm .Mail ))
1047- binding , err := models .Bindings (qm .Where ("login_type = ? and identify_token = ?" , MAILLOGIN , identifyToken )).One (m .db )
1048- if err != nil && err == sql .ErrNoRows {
1049- return nil , perror .MailNotExist
1050- } else if err != nil {
1051- return nil , perror .ServerError .Wrapper (err )
1044+ func (m * Manager ) RegisterVerifyMail (rvm request.RegisterVerifyMail ) (* models.Binding , * perror.PlutoError ) {
1045+
1046+ var userMail string
1047+ var binding * models.Binding
1048+ var queryErr error
1049+ if rvm .Mail != "" {
1050+ userMail = rvm .Mail
1051+ identifyToken := b64 .RawStdEncoding .EncodeToString ([]byte (userMail ))
1052+ binding , queryErr = models .Bindings (qm .Where ("login_type = ? and identify_token = ?" , MAILLOGIN , identifyToken )).One (m .db )
1053+ if queryErr != nil && queryErr == sql .ErrNoRows {
1054+ return nil , perror .MailNotExist
1055+ } else if queryErr != nil {
1056+ return nil , perror .ServerError .Wrapper (queryErr )
1057+ }
1058+ } else {
1059+ user , userErr := models .Users (qm .Where ("user_id = ?" , rvm .UserID )).One (m .db )
1060+ if userErr != nil && userErr == sql .ErrNoRows {
1061+ return nil , perror .UserIdNotExist
1062+ } else if userErr != nil {
1063+ return nil , perror .ServerError .Wrapper (userErr )
1064+ }
1065+ binding , queryErr = models .Bindings (qm .Where ("login_type = ? and user_id = ?" , MAILLOGIN , user .ID )).One (m .db )
1066+ if queryErr != nil && queryErr == sql .ErrNoRows {
1067+ return nil , perror .MailNotExist
1068+ } else if queryErr != nil {
1069+ return nil , perror .ServerError .Wrapper (queryErr )
1070+ }
10521071 }
10531072
10541073 if binding .Verified .Bool == true {
10551074 return nil , perror .MailAlreadyVerified
10561075 }
10571076
1058- user , err := models .Users (qm .Where ("id = ?" , binding .UserID )).One (m .db )
1059-
1060- if err != nil {
1061- return nil , perror .ServerError .Wrapper (err )
1062- }
1063-
1064- return user , nil
1077+ return binding , nil
10651078}
10661079
10671080func (m * Manager ) RegisterVerify (token string ) * perror.PlutoError {
0 commit comments