Salut à tous,
Depuis quelque temps, je me pose pas mal de questions sur la façon de gérer les utilisateurs et plus particulièrement leurs permissions.
Voilà pourquoi j'aimerai faire un petit sujet de synthèse qui parlerait de la façon dont chacun gère ça.
- Avez-vous simplement un marqueur qui vaut 100 si l'utilisateur est administrateur, 90 s'il est modérateur, 10 s'il est membre, 0 s'il est banni, etc.
- Ou bien avez-vous un octet dans lequel chaque bit représente une autorisation.
- Ou bien avez-vous plutôt une table avec une gestion fine des droits, selon des groupes, etc.
- Autre…
Sephi-Chan
Une table avec gestion fine des droits que j'appelle RUDI.
R = Droit de lecture
U = Droit de modification
D = Droit de suppression
I = Droit d'insertion
Et ensuite j'ai trois niveau de droits, selon mon modèle de MVC, je peux par exemple donner le droit à tout le contrôleur, seulement à certaines de ces actions (méthodes), où alors seulement à certains morceaux de la vue.
Gestion donc plutôt complète, qui peut sembler bien trop complète, l'avantage c'est que tu peux l'utiliser dans tous les cas de figures, et quand tu as besoin de droit simple, ça marche très bien sans prise de tête

Pour ma part, j'ai une table gestion_droit, ou je rentre toutes les personnes ayant des droits ( Admin, modérateur et juges ), donc toutes les autres ne sont que des joueurs n'ayant aucun droit.
Chaque niveau de droit donne accès à différente chose :
-Admin, niveau 1, accès total.
-Modo, niveau 2, peut bannir du minichat
-Juges, niveau 3, peuvent mettre en prison/bannir un joueur
etc...
Simple et efficace, toutes les actions possibles se font via un panneau administrateur, toutes les personnes ayant des droits y ont accès, mais ne peuvent voir que ce qui leur correspond.
De mon côté je travail en module. Il s'agit d'un regroupement fonctionnel qui peut contenir une ou plusieurs tables, un ou plusieurs fichiers ...
J'ai un module pour les bannis (temporairement ou définitivement) contenant les IP utilisés par cet utilisateur, multicompte, durée du ban ...
J'ai un octet qui définit le droit de l'utilisateur
Utilisateur/ Administrateur
J'ai un module pour les privilèges administrateurs.
Un exemple :
3 privilèges admin :
- Téléporter son corps à la ville la plus proche
- Téléporter son corps n'importe où sur la carte
- Téléporter n'importe qui, n'importe où
L'octet Administrateur affiche un menu qui ramène sur le privilège admin (- Téléporter n'importe qui, n'importe où)
On pourra donner à un joueur lembda n'importe lequel de ces privilèges et tous les joueurs privilégiés n'auront pas les même privilège.
kéké
Salut.
Personnellement, j'utilise un système d'octet où chaque bit représente un droit :
0x01 : Jouer
0x02 : Ecrire
0x04 : Modifier
0x08 : Administrer
etc.
Chaque joueur peut cumuler n'importe lesquels de ces droits. Ce modèle a l'avantage d'être très flexible car il se base sur l'utilisateur et non sur les groupes.
J'ai aussi une table séparée pour les bans d'IP qui fonctionne selon le même principe que celui de keke.