Public Access
42 lines
1.5 KiB
Python
42 lines
1.5 KiB
Python
from modules.logger import log_event
|
|
|
|
# Base de données simulée des rôles (sera connectée à database.py lors de la création de l'espace connexion)
|
|
ROLES_UTILISATEURS = {
|
|
"xavier": "Super Admin",
|
|
"céline": "Admin",
|
|
"anaëlle": "VIP",
|
|
"renan": "VIP",
|
|
"audric": "VIP"
|
|
}
|
|
|
|
def obtenir_role(nom_utilisateur):
|
|
"""Retourne le rôle de l'utilisateur."""
|
|
return ROLES_UTILISATEURS.get(nom_utilisateur.lower(), "Utilisateur")
|
|
|
|
def est_vip_ou_plus(nom_utilisateur):
|
|
"""Vérifie si l'utilisateur est exonéré de marge commerciale."""
|
|
role = obtenir_role(nom_utilisateur)
|
|
return role in ["Super Admin", "Admin", "VIP"]
|
|
|
|
def formater_affichage_nom(nom_utilisateur):
|
|
"""Formate l'affichage pour l'interface : 'Nom (Rôle)'."""
|
|
role = obtenir_role(nom_utilisateur)
|
|
nom_propre = nom_utilisateur.capitalize()
|
|
return f"{nom_propre} ({role})"
|
|
|
|
def verifier_droits_attribution(nom_attribueur, nouveau_role):
|
|
"""
|
|
Logique métier de sécurité :
|
|
- Le Super Admin peut tout attribuer.
|
|
- L'Admin ne peut attribuer que le rôle VIP ou Utilisateur.
|
|
"""
|
|
role_attribueur = obtenir_role(nom_attribueur)
|
|
|
|
if role_attribueur == "Super Admin":
|
|
return True
|
|
|
|
if role_attribueur == "Admin" and nouveau_role in ["VIP", "Utilisateur"]:
|
|
return True
|
|
|
|
log_event("WARNING", "SECURITY", f"Tentative d'élévation de privilège non autorisée par {nom_attribueur} pour le rôle {nouveau_role}.")
|
|
return False |