Files
2024-07-19 17:04:42 +02:00

72 lines
1.7 KiB
Go

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)
}