133 lines
3.2 KiB
Go
133 lines
3.2 KiB
Go
package v1
|
|
|
|
import (
|
|
"github.com/labstack/echo/v4"
|
|
|
|
v1 "github.com/chaitin/panda-wiki/api/auth/v1"
|
|
"github.com/chaitin/panda-wiki/consts"
|
|
"github.com/chaitin/panda-wiki/handler"
|
|
"github.com/chaitin/panda-wiki/log"
|
|
"github.com/chaitin/panda-wiki/usecase"
|
|
)
|
|
|
|
type AuthV1Handler struct {
|
|
*handler.BaseHandler
|
|
logger *log.Logger
|
|
authUseCase *usecase.AuthUsecase
|
|
}
|
|
|
|
func NewAuthV1Handler(
|
|
e *echo.Echo,
|
|
baseHandler *handler.BaseHandler,
|
|
logger *log.Logger,
|
|
authUseCase *usecase.AuthUsecase,
|
|
) *AuthV1Handler {
|
|
h := &AuthV1Handler{
|
|
BaseHandler: baseHandler,
|
|
logger: logger,
|
|
authUseCase: authUseCase,
|
|
}
|
|
|
|
AuthGroup := e.Group(
|
|
"/api/v1/auth",
|
|
h.V1Auth.Authorize,
|
|
h.V1Auth.ValidateKBUserPerm(consts.UserKBPermissionFullControl),
|
|
)
|
|
AuthGroup.GET("/get", h.OpenAuthGet)
|
|
AuthGroup.POST("/set", h.OpenAuthSet)
|
|
AuthGroup.DELETE("/delete", h.OpenAuthDelete)
|
|
|
|
return h
|
|
}
|
|
|
|
// OpenAuthGet 获取授权信息
|
|
//
|
|
// @Tags Auth
|
|
// @Summary 获取授权信息
|
|
// @Description 获取授权信息
|
|
// @ID v1-OpenAuthGet
|
|
// @Accept json
|
|
// @Produce json
|
|
// @Security bearerAuth
|
|
// @Param param query v1.AuthGetReq true "para"
|
|
// @Success 200 {object} domain.PWResponse{data=v1.AuthGetResp}
|
|
// @Router /api/v1/auth/get [get]
|
|
func (h *AuthV1Handler) OpenAuthGet(c echo.Context) error {
|
|
|
|
var req v1.AuthGetReq
|
|
if err := c.Bind(&req); err != nil {
|
|
return err
|
|
}
|
|
|
|
if err := c.Validate(req); err != nil {
|
|
return h.NewResponseWithError(c, "validate request params failed", err)
|
|
}
|
|
|
|
resp, err := h.authUseCase.GetAuth(c.Request().Context(), req.KBID, req.SourceType)
|
|
if err != nil {
|
|
return h.NewResponseWithError(c, "failed to get Auth", err)
|
|
}
|
|
|
|
return h.NewResponseWithData(c, resp)
|
|
}
|
|
|
|
// OpenAuthSet 获取授权信息
|
|
//
|
|
// @Tags Auth
|
|
// @Summary 设置授权信息
|
|
// @Description 设置授权信息
|
|
// @ID v1-OpenAuthSet
|
|
// @Accept json
|
|
// @Produce json
|
|
// @Security bearerAuth
|
|
// @Param param body v1.AuthSetReq true "para"
|
|
// @Success 200 {object} domain.Response
|
|
// @Router /api/v1/auth/set [post]
|
|
func (h *AuthV1Handler) OpenAuthSet(c echo.Context) error {
|
|
|
|
var req v1.AuthSetReq
|
|
if err := c.Bind(&req); err != nil {
|
|
return err
|
|
}
|
|
|
|
if err := c.Validate(req); err != nil {
|
|
return h.NewResponseWithError(c, "validate request params failed", err)
|
|
}
|
|
|
|
if err := h.authUseCase.SetAuth(c.Request().Context(), req); err != nil {
|
|
return h.NewResponseWithError(c, "failed to set Auth", err)
|
|
}
|
|
|
|
return h.NewResponseWithData(c, nil)
|
|
}
|
|
|
|
// OpenAuthDelete 删除授权信息
|
|
//
|
|
// @Tags Auth
|
|
// @Summary 删除授权信息
|
|
// @Description 删除授权信息
|
|
// @ID v1-OpenAuthDelete
|
|
// @Accept json
|
|
// @Produce json
|
|
// @Security bearerAuth
|
|
// @Param param query v1.AuthDeleteReq true "para"
|
|
// @Success 200 {object} domain.Response
|
|
// @Router /api/v1/auth/delete [delete]
|
|
func (h *AuthV1Handler) OpenAuthDelete(c echo.Context) error {
|
|
|
|
var req v1.AuthDeleteReq
|
|
if err := c.Bind(&req); err != nil {
|
|
return err
|
|
}
|
|
|
|
if err := c.Validate(req); err != nil {
|
|
return h.NewResponseWithError(c, "validate request params failed", err)
|
|
}
|
|
|
|
if err := h.authUseCase.DeleteAuth(c.Request().Context(), req); err != nil {
|
|
return h.NewResponseWithError(c, "failed to delete Auth", err)
|
|
}
|
|
|
|
return h.NewResponseWithData(c, nil)
|
|
}
|