Check_auth
Check_auth — Permet de contrôler les autorisations.
Cette méthode de la classe
Member permet contrôler les autorisations de l'utilisateur pour une autorisation (
$check_auth) donnée selon les règles fournies par le tableau
$array_auth_groups.
Retourne true si autorisé, false le cas échéant.
Le tableau $array_auth_groups est automatiquement créé par la classe
Groups lors de l'insertion dans la base de données. Il est donc récupéré à partir du
Cache ou directement de la
Base de données.
Une bonne façon de procéder pour passer le paramètre
$check_auth est de définir des constantes avec un nom explicite contenant l'entier associé à chaque autorisation pour chaque droit (pour plus d'explication voir la classe
Member). Dans les exemples suivants elles sont déclarées en hexadécimal mais on peut aussi bien les déclarer en décimal.
Lorsqu'on souhaite contrôler la propriété associée au ième droit il faut mettre à la variable $check_auth la valeur 2i-1 et non i pour des raisons techniques de calcul des autorisations. Ainsi pour utiliser le 3ème bit $check_auth doit valoir 4 (23-1 = 22 = 4).
On peut aussi voir les choses autrement et plus simplement. L'entier correspondant à la première opération est toujours 1. Ensuite dès que l'on rajoute une autorisation on lui associe l'entier précédent multiplié par 2.
L'exemple ci-dessus va afficher "Vous êtes autorisé à poster dans cette catégorie" si le niveau d'autorisation (contenu dans la variable
$Member->Get_attribute('level')
) est supérieur ou égal à 0 (c'est à dire les membres, modérateurs et administrateur).
L'exemple ci-dessus va afficher "Vous êtes autorisé à poster dans cette catégorie" si le niveau d'autorisation (contenu dans la variable
$Member->Get_attribute('level')
est supérieur ou égal à 0 (c'est à dire les membres, modérateurs et administrateur),
ou si vous appartenez au groupe avec l'identifiant 1.
L'opérateur << de décalage de bit de PHP peut-être utilisé pour faciliter la manipulation des droits. Cet exemple permet de balayer plusieurs droits (ici 4) successivement.
Check_level(),
Check_max_value(),
Get_attribute()