Pour intégrer un composant de gestion des permissions (RBAC) à un projet CRM, suivez ces étapes techniques.
1. Copie et enregistrement de l'application de gestion des accès
Placez le dossier de l'application de contrôle d'accès dans votre projet et ajoutez-la aux applications installées :
APPS_INSTALLÉES = [
# ... autres applications
'gestion_acces.apps.GestionAccesConfig',
]
2. Migartion de la base de données avec un modèle utilisateur personnalisé
Définissez un modèle utilisateur abstrait pour étendre les fonctionnalités de base :
from django.db import models
class UtilisateurBase(models.Model):
liens_roles = models.ManyToManyField('Role', verbose_name='Rôles associés', blank=True)
def __str__(self):
return self.identifiant
class Meta:
abstract = True
Votre modèle utilisateur concret doit hériter de cette classe :
from gestion_acces.models import UtilisateurBase
class ProfilUtilisateur(UtilisateurBase):
# Champs supplémentaires
pass
Exécutez ensuite les migrations :
python manage.py makemigrations
python manage.py migrate
3. Configuration des routes URL
Ajoutez les routes de l'application de gestion des accès dans la configuration racine des URLs :
from django.urls import include, path
urlpatterns = [
path('admin/', admin.site.urls),
# ... autres routes
path('acces/', include('gestion_acces.urls', namespace='acces')),
]
4. Saisie des données via les interfaces dédiées
Utilisez les interfaces suivantes pour configurer les rôles et permissions :
- Gestion des rôles :
http://localhost:8000/acces/roles/ - Gestion des menus et permissions :
http://localhost:8000/acces/menus/ - Ajout groupé de permissions :
http://localhost:8000/acces/ajout-permissions/
5. Attribution des autorisations
Accédez à l'interface de distribution des permissions à http://localhost:8000/acces/distribution/. Assurez-vous d'utiliser le modèle utilisateur personnalisé (ProfilUtilisateur) au lieu du modèle par défaut. Attribuez des permissions aux rôles, puis des rôles aux utilisateurs.
6. Paramétrage des configurations de sécurité
Dans le fichier settings.py, définissez les listes de contrôle :
# URLs exemptées de vérification
URLS_EXCLUES = [
r'^/connexion/$',
r'^/inscription/$',
r'^/admin/.*'
]
# URLs sans vérification de permission
URLS_LIBRES = [
r'^/accueil/$',
]
# Clé de session pour les permissions
CLE_SESSION_PERMISSIONS = 'autorisation'
# Clé de session pour le menu
CLE_SESSION_MENU = 'menu'
7. Initialisation des permissions après authentification
Après une connexion réussie, chargez les données de permission en session :
from gestion_acces.service.initialisation import charger_permissions
charger_permissions(utilisateur, requete)
8. Application du midddleware de vérification
Intégrez le middleware dans la pile de traitement des requêtes :
MIDDLEWARE = [
# ... autres middlewares
'gestion_acces.middlewares.controle_acces.ControleAccesMiddleware',
]
9. Affichage dynamique des menus
Dans vos templates, chargez les balises de menu et intégrez les ressources statiques :
{% load gestion_acces %}
{% menu_dynamique requete %}
<link rel="stylesheet" href="{% static 'gestion_acces/css/menu.css' %}">
<script src="{% static 'gestion_acces/js/menu.js' %}"></script>
10. Fil d'Ariane contextuel
Ajoutez le fil d'Ariane dans les templates pour la navigation :
{% fil_ariane requete %}
11. Contrôle des boutons selon les permissions
Restreignez l'affichage des éléments d'interface en fonction des droits de l'utilisateur :
{% load gestion_acces %}
{% if requete|possede_permission:'modifier_client' %}
<th>Actions</th>
{% endif %}