Ajouter des rôles dynamiquement - codjo/codjo-security GitHub Wiki

Description

Cette page décrit comment ajouter des rôles dynamiquement à l'ouverture de la session d'un utilisateur.

Etapes

Pour ajouter des rôles à un utilisateur. Il faut :

Etape de configuration

  1. Création du SecurityContext
public class GabiSecurityContext implements SecurityContext {
    private final SecurityContext securityContext;
    private final List<String> specificRoleNames;

    public GabiSecurityContext(SecurityContext securityContext, List<String> specificRoleNames) {
        this.securityContext = securityContext;
        this.specificRoleNames = specificRoleNames;
    }

    public boolean isCallerInRole(String roleId) {
        return securityContext.isCallerInRole(roleId)
               || specificRoleNames.contains(roleId);
    }
}
  1. Création du SecurityContextFactory
public class GabiSecurityContextFactory implements SecurityContextFactory {
    private final SecurityContextFactory factory;

    public GabiSecurityContextFactory(SecurityContextFactory factory) {
        this.factory = factory;
    }

    public SecurityContext createSecurityContext(UserId id, Connection connection) 
             throws SQLException {
        return new GabiSecurityContext(factory.createSecurityContext(id, connection), 
                                       getSpecificRoles(id, connection));
    }


    private List<String> getSpecificRoles(UserId id, Connection connection) 
             throws SQLException { ... }
}
  1. Declaration
SecurityServerPlugin security = ...;
SecurityContextFactory factory = security.getConfiguration().getSecurityContextFactory();
security.getConfiguration().setSecurityContextFactory(new GabiSecurityContextFactory(factory));

{rate}

⚠️ **GitHub.com Fallback** ⚠️