Méthode Member::Check_auth()
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
L'exemple ci-dessus va afficher "Vous êtes autorisé à poster dans cette catégorie" si le niveau d'autorisation (contenu dans la variable
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()
Check_auth — Permet de contrôler les autorisations.
Description
Code PHP :
bool Check_auth(array $array_auth_groups, int $check_auth)
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.
Exemple 1
Code PHP :
<?php //Définition des constantes. define('READ_CAT_FORUM', 0x01); //Premier bit donc 1 en binaire et 1 en décimal et 0x01 en hexadécimal define('WRITE_CAT_FORUM', 0x02); //Deuxième bit donc 10 en binaire, soit 2 ou 0x02 define('EDIT_CAT_FORUM', 0x04);//Troisième bit donc 100 en binaire et 4 en décimal et en hexadécimal $array_auth_groups = array ( 'r-1' => 1, 'r0' => 3, 'r1' => 7, 'r2' => 7, ); if( $Member->Check_auth($array_auth_groups, WRITE_CAT_FORUM) ) echo 'Vous êtes autorisé à poster dans cette catégorie'; else echo 'Vous ne pouvez pas poster!'; ?>
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).
Exemple 2, avec des groupes
Code PHP :
<?php //Définition des constantes. define('READ_CAT_FORUM', 0x01); define('WRITE_CAT_FORUM', 0x02); define('EDIT_CAT_FORUM', 0x04); $array_auth_groups = array ( 'r-1' => 1, 'r0' => 3, 'r1' => 7, 'r2' => 7, '1' => 7, ); if( $Member->Check_auth($array_auth_groups, WRITE_CAT_FORUM) ) echo 'Vous êtes autorisé à poster dans cette catégorie'; else echo 'Vous ne pouvez pas poster!'; ?>
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.
Exemple 3, opérateur de décalage de bit
Code PHP :
<?php $all_auth = true; for($i = 0; $i < 4; $i <<= 1) { $all_auth = $Member->Check_auth($array_auth_groups, $i); if( $all_auth === false ) break; } if( $all_auth === true ) echo 'Vous bénéficiez de toutes les autorisations'; else echo 'Vous ne bénéficiez pas de toutes les autorisations'; ?>
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.
Voir aussi
Check_level(), Check_max_value(), Get_attribute()