qq登录与github登录方式
This commit is contained in:
parent
8fee587a94
commit
06afc13d67
|
|
@ -57,6 +57,8 @@ func SetUpToolGroup(router *gin.Engine) {
|
||||||
toolGroup.POST("/monitor", SetDeviceStatusV2)
|
toolGroup.POST("/monitor", SetDeviceStatusV2)
|
||||||
toolGroup.POST("/qq_callback", handleQQCallback)
|
toolGroup.POST("/qq_callback", handleQQCallback)
|
||||||
toolGroup.POST("/qq_auth", GetAuthCode)
|
toolGroup.POST("/qq_auth", GetAuthCode)
|
||||||
|
toolGroup.POST("/github_auth", ToGithubAuthPage)
|
||||||
|
toolGroup.POST("/github_callback", handleGithubCallback)
|
||||||
//发送邮件
|
//发送邮件
|
||||||
toolGroup.POST("/send_mail", SendMailTool)
|
toolGroup.POST("/send_mail", SendMailTool)
|
||||||
toolGroup.POST("/dashboard", DashBoardStatistics)
|
toolGroup.POST("/dashboard", DashBoardStatistics)
|
||||||
|
|
@ -631,3 +633,23 @@ func GetSparkCreatePPTStatus(c *gin.Context) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func handleGithubCallback(c *gin.Context) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
func ToGithubAuthPage(c *gin.Context) {
|
||||||
|
uuid := c.Query("uuid")
|
||||||
|
if uuid == "" {
|
||||||
|
c.JSON(http.StatusOK, gin.H{"code": proto.ParameterError, "message": "uuid is empty"})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
params := url.Values{}
|
||||||
|
params.Add("client_id", proto.Config.GITHUB_CLIENT_ID)
|
||||||
|
params.Add("login", uuid)
|
||||||
|
params.Add("state", "saw_"+uuid)
|
||||||
|
baseUri := "https://github.com/login/oauth/authorize"
|
||||||
|
redirectUrl := fmt.Sprintf("%s?%s", baseUri, params.Encode())
|
||||||
|
redirectUrl = fmt.Sprintf("%s&redirect_uri=%s", redirectUrl, "https://sv.ljsea.top")
|
||||||
|
c.Redirect(http.StatusFound, redirectUrl)
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -29,6 +29,8 @@ func SetUpUserGroup(router *gin.Engine) {
|
||||||
userGroup.POST("/sync", GetSyncUserInfo)
|
userGroup.POST("/sync", GetSyncUserInfo)
|
||||||
userGroup.POST("/delete", DeleteUser)
|
userGroup.POST("/delete", DeleteUser)
|
||||||
userGroup.POST("/reset", ResetPassword)
|
userGroup.POST("/reset", ResetPassword)
|
||||||
|
userGroup.GET("/oAuth", LoginOAuth) //第三方登录
|
||||||
|
userGroup.GET("/oAuth_uuid", GetOAuthUUID)
|
||||||
userGroup.POST("/statistic", GetUserStatistic)
|
userGroup.POST("/statistic", GetUserStatistic)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -531,3 +533,56 @@ func GetSyncUserInfo(c *gin.Context) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func LoginOAuth(c *gin.Context) {
|
||||||
|
uuid := c.Query("uuid")
|
||||||
|
var resp proto.GenerateResp
|
||||||
|
if uuid == "" {
|
||||||
|
resp.Code = proto.ParameterError
|
||||||
|
resp.Message = "uuid is empty"
|
||||||
|
c.JSON(200, resp)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
//获取用户信息
|
||||||
|
loginStatus := worker.GetRedis(uuid)
|
||||||
|
if loginStatus == "" {
|
||||||
|
resp.Code = proto.ThirdPartyLoginUUIDInvalid
|
||||||
|
resp.Message = "已失效"
|
||||||
|
c.JSON(200, resp)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
var status proto.ThirdPartyLoginStatus
|
||||||
|
if err := json.Unmarshal([]byte(loginStatus), &status); err != nil {
|
||||||
|
resp.Code = proto.OperationFailed
|
||||||
|
resp.Message = "error"
|
||||||
|
c.JSON(200, resp)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
resp.Code = proto.SuccessCode
|
||||||
|
resp.Message = "success"
|
||||||
|
resp.Data = status
|
||||||
|
c.JSON(200, resp)
|
||||||
|
}
|
||||||
|
|
||||||
|
func GetOAuthUUID(c *gin.Context) {
|
||||||
|
var resp proto.GenerateResp
|
||||||
|
loginType := c.Query("type")
|
||||||
|
if loginType == "" {
|
||||||
|
resp.Code = proto.ParameterError
|
||||||
|
resp.Message = "type is empty"
|
||||||
|
c.JSON(200, resp)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
uuid := uuid.NewString()
|
||||||
|
//设置状态
|
||||||
|
var status proto.ThirdPartyLoginStatus
|
||||||
|
status.Status = 1
|
||||||
|
status.Type = loginType
|
||||||
|
//设置过期时间
|
||||||
|
statusStr, _ := json.Marshal(status)
|
||||||
|
worker.SetRedisWithExpire(uuid, string(statusStr), time.Minute*10) //10min过期
|
||||||
|
resp.Code = proto.SuccessCode
|
||||||
|
resp.Message = "success"
|
||||||
|
resp.Data = uuid
|
||||||
|
c.JSON(200, resp)
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -85,6 +85,7 @@ type ConfigStruct struct {
|
||||||
SERVER_NAME string `json:"server_name"` // 服务器名称,用于区分不同服务器
|
SERVER_NAME string `json:"server_name"` // 服务器名称,用于区分不同服务器
|
||||||
SPARK_PPT_USAGE bool `json:"spark_ppt_usage"` // 是否使用spark ppt功能
|
SPARK_PPT_USAGE bool `json:"spark_ppt_usage"` // 是否使用spark ppt功能
|
||||||
KBASE_SERVER []KBaseServer `json:"kbase_server"` // 知识库服务器列表
|
KBASE_SERVER []KBaseServer `json:"kbase_server"` // 知识库服务器列表
|
||||||
|
GITHUB_CLIENT_ID string `json:"github_client_id"` // github client id
|
||||||
}
|
}
|
||||||
|
|
||||||
type KBaseServer struct {
|
type KBaseServer struct {
|
||||||
|
|
|
||||||
|
|
@ -94,6 +94,10 @@ const (
|
||||||
//下面是ws消息错误码
|
//下面是ws消息错误码
|
||||||
WSKBaseServerError = 150 // ws知识库服务器错误
|
WSKBaseServerError = 150 // ws知识库服务器错误
|
||||||
WSKBaseSessionError = 151 // ws知识库会话错误
|
WSKBaseSessionError = 151 // ws知识库会话错误
|
||||||
|
|
||||||
|
//第三方登录
|
||||||
|
ThirdPartyLoginUUIDInvalid = 161 //第三方登录uuid失效
|
||||||
|
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
|
|
||||||
|
|
@ -54,3 +54,17 @@ type MessageConvertFileReq struct {
|
||||||
FileType string `json:"file_type" form:"file_type"` // 需要转成的文件类型
|
FileType string `json:"file_type" form:"file_type"` // 需要转成的文件类型
|
||||||
FileName string `json:"file_name" form:"file_name"` // 文件名称
|
FileName string `json:"file_name" form:"file_name"` // 文件名称
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 第三方登录
|
||||||
|
type ThirdPartyLoginStatus struct {
|
||||||
|
Status int `json:"status"` // 登录状态,0:登录成功,1:登录失败
|
||||||
|
Type string `json:"type"` // 登录类型,qq,github
|
||||||
|
UserInfo UserLoginInfo `json:"user_info"` // 用户信息
|
||||||
|
}
|
||||||
|
|
||||||
|
type UserLoginInfo struct {
|
||||||
|
UserID int `json:"id"` // 用户ID
|
||||||
|
Username string `json:"username"` // 用户名
|
||||||
|
Email string `json:"email"` // 用户邮箱
|
||||||
|
Token string `json:"token"` // 用户token
|
||||||
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue