weiro/handlers/middleware/site.go
Leon Mika e77cac2fd5 Started working on the frontend
- Added the new post frontend
- Hooked up publishing of posts to the site publisher
- Added an site exporter as a publishing target
2026-02-21 10:22:10 +11:00

42 lines
797 B
Go

package middleware
import (
"strconv"
"github.com/gofiber/fiber/v3"
"lmika.dev/lmika/weiro/models"
"lmika.dev/lmika/weiro/providers/db"
)
func RequiresSite(db *db.Provider) func(c fiber.Ctx) error {
return func(c fiber.Ctx) error {
siteIDStr := c.Params("siteID")
if siteIDStr == "" {
return fiber.ErrBadRequest
}
siteID, err := strconv.ParseInt(siteIDStr, 10, 64)
if err != nil {
return fiber.ErrBadRequest
}
user, ok := models.GetUser(c.Context())
if !ok {
return fiber.ErrUnauthorized
}
site, err := db.SelectSiteByID(c.Context(), siteID)
if err != nil {
return fiber.ErrNotFound
}
if site.OwnerID != user.ID {
return fiber.ErrForbidden
}
c.Locals("site", site)
c.SetContext(models.WithSite(c.Context(), site))
return c.Next()
}
}