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