I am batman
This commit is contained in:
36
api-gateway/internal/middlewares/roles.go
Normal file
36
api-gateway/internal/middlewares/roles.go
Normal file
@@ -0,0 +1,36 @@
|
||||
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)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user