Added sub commands for doing admin stuff

This commit is contained in:
Leon Mika 2026-02-28 10:39:08 +11:00
parent 329de2f953
commit 4a6b79db17
18 changed files with 531 additions and 185 deletions

View file

@ -3,12 +3,14 @@ package middleware
import (
"strconv"
"emperror.dev/errors"
"github.com/gofiber/fiber/v3"
"lmika.dev/lmika/weiro/models"
"lmika.dev/lmika/weiro/providers/db"
"lmika.dev/lmika/weiro/services/sites"
)
func RequiresSite(db *db.Provider) func(c fiber.Ctx) error {
func RequiresSite(sites *sites.Service) func(c fiber.Ctx) error {
return func(c fiber.Ctx) error {
siteIDStr := c.Params("siteID")
if siteIDStr == "" {
@ -20,18 +22,15 @@ func RequiresSite(db *db.Provider) func(c fiber.Ctx) error {
return fiber.ErrBadRequest
}
user, ok := models.GetUser(c.Context())
if !ok {
return fiber.ErrUnauthorized
}
site, err := db.SelectSiteByID(c.Context(), siteID)
site, err := sites.GetSiteByID(c.Context(), siteID)
if err != nil {
return fiber.ErrNotFound
}
if site.OwnerID != user.ID {
return fiber.ErrForbidden
if errors.Is(err, models.UserRequiredError) {
return fiber.ErrForbidden
} else if errors.Is(err, models.PermissionError) || db.ErrorIsNoRows(err) {
return fiber.ErrNotFound
} else if errors.Is(err, models.NotFoundError) || db.ErrorIsNoRows(err) {
return err
}
}
c.Locals("site", site)