La classe CurrentUser gère l'utilisateur au cours de sa session. Elle permet notamment de récupérer ses informations et 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.
Pour récupérer une instance de la classe CurrentUser il suffit d'utiliser AppContext :
Code PHP :
Un certains nombres d'informations peuvent être ensuite récupéré grâce à cette classe :
Code PHP :
Un utilisateur a un rang, qui lui est assigné, qui peut aller de visiteur à administrateur.
Pour vérifier si il a bien le rang pour accéder à une page par exemple il faut procéder ainsi :
Code PHP :
La gestion des groupes est à la base de la puissance du système d'autorisation sur PHPBoost. Vous pouvez donner des droits en plus des rangs, à des utilisateurs d'un groupe, et même membre par membre.
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.
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.
Utilisation :
Code PHP :
Informations de l'utilisateur
Pour récupérer une instance de la classe CurrentUser il suffit d'utiliser AppContext :
Code PHP :
AppContext::get_current_user()
Un certains nombres d'informations peuvent être ensuite récupéré grâce à cette classe :
Code PHP :
$user = AppContext::get_current_user(); $user->get_id(); // Identifiant de l'utilisateur $user->get_pseudo(); // Pseudo de l'utilisateur $user->get_email(); // Email $user->get_show_email(); // Autorisation d'afficher l'email ou non $user->get_level(); // Rang :=> -1 = visiteur, 0 =membre, 1 = modérateur, 2 = administrateur $user->get_locale(); // Langue $user->get_theme(); // Thème $user->get_timezone(); // Fuseau horaire $user->get_editor(); // Éditeur de texte $user->get_groups(); // Groupes de l'utilisateur
Gestion des autorisations
Vérification du rang
Un utilisateur a un rang, qui lui est assigné, qui peut aller de visiteur à administrateur.
Pour vérifier si il a bien le rang pour accéder à une page par exemple il faut procéder ainsi :
Code PHP :
if (AppContext::get_current_user()->check_level(User::MEMBER_LEVEL)) { echo 'Tu n\'es pas membre, donc tu es un visiteur !'; }
Vérification sur les groupes
La gestion des groupes est à la base de la puissance du système d'autorisation sur PHPBoost. Vous pouvez donner des droits en plus des rangs, à des utilisateurs d'un groupe, et même membre par membre.
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.
Utilisation :
Code PHP :
AppContext::get_current_user()->check_auth($tableau, $bit)