Files
mangezmieux/mangezmieux-backend/internal/users/middleware.go
2024-07-19 17:04:42 +02:00

45 lines
1.5 KiB
Go

package users
import (
"context"
"github.com/gin-gonic/gin"
model2 "mangezmieux-backend/internal/acl/model"
"mangezmieux-backend/internal/acl/service"
"mangezmieux-backend/internal/jwt"
"mangezmieux-backend/internal/middleware"
"mangezmieux-backend/internal/users/model"
service2 "mangezmieux-backend/internal/users/service"
)
var AuthMiddleware = newMiddleware()
type internalAuthMiddleware struct {
Service *service2.Service
RoleService service.Service
UserService service.Service
}
func newMiddleware() *internalAuthMiddleware {
return &internalAuthMiddleware{}
}
func (m *internalAuthMiddleware) GinMiddleware(jwtService *jwt.Service) gin.HandlerFunc {
return middleware.GetAuthenticationMiddleware(m, jwtService)
}
// delegate useful for deferred binding (when the middleware is installed, GinMiddleware() is called, the service m.Service is not yet created :-( )
// see cmd/app.go for deferred binding at the end.
func (m *internalAuthMiddleware) Introspect(token string) (*model.User, error) {
return m.Service.Introspect(token)
}
// delegate useful for deferred binding (when the middleware is installed, GinMiddleware() is called, the service m.Service is not yet created :-( )
// see cmd/app.go for deferred binding at the end.
func (m *internalAuthMiddleware) GetRole(ctx context.Context, user *model.User) (*model2.UserRight, error) {
return m.RoleService.GetRoleForCurrentUser(user)
}
func (m *internalAuthMiddleware) GetAllRole(ctx context.Context) ([]*model2.Role, error) {
return m.RoleService.GetAllRole()
}