SendVerifyCode时,如果是管理员,返回verifyCode
This commit is contained in:
@@ -53,6 +53,7 @@ type IUser interface {
|
||||
GetEmail() string
|
||||
GetName() string
|
||||
GetAvatar() string
|
||||
IsAdmin() bool
|
||||
}
|
||||
|
||||
const (
|
||||
@@ -76,7 +77,7 @@ type CaptchaInfo struct {
|
||||
}
|
||||
|
||||
type IAuther interface {
|
||||
SendVerifyCode(authID string) (err error)
|
||||
SendVerifyCode(authID string) (verifyCode string, err error)
|
||||
// 负责验证secret,并找到相应的用户返回(password,email,mobile类型的不负责用户查找)如果找不到用户UserID为空
|
||||
VerifySecret(authID, authSecret string) (authBindEx *AuthBindEx, err error)
|
||||
AddAuthBind(authBindEx *AuthBindEx, userName string) (err error)
|
||||
@@ -195,9 +196,13 @@ func CreateCaptcha(width, height, captchaLen int) (captchaInfo *CaptchaInfo, err
|
||||
return captchaInfo, err
|
||||
}
|
||||
|
||||
func SendVerifyCode(authToken, captchaID, captchaValue, authID string) (err error) {
|
||||
func SendVerifyCode(authToken, captchaID, captchaValue, authID string) (verfifyCode string, err error) {
|
||||
isReturnVerifyCode := false
|
||||
if authToken != "" {
|
||||
_, err = GetTokenInfo(authToken)
|
||||
authInfo, err2 := GetTokenInfo(authToken)
|
||||
if err = err2; err == nil {
|
||||
isReturnVerifyCode = authInfo.IsAdmin()
|
||||
}
|
||||
} else if captchaID != "" && captchaValue != "" {
|
||||
if !(TestCaptchaMap[captchaID] == captchaValue || captcha.VerifyString(captchaID, captchaValue)) {
|
||||
err = ErrCaptchaIsNotOk
|
||||
@@ -210,10 +215,13 @@ func SendVerifyCode(authToken, captchaID, captchaValue, authID string) (err erro
|
||||
if handler := authers[authType]; handler == nil {
|
||||
err = ErrIllegalAuthType
|
||||
} else {
|
||||
err = handler.SendVerifyCode(authID)
|
||||
code, err2 := handler.SendVerifyCode(authID)
|
||||
if err = err2; err == nil && isReturnVerifyCode {
|
||||
verfifyCode = code
|
||||
}
|
||||
}
|
||||
}
|
||||
return err
|
||||
return verfifyCode, err
|
||||
}
|
||||
|
||||
// 账号密码时:authIDType可能是:UserIDID,UserIDID2,UserIDMobile,UserIDEmail,authSecret是密码的sha1
|
||||
|
||||
@@ -19,6 +19,7 @@ type UserBasic struct {
|
||||
Email string `json:"email"`
|
||||
Name string `json:"name"`
|
||||
Avatar string `json:"avatar"`
|
||||
isAdmin bool
|
||||
}
|
||||
|
||||
func (u *UserBasic) GetID() string {
|
||||
@@ -44,6 +45,10 @@ func (u *UserBasic) GetAvatar() string {
|
||||
return u.Avatar
|
||||
}
|
||||
|
||||
func (u *UserBasic) IsAdmin() bool {
|
||||
return u.isAdmin
|
||||
}
|
||||
|
||||
func (u *UserBasic) UpdateByIUser(user IUser) {
|
||||
if user != nil {
|
||||
u.UserID = user.GetID()
|
||||
@@ -52,6 +57,7 @@ func (u *UserBasic) UpdateByIUser(user IUser) {
|
||||
u.Email = user.GetEmail()
|
||||
u.Name = user.GetName()
|
||||
u.Avatar = user.GetAvatar()
|
||||
u.isAdmin = user.IsAdmin()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -45,8 +45,8 @@ func (a *DefAuther) UnbindAuth(userID, authType, userName string) (err error) {
|
||||
return err
|
||||
}
|
||||
|
||||
func (a *DefAuther) SendVerifyCode(authID string) error {
|
||||
return errors.New("当前登录类型不支持此操作")
|
||||
func (a *DefAuther) SendVerifyCode(authID string) (verifyCode string, err error) {
|
||||
return "", errors.New("当前登录类型不支持此操作")
|
||||
}
|
||||
|
||||
// 此函数为空
|
||||
|
||||
@@ -43,15 +43,15 @@ func init() {
|
||||
}
|
||||
|
||||
// 特殊接口
|
||||
func (a *Auther) SendVerifyCode(mobileNumber string) error {
|
||||
code := a.GenerateVerifyCode(mobileNumber)
|
||||
func (a *Auther) SendVerifyCode(mobileNumber string) (verifyCode string, err error) {
|
||||
verifyCode = a.GenerateVerifyCode(mobileNumber)
|
||||
smsClient := aliyunsmsclient.New("http://dysmsapi.aliyuncs.com/")
|
||||
response, err := smsClient.Execute(globals.AliKey, globals.AliSecret, mobileNumber, "京西菜市", "SMS_175583158", string(utils.MustMarshal(map[string]interface{}{
|
||||
"code": code,
|
||||
"code": verifyCode,
|
||||
})))
|
||||
a.SaveVerifyCode(mobileNumber, code)
|
||||
a.SaveVerifyCode(mobileNumber, verifyCode)
|
||||
if err == nil && response.Code == aliyunsmsclient.ResponseCodeOk {
|
||||
// a.SaveVerifyCode(mobileNumber, code)
|
||||
// a.SaveVerifyCode(mobileNumber, verifyCode)
|
||||
} else {
|
||||
if err == nil {
|
||||
if warningMap[response.Code] == 1 {
|
||||
@@ -64,7 +64,7 @@ func (a *Auther) SendVerifyCode(mobileNumber string) error {
|
||||
globals.SugarLogger.Warnf("SendVerifyCode mobileNumber:%s failed with error:%v", mobileNumber, err)
|
||||
}
|
||||
}
|
||||
return err
|
||||
return verifyCode, err
|
||||
}
|
||||
|
||||
func (a *Auther) VerifySecret(mobileNumber, code string) (authBindEx *auth2.AuthBindEx, err error) {
|
||||
|
||||
Reference in New Issue
Block a user