- v2 ChangeMobile
This commit is contained in:
@@ -90,6 +90,7 @@ var (
|
||||
ErrIllegalAuthType = errors.New("非法的登录类型")
|
||||
ErrAuthTypeAlreadyExist = errors.New("要登录类型已经存在")
|
||||
ErrCaptchaIsNotOk = errors.New("图形校验码不正确")
|
||||
ErrNeedV2Token = errors.New("需要V2版的TOKEN")
|
||||
)
|
||||
|
||||
func init() {
|
||||
|
||||
@@ -5,6 +5,7 @@ import (
|
||||
|
||||
"git.rosy.net.cn/baseapi/utils"
|
||||
"git.rosy.net.cn/jx-callback/business/auth2"
|
||||
"git.rosy.net.cn/jx-callback/business/jxutils/jxcontext"
|
||||
"git.rosy.net.cn/jx-callback/business/model"
|
||||
"git.rosy.net.cn/jx-callback/business/model/dao"
|
||||
)
|
||||
@@ -58,3 +59,29 @@ func RegisterUser(user *model.User, mobileVerifyCode string, inAuthInfo *auth2.A
|
||||
}
|
||||
return outAuthInfo, err
|
||||
}
|
||||
|
||||
func GetUserBindAuthInfo(ctx *jxcontext.Context) (authList []*model.AuthBind, err error) {
|
||||
authInfo, err := ctx.GetV2AuthInfo()
|
||||
if err == nil {
|
||||
return dao.GetUserBindAuthInfo(dao.GetDB(), authInfo.GetID())
|
||||
}
|
||||
return nil, err
|
||||
}
|
||||
|
||||
func ChangeMobile2(ctx *jxcontext.Context, mobile, mobileVerifyCode string) (err error) {
|
||||
authInfo, err := ctx.GetV2AuthInfo()
|
||||
if err == nil {
|
||||
mobileAuth, err2 := auth2.Login(auth2.AuthTypeMobile, mobile, auth2.UserIDNone, mobileVerifyCode)
|
||||
if err = err2; err == nil {
|
||||
if mobileAuth.IUser != nil && authInfo.GetID() != mobileAuth.GetID() {
|
||||
return errors.New("手机号已经存在")
|
||||
}
|
||||
_, err = dao.UpdateEntityLogically(dao.GetDB(), &model.User{}, map[string]interface{}{
|
||||
"Mobile": mobile,
|
||||
}, ctx.GetUserName(), map[string]interface{}{
|
||||
"UserID": authInfo.GetID(),
|
||||
})
|
||||
}
|
||||
}
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -122,6 +122,14 @@ func (ctx *Context) GetLoginInfo() IAuther {
|
||||
return ctx.userInfo
|
||||
}
|
||||
|
||||
func (ctx *Context) GetV2AuthInfo() (authInfo *auth2.AuthInfo, err error) {
|
||||
authInfo, ok := ctx.userInfo.(*auth2.AuthInfo)
|
||||
if ok {
|
||||
return authInfo, nil
|
||||
}
|
||||
return nil, auth2.ErrNeedV2Token
|
||||
}
|
||||
|
||||
func (ctx *Context) GetRootTask() tasksch.ITask {
|
||||
ctx.locker.RLock()
|
||||
defer ctx.locker.RUnlock()
|
||||
|
||||
@@ -2,7 +2,6 @@ package controllers
|
||||
|
||||
import (
|
||||
"encoding/base64"
|
||||
"errors"
|
||||
"fmt"
|
||||
"net/http"
|
||||
|
||||
@@ -11,15 +10,10 @@ import (
|
||||
"git.rosy.net.cn/jx-callback/business/auth2/authprovider/password"
|
||||
"git.rosy.net.cn/jx-callback/business/auth2/authprovider/weixin"
|
||||
"git.rosy.net.cn/jx-callback/business/jxcallback/auth"
|
||||
"git.rosy.net.cn/jx-callback/business/jxutils/jxcontext"
|
||||
"git.rosy.net.cn/jx-callback/business/model"
|
||||
"github.com/astaxie/beego"
|
||||
)
|
||||
|
||||
var (
|
||||
ErrNeedV2Token = errors.New("需要V2版的TOKEN")
|
||||
)
|
||||
|
||||
type Auth2Controller struct {
|
||||
beego.Controller
|
||||
}
|
||||
@@ -28,7 +22,7 @@ type Auth2Controller struct {
|
||||
// @Description 生成captcha
|
||||
// @Param width formData int true "图片宽"
|
||||
// @Param height formData int true "图片高"
|
||||
// @Param captchaLen formData int false "验证码长度"
|
||||
// @Param captchaLen formData int false captcha码长度"
|
||||
// @Success 200 {object} controllers.CallResult
|
||||
// @Failure 200 {object} controllers.CallResult
|
||||
// @router /CreateCaptcha [post]
|
||||
@@ -40,9 +34,9 @@ func (c *Auth2Controller) CreateCaptcha() {
|
||||
}
|
||||
|
||||
// @Title 发送验证码
|
||||
// @Description 发送验证码(图片验证码与authToken二者必须至少有一个)
|
||||
// @Param captchaID formData string false "图片验证码ID"
|
||||
// @Param captchaValue formData string false "图片验证码值"
|
||||
// @Description 发送验证码(captcha码与authToken二者必须至少有一个)
|
||||
// @Param captchaID formData string false "captcha码ID"
|
||||
// @Param captchaValue formData string false "captcha码值"
|
||||
// @Param authToken formData string false "之前的认证信息"
|
||||
// @Param authID formData string true "手机号或邮件"
|
||||
// @Success 200 {object} controllers.CallResult
|
||||
@@ -157,7 +151,7 @@ func (c *Auth2Controller) Logout() {
|
||||
// @router /AddAuthBind [post]
|
||||
func (c *Auth2Controller) AddAuthBind() {
|
||||
c.callAddAuthBind(func(params *tAuth2AddAuthBindParams) (retVal interface{}, errCode string, err error) {
|
||||
authInfo, err2 := getAuth2Info(params.Ctx)
|
||||
authInfo, err2 := params.Ctx.GetV2AuthInfo()
|
||||
if err := err2; err == nil {
|
||||
newAuthInfo, err2 := auth2.GetTokenInfo(params.AuthToken)
|
||||
if err = err2; err == nil {
|
||||
@@ -177,7 +171,7 @@ func (c *Auth2Controller) AddAuthBind() {
|
||||
// @router /RemoveAuthBind [post]
|
||||
func (c *Auth2Controller) RemoveAuthBind() {
|
||||
c.callRemoveAuthBind(func(params *tAuth2RemoveAuthBindParams) (retVal interface{}, errCode string, err error) {
|
||||
authInfo, err2 := getAuth2Info(params.Ctx)
|
||||
authInfo, err2 := params.Ctx.GetV2AuthInfo()
|
||||
if err := err2; err == nil {
|
||||
err = auth2.UnbindAuth(authInfo, params.AuthType)
|
||||
}
|
||||
@@ -195,17 +189,10 @@ func (c *Auth2Controller) RemoveAuthBind() {
|
||||
// @router /ChangePassword [put]
|
||||
func (c *Auth2Controller) ChangePassword() {
|
||||
c.callChangePassword(func(params *tAuth2ChangePasswordParams) (retVal interface{}, errCode string, err error) {
|
||||
authInfo, err := getAuth2Info(params.Ctx)
|
||||
authInfo, err := params.Ctx.GetV2AuthInfo()
|
||||
if err == nil {
|
||||
err = password.AutherObj.ChangePassword(authInfo.GetID(), params.OldPwd, params.NewPwd)
|
||||
}
|
||||
return retVal, "", err
|
||||
})
|
||||
}
|
||||
|
||||
func getAuth2Info(ctx *jxcontext.Context) (authInfo *auth2.AuthInfo, err error) {
|
||||
if authInfo, ok := ctx.GetLoginInfo().(*auth2.AuthInfo); ok {
|
||||
return authInfo, err
|
||||
}
|
||||
return nil, ErrNeedV2Token
|
||||
}
|
||||
|
||||
@@ -7,7 +7,6 @@ import (
|
||||
"git.rosy.net.cn/jx-callback/business/jxstore/cms"
|
||||
"git.rosy.net.cn/jx-callback/business/jxutils"
|
||||
"git.rosy.net.cn/jx-callback/business/model"
|
||||
"git.rosy.net.cn/jx-callback/business/model/dao"
|
||||
"github.com/astaxie/beego"
|
||||
)
|
||||
|
||||
@@ -49,10 +48,22 @@ func (c *User2Controller) RegisterUser() {
|
||||
// @router /GetBindAuthInfo [get]
|
||||
func (c *User2Controller) GetBindAuthInfo() {
|
||||
c.callGetBindAuthInfo(func(params *tUser2GetBindAuthInfoParams) (retVal interface{}, errCode string, err error) {
|
||||
authInfo, err := getAuth2Info(params.Ctx)
|
||||
if err == nil {
|
||||
retVal, err = dao.GetUserBindAuthInfo(dao.GetDB(), authInfo.GetID())
|
||||
}
|
||||
retVal, err = cms.GetUserBindAuthInfo(params.Ctx)
|
||||
return retVal, "", err
|
||||
})
|
||||
}
|
||||
|
||||
// @Title 修改手机号
|
||||
// @Description 修改手机号
|
||||
// @Param token header string true "认证token"
|
||||
// @Param mobile query string true "新手机号"
|
||||
// @Param mobileVerifyCode query string true "手机验证码(通过auth2.SendVerifyCode获得)"
|
||||
// @Success 200 {object} controllers.CallResult
|
||||
// @Failure 200 {object} controllers.CallResult
|
||||
// @router /ChangeMobile [put]
|
||||
func (c *User2Controller) ChangeMobile() {
|
||||
c.callChangeMobile(func(params *tUser2ChangeMobileParams) (retVal interface{}, errCode string, err error) {
|
||||
err = cms.ChangeMobile2(params.Ctx, params.Mobile, params.MobileVerifyCode)
|
||||
return retVal, "", err
|
||||
})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user