Framework

Classe Group

Table des matières

Introduction



La classe Groups permet de gérer les autorisations pour les niveaux et groupes d'utilisateurs, sachant qu'elle supporte le fait qu'un utilisateur soit inscrit dans plusieurs groupes.

Gestion des groupes



Cette classe permet entre autres de gérer les membres des groupes (ajout d'un membre à un groupe, modification des groupes auxquels appartient le membre, suppression d'un membre d'un groupe).

Principe de fonctionnement des autorisations



Comment créer des séries d'autorisations



La gestion des autorisations est basée sur les opérateurs de bits. Sachant que la majorité des serveurs fonctionnent sur des architectures 32 bits (bien que les architectures 64 bits commencent à se démocratiser) nous pourrons gérer 32 types d'autorisations en une seule variable (il est fortement recommandé de ne pas dépasser ce nombre pour ne pas avoir des dépassements de capacité sur les architectures 32 bits).
En réalité en PHP nous n'avons pas la maîtrise totale des types et donc les entiers sont forcément signés (c'est-à-dire qu'ils peuvent être négatifs ou positifs) et donc le bit de poids fort (le plus à gauche) est utilisé pour savoir le signe du nombre. Sur une architecture 32 bits nous pourrons effectivement gérer que 31 autorisations par variable.
Dans les cas où on souhaite gérer plus de 31 autorisations (très très rare) il faudra gérer les droits en plusieurs variables.

Stockage des règles pour chaque action



Commençons par un schéma représentant la façon dont un ordinateur stocke des nombres (l'exemple est pris en architecture 32 bits).



Comme nous l'avons vu nous pouvons traiter les autorisations par séries de 31. Chaque règle (de 1 à 31) est repérée par son numéro et correspond au bit qui est à 1 si l'action est permise ou 0 sinon. Voici un schéma illustrant comment sont stockées les autorisations de chaque utilisateur.


La variable qui contient les règles est un tableau associatif qui à chaque rang ou groupe associe un entier contenant les autorisations pour chaque action.
Pour construire un tableau d'autorisations utilisez la méthode Return_array_auth().
En pratique ce tableau est stocké dans la base de données. Un problème se pose alors : comment stocker un tableau dans la base de données ? Nous vous conseillons de sérialiser votre tableau (le transformer en chaîne de caractères) à l'aide de la fonction serialize() et lors de l'utilisation de reconvertir cette chaîne vers le tableau d'origine avec unserialize(). Pour en savoir plus sur les subtilités à propos du stockage de ce tableau dans la base de données merci de vous reporter à cet article.

Permission d'un utilisateur pour une action donnée



Une fois le tableau construit il sera utilisé pour déterminer les autorisations du membre. Pour cela il faudra utiliser la méthode Member::Check_auth() qui détermine si l'utilisateur concerné a accès à l'action demandée.

Utilisation dans un module



Il faut savoir que la classe groups est déjà instanciée dans includes/begin.php donc lorsque vous travaillez sur un module un objet de ce type existe déjà et se nomme $groups.
Vous n'aurez alors qu'à l'utiliser pour gérer vos autorisations.

Méthodes disponibles



  • Gestion des autorisations
    • Generate_select_auth: Génération d'une liste à sélection multiple des rangs, groupes et membres
    • Return_array_auth() : crée le tableau contenant les autorisations de chaque groupe à partir des données d'un formulaire (modification ou création des droits).
    • Return_array_auth_simple: Retourne le tableau avec les droits issus du tableau passé en argument. Tableau destiné à être serialisé.
  • Gestion des membres et groupes
    • Add_member: Ajout du membre au groupe
    • Edit_member: Change les groupes du membre
    • Del_member : Supprime un membre d'un groupe

Cette page a été vue 2687 fois