Groupes Utilisateurs
Organisez les utilisateurs avec des groupes pour le contrôle d'accès basé sur les rôles.
Que sont les Groupes ?
Les groupes vous permettent de :
- Organiser les utilisateurs par rôle ou niveau de permission
- Implémenter le contrôle d'accès basé sur les rôles (RBAC)
- Gérer facilement les permissions pour plusieurs utilisateurs
Exemples de Groupes
| Groupe | Description |
|---|---|
admins | Accès administratif complet |
moderators | Accès de modération de contenu |
premium | Utilisateurs avec abonnement premium |
beta-testers | Accès aux fonctionnalités bêta |
👉 Gérer les groupes dans le tableau de bord : Tableau de bord → Groupes
La gestion des groupes (créer, modifier, supprimer, assigner des utilisateurs) s'effectue exclusivement via le Tableau de bord SyAuth. Il n'y a pas d'API publique pour la gestion des groupes.
Pour gérer les groupes, allez sur syauth.com/dashboard → Groupes.
Vérifier les Groupes Utilisateur
Les groupes utilisateur sont inclus dans l'objet utilisateur après l'authentification.
- SDK Next.js
- Django
- Claims JWT
const { user } = useSyAuth();
// Vérifier si l'utilisateur est dans un groupe
const isAdmin = user?.groups?.includes('admins');
const isPremium = user?.groups?.includes('premium');
if (isAdmin) {
// Afficher les fonctionnalités admin
}
Composant RBAC :
// components/RequireGroup.tsx
'use client';
import { useSyAuth } from '@syauth/nextjs';
export function RequireGroup({ group, children, fallback }) {
const { user, isAuthenticated } = useSyAuth();
if (!isAuthenticated || !user?.groups?.includes(group)) {
return fallback || null;
}
return <>{children}</>;
}
Dans Django, accédez aux groupes de l'utilisateur depuis request.user :
from django.http import JsonResponse
from django.contrib.auth.decorators import login_required
@login_required
def admin_only_view(request):
user = request.user
# Vérifier si l'utilisateur est dans un groupe
if 'admins' not in user.groups:
return JsonResponse({'error': 'Accès refusé'}, status=403)
return JsonResponse({'message': 'Bienvenue, admin !'})
Décorateur pour l'accès basé sur les groupes :
from functools import wraps
from django.http import JsonResponse
def require_group(group_name):
def decorator(view_func):
@wraps(view_func)
def wrapper(request, *args, **kwargs):
if group_name not in getattr(request.user, 'groups', []):
return JsonResponse({'error': 'Accès refusé'}, status=403)
return view_func(request, *args, **kwargs)
return wrapper
return decorator
@require_group('admins')
def admin_dashboard(request):
return JsonResponse({'data': 'contenu admin'})
Les groupes sont inclus dans les claims JWT du ID token :
{
"sub": "uuid-utilisateur",
"email": "[email protected]",
"groups": ["admins", "premium"]
}
Décodez le token dans votre backend pour accéder aux groupes :
import jwt
def get_user_groups(id_token):
decoded = jwt.decode(id_token, options={"verify_signature": False})
return decoded.get('groups', [])
Propriétés du Groupe
| Propriété | Type | Description |
|---|---|---|
id | UUID | Identifiant unique |
name | string | Nom du groupe (unique) |
description | string | Description optionnelle |
created_at | datetime | Timestamp de création |
Bonnes Pratiques
| Pratique | Description |
|---|---|
| Utilisez des noms descriptifs | moderateurs-contenu vs mc |
| Gardez les groupes focalisés | Un objectif par groupe |
| Documentez les objectifs des groupes | Maintenez la documentation |
| Audits réguliers | Révisez les appartenances aux groupes périodiquement |
Prochaines étapes
- Tableau de bord - Gérer les Groupes - Gestion complète des groupes