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
|
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 {
|
func DeleteThirdPartyUserInfoByID(id int) int {
|
||||||
|
|
|
||||||
|
|
@ -215,29 +215,31 @@ func DoGithubCallBack(state *proto.ThirdPartyLoginState, code string) {
|
||||||
log.Println("get github access token is empty")
|
log.Println("get github access token is empty")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
log.Println("get github access token:", resp.AccessToken)
|
||||||
//获取用户信息
|
//获取用户信息
|
||||||
userInfo, err := worker.GetGitHubUserInfo(resp.AccessToken)
|
userInfo, err := worker.GetGitHubUserInfo(resp.AccessToken)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Println("get github user info error:", err)
|
log.Println("get github user info error:", err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
log.Println("get github user info:", userInfo)
|
||||||
var thirdPartyLoginStatus proto.ThirdPartyLoginStatus
|
var thirdPartyLoginStatus proto.ThirdPartyLoginStatus
|
||||||
thirdPartyLoginStatus.Type = state.Platform
|
thirdPartyLoginStatus.Type = state.Platform
|
||||||
if state.Type == "login" {
|
if state.Type == "login" {
|
||||||
//根据第三方平台查找用户
|
//根据第三方平台查找用户
|
||||||
thirdPartyUserInfoList := dao.FindThirdPartyUserInfoByThirdPartyID(userInfo.UserID)
|
thirdPartyUserInfoList := dao.FindThirdPartyUserInfoByThirdPartyID(userInfo.UserID)
|
||||||
if thirdPartyUserInfoList == nil || len(thirdPartyUserInfoList) == 0 {
|
if thirdPartyUserInfoList == nil || len(thirdPartyUserInfoList) == 0 {
|
||||||
thirdPartyLoginStatus.Status = 2 //未绑定用户
|
thirdPartyLoginStatus.Status = proto.ThirdPartyUserNotBinded //未绑定用户
|
||||||
} else {
|
} else {
|
||||||
thirdPartyUserInfo := thirdPartyUserInfoList[0]
|
thirdPartyUserInfo := thirdPartyUserInfoList[0]
|
||||||
//获取用户信息
|
//获取用户信息
|
||||||
user := GetUserByIDWithCache(thirdPartyUserInfo.UserID)
|
user := GetUserByIDWithCache(thirdPartyUserInfo.UserID)
|
||||||
if user.ID == 0 {
|
if user.ID == 0 {
|
||||||
thirdPartyLoginStatus.Status = 2
|
thirdPartyLoginStatus.Status = proto.ThirdPartyUserNotBinded
|
||||||
log.Println("get user by id error")
|
log.Println("get user by id error")
|
||||||
} else {
|
} else {
|
||||||
//成功
|
//成功
|
||||||
thirdPartyLoginStatus.Status = 0
|
thirdPartyLoginStatus.Status = proto.SuccessCode
|
||||||
thirdPartyLoginStatus.UserInfo.UserID = int(user.ID)
|
thirdPartyLoginStatus.UserInfo.UserID = int(user.ID)
|
||||||
thirdPartyLoginStatus.UserInfo.Username = user.Name
|
thirdPartyLoginStatus.UserInfo.Username = user.Name
|
||||||
thirdPartyLoginStatus.UserInfo.Email = user.Email
|
thirdPartyLoginStatus.UserInfo.Email = user.Email
|
||||||
|
|
@ -260,23 +262,33 @@ func DoGithubCallBack(state *proto.ThirdPartyLoginState, code string) {
|
||||||
//根据用户ID获取用户信息
|
//根据用户ID获取用户信息
|
||||||
user := GetUserByIDWithCache(userID)
|
user := GetUserByIDWithCache(userID)
|
||||||
if user.ID == 0 {
|
if user.ID == 0 {
|
||||||
thirdPartyLoginStatus.Status = 2 //未绑定用户
|
thirdPartyLoginStatus.Status = 4 //添加用户信息错误
|
||||||
log.Println("get user by id error")
|
log.Println("get user by id error")
|
||||||
} else {
|
} else {
|
||||||
//成功
|
//需要创建数据库记录
|
||||||
thirdPartyLoginStatus.Status = 0
|
data := dao.ThirdPartyUserInfo{UserID: userID, ThirdPartyID: userInfo.UserID, ThirdPartyPlatform: state.Platform, ThirdPartyUserAvatar: userInfo.AvatarUrl, ThirdPartyUserName: userInfo.LoginUserName, ThirdPartyUserUrl: userInfo.Url}
|
||||||
thirdPartyLoginStatus.UserInfo.UserID = int(user.ID)
|
uid := dao.CreateThirdPartyUserInfoV2(&data)
|
||||||
thirdPartyLoginStatus.UserInfo.Username = user.Name
|
if uid == 0 {
|
||||||
thirdPartyLoginStatus.UserInfo.Email = user.Email
|
log.Println("create third party user info error")
|
||||||
thirdPartyLoginStatus.UserInfo.Token, _ = GenerateJWTToken(int(user.ID), user.Name)
|
thirdPartyLoginStatus.Status = proto.OperationFailed //操作错误
|
||||||
|
} else {
|
||||||
|
//成功
|
||||||
|
thirdPartyLoginStatus.Status = proto.SuccessCode
|
||||||
|
thirdPartyLoginStatus.UserInfo.UserID = int(user.ID)
|
||||||
|
thirdPartyLoginStatus.UserInfo.Username = user.Name
|
||||||
|
thirdPartyLoginStatus.UserInfo.Email = user.Email
|
||||||
|
thirdPartyLoginStatus.UserInfo.Token, _ = GenerateJWTToken(int(user.ID), user.Name)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
log.Println("DoGithubCallBack state type error:", state.Type)
|
log.Println("DoGithubCallBack state type error:", state.Type)
|
||||||
|
thirdPartyLoginStatus.Status = proto.ParameterError //参数错误
|
||||||
}
|
}
|
||||||
//更新redis中的第三方登录状态
|
//更新redis中的第三方登录状态
|
||||||
thirdPartyLoginStatusStr, _ := json.Marshal(thirdPartyLoginStatus)
|
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)
|
worker.SetRedisWithExpire(state.UUID, string(thirdPartyLoginStatusStr), time.Minute*10)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue