package platformsettings import ( "github.com/gofiber/fiber/v2" "github.com/techxcar/backend/internal/auth" "github.com/techxcar/backend/pkg/database" ) func RegisterRoutes(app *fiber.App, db *database.DB, secret string) { app.Get("/api/v1/platform/settings", getPublicSettingsH(db)) admin := []fiber.Handler{ auth.RequireAuth(secret), auth.RequireRole("super_admin"), } app.Get("/api/v1/admin/settings", append(admin, getAdminSettingsH(db))...) app.Put("/api/v1/admin/settings", append(admin, updateAdminSettingsH(db))...) } func getPublicSettingsH(db *database.DB) fiber.Handler { return func(c *fiber.Ctx) error { s, err := GetSettings(c.Context(), db.Pool) if err != nil { return fiber.NewError(500, "erro ao obter definições globais") } return c.JSON(fiber.Map{"data": s, "error": nil}) } } func getAdminSettingsH(db *database.DB) fiber.Handler { return func(c *fiber.Ctx) error { s, err := GetSettings(c.Context(), db.Pool) if err != nil { return fiber.NewError(500, "erro ao obter definições globais") } return c.JSON(fiber.Map{"data": s, "error": nil}) } } func updateAdminSettingsH(db *database.DB) fiber.Handler { return func(c *fiber.Ctx) error { var body map[string]string if err := c.BodyParser(&body); err != nil { return fiber.NewError(400, "corpo do pedido inválido") } for k, v := range body { if !AllowedKeys[k] { return fiber.NewError(400, "chave inválida: "+k) } if err := SetSetting(c.Context(), db.Pool, k, v); err != nil { return fiber.NewError(500, "erro ao guardar definição: "+k) } } s, err := GetSettings(c.Context(), db.Pool) if err != nil { return fiber.NewError(500, "erro ao obter definições globais") } return c.JSON(fiber.Map{"data": s, "error": nil}) } }