package acl import ( "errors" "github.com/go-playground/validator/v10" "mangezmieux-backend/internal/acl/service" "mangezmieux-backend/internal/logger" "mangezmieux-backend/internal/middleware" "mangezmieux-backend/internal/responses" "mangezmieux-backend/internal/users/model" "github.com/gin-gonic/gin" "net/http" ) type Handler struct { service service.Service Validator *validator.Validate } const ( rolePathParam = "roleName" roleIdPathParam = "roleId" ) func NewHandler(service service.Service, validator *validator.Validate) *Handler { return &Handler{ service: service, Validator: validator, } } func (h Handler) GetAllRole(context *gin.Context) { roles, err := h.service.GetAllRole() if err != nil { logger.GetLogger().Error(err) var apiError *responses.APIError if errors.As(err, &apiError) { responses.JSONError(context.Writer, *apiError) return } responses.JSONErrorWithMessage(context.Writer, responses.ErrInternalServer, err.Error()) return } responses.JSON(context.Writer, http.StatusOK, roles) } func (h Handler) GetMyRoles(context *gin.Context) { user, exists := context.Get(middleware.CtxUser) if !exists { responses.JSONErrorWithMessage(context.Writer, responses.ErrInternalServer, "User not found in context") return } userModel := user.(*model.User) userRight, err := h.service.GetRoleForCurrentUser(userModel) if err != nil { logger.GetLogger().Error(err) var apiError *responses.APIError if errors.As(err, &apiError) { responses.JSONError(context.Writer, *apiError) return } responses.JSONErrorWithMessage(context.Writer, responses.ErrInternalServer, err.Error()) return } responses.JSON(context.Writer, http.StatusOK, userRight) }