V. Développer avec PHPBoost

Utilisateur courant

Dernière mise à jour : 04/03/2023 à 06h12
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.

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 certain nombre d'informations peuvent ensuite être récupérées grâce à cette classe :

Code PHP :
$user = AppContext::get_current_user();
$user->get_id(); // Identifiant de l'utilisateur
$user->get_display_name(); // Nom d'affichage de l'utilisateur
$user->get_email(); // Email de l'utilisateur
$user->get_show_email(); // Autorisation d'afficher ou non l'email de l'utilisateur
$user->get_level(); // RangRetourne une des valeurs suivantes en fonction du rang de l'utilisateur : User::VISITOR_LEVEL, User::MEMBER_LEVEL, User::MODERATOR_LEVEL, User::ADMIN_LEVEL
$user->get_locale(); // Langue de l'utilisateur
$user->get_theme(); // Thème de l'utilisateur
$user->get_timezone(); // Fuseau horaire de l'utilisateur
$user->get_editor(); // Éditeur de texte de l'utilisateur
$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 s'il a bien le rang pour accéder à une page, 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'autorisations sur PHPBoost. Vous pouvez donner des droits en plus des rangs. Ces droits peuvent être donnés à 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 le signe du nombre. Sur une architecture 32 bits nous pourrons effectivement uniquement gérer 31 autorisations par variable.

Dans les cas où l'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).

bit_representation



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 le stockage des autorisations de chaque utilisateur.

authorizations_representation



Utilisation :

Code PHP :
AppContext::get_current_user()->check_auth($tableau, $bit)
Cette page a été vue 8078 fois