129 lines
2.2 KiB
Go
129 lines
2.2 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 NavArticle(c *fiber.Ctx) error {
|
||
|
|
_, err := auth.GetAuthCtx(c).PermitOfficialClient()
|
||
|
|
if err != nil {
|
||
|
|
return err
|
||
|
|
}
|
||
|
|
|
||
|
|
list, err := s.Article.Nav()
|
||
|
|
if err != nil {
|
||
|
|
return err
|
||
|
|
}
|
||
|
|
|
||
|
|
return c.JSON(list)
|
||
|
|
}
|
||
|
|
|
||
|
|
func GetArticle(c *fiber.Ctx) error {
|
||
|
|
_, err := auth.GetAuthCtx(c).PermitOfficialClient()
|
||
|
|
if err != nil {
|
||
|
|
return err
|
||
|
|
}
|
||
|
|
|
||
|
|
var req core.IdReq
|
||
|
|
if err := g.Validator.ParseBody(c, &req); err != nil {
|
||
|
|
return err
|
||
|
|
}
|
||
|
|
|
||
|
|
article, err := s.Article.GetPublic(req.Id)
|
||
|
|
if err != nil {
|
||
|
|
return err
|
||
|
|
}
|
||
|
|
|
||
|
|
return c.JSON(article)
|
||
|
|
}
|
||
|
|
|
||
|
|
func PageArticleByAdmin(c *fiber.Ctx) error {
|
||
|
|
_, err := auth.GetAuthCtx(c).PermitAdmin(core.ScopeArticleRead)
|
||
|
|
if err != nil {
|
||
|
|
return err
|
||
|
|
}
|
||
|
|
|
||
|
|
var req s.PageArticleReq
|
||
|
|
if err := g.Validator.ParseBody(c, &req); err != nil {
|
||
|
|
return err
|
||
|
|
}
|
||
|
|
|
||
|
|
list, total, err := s.Article.Page(&req)
|
||
|
|
if err != nil {
|
||
|
|
return err
|
||
|
|
}
|
||
|
|
|
||
|
|
return c.JSON(core.PageResp{
|
||
|
|
Total: int(total),
|
||
|
|
Page: req.GetPage(),
|
||
|
|
Size: req.GetSize(),
|
||
|
|
List: list,
|
||
|
|
})
|
||
|
|
}
|
||
|
|
|
||
|
|
func GetArticleByAdmin(c *fiber.Ctx) error {
|
||
|
|
_, err := auth.GetAuthCtx(c).PermitAdmin(core.ScopeArticleRead)
|
||
|
|
if err != nil {
|
||
|
|
return err
|
||
|
|
}
|
||
|
|
|
||
|
|
var req core.IdReq
|
||
|
|
if err := g.Validator.ParseBody(c, &req); err != nil {
|
||
|
|
return err
|
||
|
|
}
|
||
|
|
|
||
|
|
article, err := s.Article.GetByAdmin(req.Id)
|
||
|
|
if err != nil {
|
||
|
|
return err
|
||
|
|
}
|
||
|
|
|
||
|
|
return c.JSON(article)
|
||
|
|
}
|
||
|
|
|
||
|
|
func CreateArticle(c *fiber.Ctx) error {
|
||
|
|
_, err := auth.GetAuthCtx(c).PermitAdmin(core.ScopeArticleWrite)
|
||
|
|
if err != nil {
|
||
|
|
return err
|
||
|
|
}
|
||
|
|
|
||
|
|
var req s.CreateArticleData
|
||
|
|
if err := g.Validator.ParseBody(c, &req); err != nil {
|
||
|
|
return err
|
||
|
|
}
|
||
|
|
|
||
|
|
return s.Article.Create(req)
|
||
|
|
}
|
||
|
|
|
||
|
|
func UpdateArticle(c *fiber.Ctx) error {
|
||
|
|
_, err := auth.GetAuthCtx(c).PermitAdmin(core.ScopeArticleWrite)
|
||
|
|
if err != nil {
|
||
|
|
return err
|
||
|
|
}
|
||
|
|
|
||
|
|
var req s.UpdateArticleData
|
||
|
|
if err := g.Validator.ParseBody(c, &req); err != nil {
|
||
|
|
return err
|
||
|
|
}
|
||
|
|
|
||
|
|
return s.Article.Update(req)
|
||
|
|
}
|
||
|
|
|
||
|
|
func DeleteArticle(c *fiber.Ctx) error {
|
||
|
|
_, err := auth.GetAuthCtx(c).PermitAdmin(core.ScopeArticleWrite)
|
||
|
|
if err != nil {
|
||
|
|
return err
|
||
|
|
}
|
||
|
|
|
||
|
|
var req core.IdReq
|
||
|
|
if err := g.Validator.ParseBody(c, &req); err != nil {
|
||
|
|
return err
|
||
|
|
}
|
||
|
|
|
||
|
|
return s.Article.Delete(req.Id)
|
||
|
|
}
|