72 lines
1.7 KiB
Go
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)
|
|
|
|
}
|