package middlewares

import (
	"github.com/gofiber/fiber/v2"
	"github.com/sujit-baniya/fiber-boilerplate/pkg/auth"
)

func LoadUserMiddleware(c *fiber.Ctx) error {
	user, err := auth.User(c)
	if err == nil && user != nil {
		// Convertimos el usuario a un map[string]interface{} e incluimos los campos necesarios
		userData := map[string]interface{}{
			"ID":            user.ID,
			"Name":          user.Name,
			"Email":         user.Email,
			"NombreUsuario": user.NombreUsuario,
			"IsAdmin":       user.IsAdmin,
			"Role": map[string]interface{}{
				"ID":   user.Role.ID,
				"Name": user.Role.Name,
				// Incluye otros campos relevantes del rol
			},
		}

		// Guarda el map en el contexto
		c.Locals("user", userData)
	}
	// Si no está autenticado, continuamos sin agregar nada
	return c.Next()
}
