- dingding auth

This commit is contained in:
gazebo
2019-03-07 21:15:19 +08:00
parent 123ffd4353
commit ce109a60b3
16 changed files with 238 additions and 85 deletions

View File

@@ -44,7 +44,7 @@ func init() {
auth2.RegisterAuther(AuthTypeMP, AutherObjMP)
}
func (a *Auther) VerifySecret(state, code string) (authBind *model.AuthBind, err error) {
func (a *Auther) VerifySecret(state, code string) (authBindEx *auth2.AuthBindEx, err error) {
globals.SugarLogger.Debugf("weixin VerifySecret code:%s", code)
if state == "" {
token, err2 := api.WeixinPageAPI.SNSRetrieveToken(code)
@@ -52,25 +52,29 @@ func (a *Auther) VerifySecret(state, code string) (authBind *model.AuthBind, err
wxUserinfo, err2 := api.WeixinPageAPI.SNSGetUserInfo(token.AccessToken, token.OpenID)
if err = err2; err == nil {
db := dao.GetDB()
if authBind, err = dao.GetAuthBind(db, "", a.authType, wxUserinfo.OpenID); dao.IsNoRowsError(err) {
var authBind *model.AuthBind
if authBind, err = dao.GetAuthBind(db, "", a.authType, wxUserinfo.OpenID); dao.IsNoRowsError(err) && wxUserinfo.UnionID != "" {
var authBindList []*model.AuthBind
if wxUserinfo.UnionID != "" {
if authBindList, err = dao.GetAuthBindsByAuthID2(db, wxUserinfo.UnionID, []string{AuthTypeWeixin, AuthTypeMP, AuthTypeMini}); err == nil && len(authBindList) > 0 {
authBind = authBindList[0]
authBind.Type = a.authType
authBind.AuthID = wxUserinfo.OpenID
authBind.DetailData = string(utils.MustMarshal(wxUserinfo))
err = a.AddAuthBind(authBind, wxUserinfo.NickName)
} else if dao.IsNoRowsError(err) {
err = auth2.ErrUserAuthTypeNotExist
if authBindList, err = dao.GetAuthBindsByAuthID2(db, wxUserinfo.UnionID, []string{AuthTypeWeixin, AuthTypeMP, AuthTypeMini}); err == nil && len(authBindList) > 0 {
authBind = authBindList[0]
authBind.Type = a.authType
authBind.AuthID = wxUserinfo.OpenID
authBind.DetailData = string(utils.MustMarshal(wxUserinfo))
authBindEx = &auth2.AuthBindEx{
AuthBind: *authBind,
}
err = a.AddAuthBind(authBindEx, wxUserinfo.NickName)
} else if dao.IsNoRowsError(err) {
err = nil
}
if err == nil && len(authBindList) == 0 {
authBind = &model.AuthBind{
Type: a.authType,
AuthID: wxUserinfo.OpenID,
AuthID2: wxUserinfo.UnionID,
DetailData: string(utils.MustMarshal(wxUserinfo)),
if err == nil && authBindEx == nil {
authBindEx = &auth2.AuthBindEx{
AuthBind: model.AuthBind{
Type: a.authType,
AuthID: wxUserinfo.OpenID,
AuthID2: wxUserinfo.UnionID,
DetailData: string(utils.MustMarshal(wxUserinfo)),
},
}
}
}
@@ -79,5 +83,5 @@ func (a *Auther) VerifySecret(state, code string) (authBind *model.AuthBind, err
} else {
err = ErrStateIsWrong
}
return authBind, err
return authBindEx, err
}