feat(admin): KeycloakAdminHttpClient + AdminUserService amélioré
- KeycloakAdminHttpClient (nouveau) : client HTTP natif (java.net.http.HttpClient) pour contourner les problèmes de désérialisation avec RESTEasy sur certains endpoints Keycloak 26+ (bruteForceStrategy, cpuInfo inconnus). Utilise ObjectMapper avec FAIL_ON_UNKNOWN_PROPERTIES=false. - AdminUserService : utilisation correcte de AdminUserServiceClient + AdminRoleServiceClient avec AdminServiceTokenHeadersFactory pour l'auth. - ModuleAccessFilter : améliorations de la logique @RequiresModule.
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
package dev.lions.unionflow.server.security;
|
||||
|
||||
import dev.lions.unionflow.server.service.OrganisationModuleService;
|
||||
import io.quarkus.security.identity.SecurityIdentity;
|
||||
import jakarta.annotation.Priority;
|
||||
import jakarta.inject.Inject;
|
||||
import jakarta.ws.rs.Priorities;
|
||||
@@ -44,6 +45,9 @@ public class ModuleAccessFilter implements ContainerRequestFilter {
|
||||
@Inject
|
||||
OrganisationModuleService organisationModuleService;
|
||||
|
||||
@Inject
|
||||
SecurityIdentity identity;
|
||||
|
||||
@Context
|
||||
ResourceInfo resourceInfo;
|
||||
|
||||
@@ -61,6 +65,11 @@ public class ModuleAccessFilter implements ContainerRequestFilter {
|
||||
return;
|
||||
}
|
||||
|
||||
// SUPER_ADMIN a accès global à tous les modules sans contexte d'organisation
|
||||
if (identity.hasRole("SUPER_ADMIN")) {
|
||||
return;
|
||||
}
|
||||
|
||||
String moduleRequis = annotation.value().toUpperCase();
|
||||
|
||||
// 2. Extraire l'organisation active depuis le header
|
||||
|
||||
Reference in New Issue
Block a user