You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
cloudreve/routers/controllers/oauth.go

81 lines
1.9 KiB

package controllers
import (
"github.com/cloudreve/Cloudreve/v4/pkg/serializer"
"github.com/cloudreve/Cloudreve/v4/service/oauth"
"github.com/gin-gonic/gin"
)
func GetAppRegistration(c *gin.Context) {
service := ParametersFromContext[*oauth.GetAppRegistrationService](c, oauth.GetAppRegistrationParamCtx{})
app, err := service.Get(c)
if err != nil {
c.JSON(200, serializer.Err(c, err))
c.Abort()
return
}
c.JSON(200, serializer.Response{Data: app})
}
func GrantAppConsent(c *gin.Context) {
service := ParametersFromContext[*oauth.GrantService](c, oauth.GrantParamCtx{})
res, err := service.Get(c)
if err != nil {
c.JSON(200, serializer.Err(c, err))
c.Abort()
return
}
c.JSON(200, serializer.Response{Data: res})
}
type ExchangeErrorResponse struct {
Error string `json:"error"`
ErrorDescription string `json:"error_description"`
ErrorCodes []int `json:"error_codes"`
CorrelationID string `json:"correlation_id"`
}
func ExchangeToken(c *gin.Context) {
service := ParametersFromContext[*oauth.ExchangeTokenService](c, oauth.ExchangeTokenParamCtx{})
res, err := service.Exchange(c)
if err != nil {
errResp := serializer.Err(c, err)
c.JSON(400, ExchangeErrorResponse{
Error: errResp.Msg,
ErrorDescription: errResp.Error,
ErrorCodes: []int{errResp.Code},
CorrelationID: errResp.CorrelationID,
})
c.Abort()
return
}
c.JSON(200, res)
}
func OpenIDUserInfo(c *gin.Context) {
service := ParametersFromContext[*oauth.UserInfoService](c, oauth.UserInfoParamCtx{})
res, err := service.GetUserInfo(c)
if err != nil {
c.JSON(200, serializer.Err(c, err))
c.Abort()
return
}
c.JSON(200, res)
}
func DeleteOAuthGrant(c *gin.Context) {
service := ParametersFromContext[*oauth.DeleteOAuthGrantService](c, oauth.DeleteOAuthGrantParamCtx{})
err := service.Delete(c)
if err != nil {
c.JSON(200, serializer.Err(c, err))
c.Abort()
return
}
c.JSON(200, serializer.Response{})
}