Intégration d'un module de contrôle d'accès basé sur les rôles dans une application CRM

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 %}

Étiquettes: Django RBAC Python système-de-gestion-des-permissions middleware

Publié le 14 juin à 23h51