gofiber-study/controller/auth/auth.go
2022-11-13 18:14:50 +08:00

87 lines
2.3 KiB
Go

package auth
import (
"github.com/gofiber/fiber/v2"
"gofiber.study.skcks.cn/common/errorx"
"gofiber.study.skcks.cn/common/response"
"gofiber.study.skcks.cn/controller/types"
"gofiber.study.skcks.cn/global"
auth2 "gofiber.study.skcks.cn/model/auth"
"gofiber.study.skcks.cn/services/auth"
)
type Controller struct {
*types.Controller
}
func (c *Controller) GetRouter() fiber.Router {
return c.Router
}
func NewController(app *fiber.App) *Controller {
return &Controller{
Controller: types.NewController(app, "/auth"),
}
}
// Login 用户登录
//
// @Summary 用户登录
// @Description 用户登录
// @Tags Auth
// @Accept json
// @Produce json
// @Param vo body auth.LoginDTO true "用户登录"
// @Success 200 {object} response.Response{data=auth.LoginVO}
// @Failure default {object} errorx.CodeErrorResponse
// @Router /auth/login [post]
func (c *Controller) Login() {
c.Router.Post("login", func(ctx *fiber.Ctx) error {
login := &auth2.LoginDTO{}
err := ctx.BodyParser(login)
if err = errorx.ParseError(err); err != nil {
return ctx.JSON(err)
}
result, err := auth.Services.Login(login)
if err = errorx.ParseError(err); err != nil {
return ctx.JSON(err)
}
return ctx.JSON(response.NewResponse(result))
})
}
// RefreshToken 刷新令牌
//
// @Summary 刷新令牌
// @Description 刷新令牌
// @Tags Auth
// @Accept json
// @Produce json
// @Param vo body auth.RefreshToken true "刷新令牌"
// @Success 200 {object} response.Response{data=auth.LoginVO}
// @Failure default {object} errorx.CodeErrorResponse
// @Router /auth/refreshToken [post]
func (c *Controller) RefreshToken() {
c.Router.Post("refreshToken", func(ctx *fiber.Ctx) error {
refresh := &auth2.RefreshToken{}
err := ctx.BodyParser(refresh)
if err = errorx.ParseErrorWithCode(fiber.StatusInternalServerError, err); err != nil {
return ctx.JSON(err)
}
err = global.ValidateStruct(refresh)
if err = errorx.ParseErrorWithCode(fiber.StatusInternalServerError, err); err != nil {
return ctx.JSON(err)
}
result, err := auth.Services.RefreshToken(refresh.RefreshToken)
if err = errorx.ParseErrorWithCode(fiber.StatusUnauthorized, err); err != nil {
return ctx.JSON(err)
}
return ctx.JSON(response.NewResponse(result))
})
}