github回调信息完成
This commit is contained in:
parent
cf37fac963
commit
ba553984e4
11
dao/user.go
11
dao/user.go
|
|
@ -238,6 +238,17 @@ func CreateThirdPartyUserInfo(userID, thirdPartyID int, thirdPartyPlatform, thir
|
|||
}
|
||||
return thirdPartyUserInfo.ID
|
||||
}
|
||||
func CreateThirdPartyUserInfoV2(thirdPartyUserInfo *ThirdPartyUserInfo) uint {
|
||||
db2 := DB
|
||||
if proto.Config.SERVER_SQL_LOG {
|
||||
db2 = DB.Debug()
|
||||
}
|
||||
res := db2.Create(thirdPartyUserInfo)
|
||||
if res.Error != nil {
|
||||
return 0
|
||||
}
|
||||
return thirdPartyUserInfo.ID
|
||||
}
|
||||
|
||||
// 删除
|
||||
func DeleteThirdPartyUserInfoByID(id int) int {
|
||||
|
|
|
|||
|
|
@ -215,29 +215,31 @@ func DoGithubCallBack(state *proto.ThirdPartyLoginState, code string) {
|
|||
log.Println("get github access token is empty")
|
||||
return
|
||||
}
|
||||
log.Println("get github access token:", resp.AccessToken)
|
||||
//获取用户信息
|
||||
userInfo, err := worker.GetGitHubUserInfo(resp.AccessToken)
|
||||
if err != nil {
|
||||
log.Println("get github user info error:", err)
|
||||
return
|
||||
}
|
||||
log.Println("get github user info:", userInfo)
|
||||
var thirdPartyLoginStatus proto.ThirdPartyLoginStatus
|
||||
thirdPartyLoginStatus.Type = state.Platform
|
||||
if state.Type == "login" {
|
||||
//根据第三方平台查找用户
|
||||
thirdPartyUserInfoList := dao.FindThirdPartyUserInfoByThirdPartyID(userInfo.UserID)
|
||||
if thirdPartyUserInfoList == nil || len(thirdPartyUserInfoList) == 0 {
|
||||
thirdPartyLoginStatus.Status = 2 //未绑定用户
|
||||
thirdPartyLoginStatus.Status = proto.ThirdPartyUserNotBinded //未绑定用户
|
||||
} else {
|
||||
thirdPartyUserInfo := thirdPartyUserInfoList[0]
|
||||
//获取用户信息
|
||||
user := GetUserByIDWithCache(thirdPartyUserInfo.UserID)
|
||||
if user.ID == 0 {
|
||||
thirdPartyLoginStatus.Status = 2
|
||||
thirdPartyLoginStatus.Status = proto.ThirdPartyUserNotBinded
|
||||
log.Println("get user by id error")
|
||||
} else {
|
||||
//成功
|
||||
thirdPartyLoginStatus.Status = 0
|
||||
thirdPartyLoginStatus.Status = proto.SuccessCode
|
||||
thirdPartyLoginStatus.UserInfo.UserID = int(user.ID)
|
||||
thirdPartyLoginStatus.UserInfo.Username = user.Name
|
||||
thirdPartyLoginStatus.UserInfo.Email = user.Email
|
||||
|
|
@ -260,11 +262,18 @@ func DoGithubCallBack(state *proto.ThirdPartyLoginState, code string) {
|
|||
//根据用户ID获取用户信息
|
||||
user := GetUserByIDWithCache(userID)
|
||||
if user.ID == 0 {
|
||||
thirdPartyLoginStatus.Status = 2 //未绑定用户
|
||||
thirdPartyLoginStatus.Status = 4 //添加用户信息错误
|
||||
log.Println("get user by id error")
|
||||
} else {
|
||||
//需要创建数据库记录
|
||||
data := dao.ThirdPartyUserInfo{UserID: userID, ThirdPartyID: userInfo.UserID, ThirdPartyPlatform: state.Platform, ThirdPartyUserAvatar: userInfo.AvatarUrl, ThirdPartyUserName: userInfo.LoginUserName, ThirdPartyUserUrl: userInfo.Url}
|
||||
uid := dao.CreateThirdPartyUserInfoV2(&data)
|
||||
if uid == 0 {
|
||||
log.Println("create third party user info error")
|
||||
thirdPartyLoginStatus.Status = proto.OperationFailed //操作错误
|
||||
} else {
|
||||
//成功
|
||||
thirdPartyLoginStatus.Status = 0
|
||||
thirdPartyLoginStatus.Status = proto.SuccessCode
|
||||
thirdPartyLoginStatus.UserInfo.UserID = int(user.ID)
|
||||
thirdPartyLoginStatus.UserInfo.Username = user.Name
|
||||
thirdPartyLoginStatus.UserInfo.Email = user.Email
|
||||
|
|
@ -272,11 +281,14 @@ func DoGithubCallBack(state *proto.ThirdPartyLoginState, code string) {
|
|||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
log.Println("DoGithubCallBack state type error:", state.Type)
|
||||
thirdPartyLoginStatus.Status = proto.ParameterError //参数错误
|
||||
}
|
||||
//更新redis中的第三方登录状态
|
||||
thirdPartyLoginStatusStr, _ := json.Marshal(thirdPartyLoginStatus)
|
||||
log.Println("do handle github callback success, third party login status:", string(thirdPartyLoginStatusStr))
|
||||
worker.SetRedisWithExpire(state.UUID, string(thirdPartyLoginStatusStr), time.Minute*10)
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue