Files
platform/web/handlers/admin.go

107 lines
1.8 KiB
Go

package handlers
import (
"platform/web/auth"
"platform/web/core"
g "platform/web/globals"
s "platform/web/services"
"github.com/gofiber/fiber/v2"
)
func PageAdminByAdmin(c *fiber.Ctx) error {
_, err := auth.GetAuthCtx(c).PermitAdmin(core.ScopeAdminRead)
if err != nil {
return err
}
var req PageAdminsReq
if err := g.Validator.ParseBody(c, &req); err != nil {
return err
}
list, total, err := s.Admin.Page(req.PageReq)
if err != nil {
return err
}
return c.JSON(core.PageResp{
List: list,
Total: int(total),
Page: req.GetPage(),
Size: req.GetSize(),
})
}
type PageAdminsReq struct {
core.PageReq
}
func AllAdminByAdmin(c *fiber.Ctx) error {
_, err := auth.GetAuthCtx(c).PermitAdmin(core.ScopeAdminRead)
if err != nil {
return err
}
list, err := s.Admin.All()
if err != nil {
return err
}
return c.JSON(list)
}
func CreateAdmin(c *fiber.Ctx) error {
_, err := auth.GetAuthCtx(c).PermitAdmin(core.ScopeAdminWrite)
if err != nil {
return err
}
var req s.CreateAdmin
if err := g.Validator.ParseBody(c, &req); err != nil {
return err
}
if err := s.Admin.Create(&req); err != nil {
return err
}
return c.JSON(nil)
}
func UpdateAdmin(c *fiber.Ctx) error {
_, err := auth.GetAuthCtx(c).PermitAdmin(core.ScopeAdminWrite)
if err != nil {
return err
}
var req s.UpdateAdmin
if err := g.Validator.ParseBody(c, &req); err != nil {
return err
}
if err := s.Admin.Update(&req); err != nil {
return err
}
return c.JSON(nil)
}
func RemoveAdmin(c *fiber.Ctx) error {
_, err := auth.GetAuthCtx(c).PermitAdmin(core.ScopeAdminWrite)
if err != nil {
return err
}
var req core.IdReq
if err := g.Validator.ParseBody(c, &req); err != nil {
return err
}
if err := s.Admin.Remove(req.Id); err != nil {
return err
}
return c.JSON(nil)
}