package dev.lions.unionflow.server.security;

/**
 * Constantes centralisées pour les rôles UnionFlow.
 *
 * <p>Utiliser ces constantes dans {@code @RolesAllowed} pour éviter
 * les fautes de frappe et garantir la cohérence entre ressources.</p>
 */
public final class RoleConstant {

    // ── Rôles système ─────────────────────────────────────────────────────────
    public static final String SUPER_ADMIN         = "SUPER_ADMIN";
    public static final String ADMIN               = "ADMIN";

    // ── Rôles organisation ────────────────────────────────────────────────────
    public static final String ADMIN_ORGANISATION  = "ADMIN_ORGANISATION";
    public static final String PRESIDENT           = "PRESIDENT";
    public static final String VICE_PRESIDENT      = "VICE_PRESIDENT";
    public static final String SECRETAIRE          = "SECRETAIRE";
    public static final String TRESORIER           = "TRESORIER";
    public static final String MODERATEUR          = "MODERATEUR";
    public static final String CONTROLEUR_INTERNE  = "CONTROLEUR_INTERNE";
    public static final String COMPLIANCE_OFFICER  = "COMPLIANCE_OFFICER";
    public static final String COMMISSAIRE_COMPTES = "COMMISSAIRE_COMPTES";

    // ── Rôles membres ─────────────────────────────────────────────────────────
    public static final String MEMBRE              = "MEMBRE";
    public static final String USER                = "USER";

    // ── Rôles fonctionnels (événements) ───────────────────────────────────────
    public static final String ORGANISATEUR_EVENEMENT = "ORGANISATEUR_EVENEMENT";

    // ── Rôles modules spécialisés ─────────────────────────────────────────────
    public static final String TONTINE_RESP        = "TONTINE_RESP";
    public static final String MUTUELLE_RESP       = "MUTUELLE_RESP";
    public static final String VOTE_RESP           = "VOTE_RESP";
    public static final String COOP_RESP           = "COOP_RESP";
    public static final String ONG_RESP            = "ONG_RESP";
    public static final String CULTE_RESP          = "CULTE_RESP";
    public static final String REGISTRE_RESP       = "REGISTRE_RESP";
    public static final String AGRI_RESP           = "AGRI_RESP";
    public static final String COLLECTE_RESP       = "COLLECTE_RESP";

    private RoleConstant() {}
}
