package middlewares import ( "log" "github.com/gofiber/fiber/v2" "github.com/sujit-baniya/fiber-boilerplate/pkg/auth" ) // SoloAdmin restringe una ruta a usuarios administradores. // // Hasta ahora todo /app solo verificaba que hubiera sesión iniciada: cualquier // usuario del panel, sin importar su rol, podía ejecutar SQL arbitrario en el // Query Runner, crear usuarios, cambiar la contraseña de otros o reasignar // permisos. MenuMiddleware no autoriza nada, solo arma el menú lateral. // // Se aplica únicamente a las operaciones sensibles (gestión de usuarios, roles, // módulos, Query Runner y seeds) en vez de a todo el panel, para no dejar sin // acceso a nadie que hoy esté usando las pantallas operativas normales. func SoloAdmin(c *fiber.Ctx) error { user, err := auth.User(c) if err != nil || user == nil { return c.Status(fiber.StatusUnauthorized).JSON(fiber.Map{ "error": true, "message": "Usuario no autenticado", }) } if !user.IsAdmin { log.Printf("[AUTORIZACION] Usuario %d (%s) intentó acceder a %s sin ser administrador", user.ID, user.Email, c.Path()) return c.Status(fiber.StatusForbidden).JSON(fiber.Map{ "error": true, "message": "Necesitas permisos de administrador para esta acción", }) } return c.Next() }