48 lines
1.3 KiB
Go
48 lines
1.3 KiB
Go
package dingding
|
|
|
|
import (
|
|
"git.rosy.net.cn/baseapi/utils"
|
|
"git.rosy.net.cn/jx-callback/business/auth2"
|
|
"git.rosy.net.cn/jx-callback/business/auth2/authprovider"
|
|
"git.rosy.net.cn/jx-callback/globals/api"
|
|
)
|
|
|
|
type QRCodeAuther struct {
|
|
authprovider.DefAuther
|
|
}
|
|
|
|
var (
|
|
AutherObjQRCode *QRCodeAuther
|
|
)
|
|
|
|
func init() {
|
|
AutherObjQRCode = new(QRCodeAuther)
|
|
auth2.RegisterAuther(AuthTypeQRCode, AutherObjQRCode)
|
|
}
|
|
|
|
func (a *QRCodeAuther) VerifySecret(dummy, code string) (*auth2.AuthBindEx, error) {
|
|
userQRInfo, err := api.DingDingQRCodeAPI.GetUserInfoByCode(code)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
tmp_userID, err := api.DingDingAPI.GetByUnionID(userQRInfo.UnionID)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
userInfo, err := api.DingDingAPI.GetUser(tmp_userID.UserID)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
authBindEx, err := a.UnionFindAuthBind(AuthTypeQRCode, api.DingDingQRCodeAPI.GetAppID(), []string{AuthTypeStaff, AuthTypeQRCode}, userQRInfo.OpenID, userQRInfo.UnionID, userQRInfo)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
authBindEx.UserHint = &auth2.UserBasic{
|
|
UserID2: tmp_userID.UserID,
|
|
Mobile: utils.Interface2String(userInfo["mobile"]),
|
|
Email: utils.Interface2String(userInfo["email"]),
|
|
Name: utils.Interface2String(userInfo["name"]),
|
|
}
|
|
return authBindEx, err
|
|
}
|