45 lines
1.5 KiB
Go
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()
|
|
}
|