- refactor weixin and mini program login

This commit is contained in:
gazebo
2019-01-26 16:02:01 +08:00
parent ab53a4b61d
commit aba16383fe
10 changed files with 284 additions and 116 deletions

View File

@@ -2,7 +2,6 @@ package auth
import (
"errors"
"fmt"
"time"
"git.rosy.net.cn/baseapi/utils"
@@ -17,7 +16,7 @@ const (
)
type IAuther interface {
Login(id, secret string) (userID string, err error)
Login(id, secret string) (userID, loginType string, err error)
Logout(loginInfo *LoginInfo) error
}
@@ -26,6 +25,7 @@ var (
)
var (
ErrUserNotExist = errors.New("用户不存在,请联系运营创建")
ErrLoginTypeNotSupported = errors.New("不支持指定的登录类型")
ErrUIDAndPassNotMatch = errors.New("用户与密码不匹配")
)
@@ -45,25 +45,34 @@ func RegisterAuther(loginType string, handler IAuther) {
authers[loginType] = handler
}
func CreateLoginInfo(id, loginType string) (loginInfo *LoginInfo) {
token := utils.GetUUID()
loginInfo = &LoginInfo{
ID: id,
LoginType: loginType,
ExpiresIn: time.Now().Add(DefTokenDuration).Unix(),
Token: token,
}
globals.SugarLogger.Debugf("CreateLoginInfo id:%s, loginType:%s, loginInfo:%s", id, loginType, utils.Format4Output(loginInfo, true))
api.Cacher.Set(token, loginInfo, DefTokenDuration)
return loginInfo
}
func Login(id, loginType, secret string) (loginInfo *LoginInfo, err error) {
globals.SugarLogger.Debugf("Login id:%s, loginType:%s, secret:%s", id, loginType, secret)
if handler := authers[loginType]; handler != nil {
userID, err2 := handler.Login(id, secret)
userID, loginType2, err2 := handler.Login(id, secret)
if err = err2; err == nil {
if userID != "" {
globals.SugarLogger.Debugf("Login id:%s, loginType:%s, id changed to:%s", id, loginType, userID)
id = userID
}
token := utils.GetUUID()
loginInfo = &LoginInfo{
ID: id,
LoginType: loginType,
ExpiresIn: time.Now().Add(DefTokenDuration).Unix(),
Token: token,
if loginType2 != "" {
loginType = loginType2
}
api.Cacher.Set(token, loginInfo, DefTokenDuration)
globals.SugarLogger.Debugf("Login id:%s, loginType:%s, secret:%s, loginInfo:%s", id, loginType, secret, utils.Format4Output(loginInfo, true))
return loginInfo, nil
return CreateLoginInfo(id, loginType), nil
}
err = ConvertErr2NoUser(err, "")
} else {
err = ErrLoginTypeNotSupported
}
@@ -92,7 +101,7 @@ func GetUserInfo(token string) (loginInfo *LoginInfo, err error) {
func ConvertErr2NoUser(err error, mobileNum string) error {
if dao.IsNoRowsError(err) {
err = fmt.Errorf("没有%s这个用户", mobileNum)
err = ErrUserNotExist
}
return err
}