37 lines
946 B
Go
37 lines
946 B
Go
package middlewares
|
|
|
|
import (
|
|
"github.com/gofiber/fiber/v2"
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
func OnlyAdmin(db *gorm.DB, fn fiber.Handler) fiber.Handler {
|
|
return func(c *fiber.Ctx) error {
|
|
role, ok := c.Locals("userRole").(string)
|
|
if !ok || role != "Admin" {
|
|
return c.Status(fiber.StatusForbidden).JSON(fiber.Map{"error": "Access denied"})
|
|
}
|
|
return fn(c)
|
|
}
|
|
}
|
|
|
|
func OnlyModerator(db *gorm.DB, fn fiber.Handler) fiber.Handler {
|
|
return func(c *fiber.Ctx) error {
|
|
role, ok := c.Locals("userRole").(string)
|
|
if !ok || (role != "Moderator" && role != "Admin") {
|
|
return c.Status(fiber.StatusForbidden).JSON(fiber.Map{"error": "Access denied"})
|
|
}
|
|
return fn(c)
|
|
}
|
|
}
|
|
|
|
func OnlyUser(db *gorm.DB, fn fiber.Handler) fiber.Handler {
|
|
return func(c *fiber.Ctx) error {
|
|
role, ok := c.Locals("userRole").(string)
|
|
if !ok || role != "User" {
|
|
return c.Status(fiber.StatusForbidden).JSON(fiber.Map{"error": "Access denied"})
|
|
}
|
|
return fn(c)
|
|
}
|
|
}
|