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:
dahoud
2026-04-15 20:23:50 +00:00
parent 9a270995ee
commit e482ad5a4d
3 changed files with 125 additions and 12 deletions

View File

@@ -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