mirror of
https://github.com/halejohn/Cloudreve.git
synced 2026-01-26 09:34:57 +08:00
feat(policy): add Google Drive Oauth client
This commit is contained in:
@@ -192,14 +192,16 @@ func AdminAddSCF(c *gin.Context) {
|
||||
}
|
||||
}
|
||||
|
||||
// AdminOneDriveOAuth 获取 OneDrive OAuth URL
|
||||
func AdminOneDriveOAuth(c *gin.Context) {
|
||||
var service admin.PolicyService
|
||||
if err := c.ShouldBindUri(&service); err == nil {
|
||||
res := service.GetOAuth(c)
|
||||
c.JSON(200, res)
|
||||
} else {
|
||||
c.JSON(200, ErrorResponse(err))
|
||||
// AdminOAuthURL 获取 OneDrive OAuth URL
|
||||
func AdminOAuthURL(policyType string) gin.HandlerFunc {
|
||||
return func(c *gin.Context) {
|
||||
var service admin.PolicyService
|
||||
if err := c.ShouldBindUri(&service); err == nil {
|
||||
res := service.GetOAuth(c, policyType)
|
||||
c.JSON(200, res)
|
||||
} else {
|
||||
c.JSON(200, ErrorResponse(err))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -83,9 +83,27 @@ func OneDriveCallback(c *gin.Context) {
|
||||
|
||||
// OneDriveOAuth OneDrive 授权回调
|
||||
func OneDriveOAuth(c *gin.Context) {
|
||||
var callbackBody callback.OneDriveOauthService
|
||||
var callbackBody callback.OauthService
|
||||
if err := c.ShouldBindQuery(&callbackBody); err == nil {
|
||||
res := callbackBody.Auth(c)
|
||||
res := callbackBody.OdAuth(c)
|
||||
redirect := model.GetSiteURL()
|
||||
redirect.Path = path.Join(redirect.Path, "/admin/policy")
|
||||
queries := redirect.Query()
|
||||
queries.Add("code", strconv.Itoa(res.Code))
|
||||
queries.Add("msg", res.Msg)
|
||||
queries.Add("err", res.Error)
|
||||
redirect.RawQuery = queries.Encode()
|
||||
c.Redirect(303, redirect.String())
|
||||
} else {
|
||||
c.JSON(200, ErrorResponse(err))
|
||||
}
|
||||
}
|
||||
|
||||
// GoogleDriveOAuth Google Drive 授权回调
|
||||
func GoogleDriveOAuth(c *gin.Context) {
|
||||
var callbackBody callback.OauthService
|
||||
if err := c.ShouldBindQuery(&callbackBody); err == nil {
|
||||
res := callbackBody.GDriveAuth(c)
|
||||
redirect := model.GetSiteURL()
|
||||
redirect.Path = path.Join(redirect.Path, "/admin/policy")
|
||||
queries := redirect.Query()
|
||||
|
||||
@@ -223,9 +223,9 @@ func SlaveNotificationPush(c *gin.Context) {
|
||||
}
|
||||
}
|
||||
|
||||
// SlaveGetOneDriveCredential 从机获取主机的OneDrive存储策略凭证
|
||||
func SlaveGetOneDriveCredential(c *gin.Context) {
|
||||
var service node.OneDriveCredentialService
|
||||
// SlaveGetOauthCredential 从机获取主机的OneDrive存储策略凭证
|
||||
func SlaveGetOauthCredential(c *gin.Context) {
|
||||
var service node.OauthCredentialService
|
||||
if err := c.ShouldBindUri(&service); err == nil {
|
||||
res := service.Get(c)
|
||||
c.JSON(200, res)
|
||||
|
||||
@@ -260,8 +260,8 @@ func InitMasterRouter() *gin.Engine {
|
||||
// 删除上传会话
|
||||
upload.DELETE(":sessionId", controllers.SlaveDeleteUploadSession)
|
||||
}
|
||||
// OneDrive 存储策略凭证
|
||||
slave.GET("credential/onedrive/:id", controllers.SlaveGetOneDriveCredential)
|
||||
// Oauth 存储策略凭证
|
||||
slave.GET("credential/:id", controllers.SlaveGetOauthCredential)
|
||||
}
|
||||
|
||||
// 回调接口
|
||||
@@ -310,6 +310,15 @@ func InitMasterRouter() *gin.Engine {
|
||||
controllers.OneDriveOAuth,
|
||||
)
|
||||
}
|
||||
// Google Drive related
|
||||
gdrive := callback.Group("googledrive")
|
||||
{
|
||||
// OAuth 完成
|
||||
gdrive.GET(
|
||||
"auth",
|
||||
controllers.GoogleDriveOAuth,
|
||||
)
|
||||
}
|
||||
// 腾讯云COS策略上传回调
|
||||
callback.GET(
|
||||
"cos/:sessionID",
|
||||
@@ -454,7 +463,14 @@ func InitMasterRouter() *gin.Engine {
|
||||
// 创建COS回调函数
|
||||
policy.POST("scf", controllers.AdminAddSCF)
|
||||
// 获取 OneDrive OAuth URL
|
||||
policy.GET(":id/oauth", controllers.AdminOneDriveOAuth)
|
||||
oauth := policy.Group(":id/oauth")
|
||||
{
|
||||
// 获取 OneDrive OAuth URL
|
||||
oauth.GET("onedrive", controllers.AdminOAuthURL("onedrive"))
|
||||
// 获取 Google Drive OAuth URL
|
||||
oauth.GET("googledrive", controllers.AdminOAuthURL("googledrive"))
|
||||
}
|
||||
|
||||
// 获取 存储策略
|
||||
policy.GET(":id", controllers.AdminGetPolicy)
|
||||
// 删除 存储策略
|
||||
|
||||
Reference in New Issue
Block a user