Discussion

18/09/2021 à 15h03 : m-ickael : Bonjour, bon weekend !

13/09/2021 à 11h07 : Swan : Bonjour à tous et bon dimanche ;)

11/09/2021 à 16h45 : m-ickael : Bonjour :)

10/09/2021 à 08h33 : Swan : Bonjour tout le monde ^^ N'oubliez pas, si besoin je suis sur le discord ;)

31/08/2021 à 11h38 : Swan : Bonjour tout le monde :lu La rentrée approche ;)

16/08/2021 à 17h40 : m-ickael : Bonne semaine !

15/08/2021 à 11h56 : Swan : Bon week end à tous :)

13/08/2021 à 11h43 : Swan : Salut tout le monde :sun

11/08/2021 à 17h52 : m-ickael : Salut.

11/08/2021 à 11h50 : Swan : Et merci encore une fois à Xtian ;)

11/08/2021 à 11h40 : Swan : Salut à tous les Aoutiens et Aoutiennes !! On va devoir faire la prière du Soleil cette année !!

10/07/2021 à 07h42 : m-ickael : Mais oui :) Tu connais la marmotte et le papier alu ?

09/07/2021 à 02h33 : NK-aide : rigole bien regarder les infos dans un peux moins de 15 jours :po-de-bol bientôt l'injection à la pisse ( chaque injection = sont variants * agent pathogène *) méditer :partage

08/07/2021 à 20h25 : m-ickael : Il parait (et visiblement), ça n'arrange pas les gens .. :rire

07/07/2021 à 16h23 : NK-aide : :coeur1 coucou la famille j'espère que tout le monde va bien en cette période troublé du virus l'injection qui infecte & de la division politique instrumentalisé par l'union européen a des fin pur de garder les riche + riche et les pauvre encore plus pauvre pour garder une pseudo démocratie digne d'un cartel mondial.

10/06/2021 à 19h53 : m-ickael : Bonjour

08/06/2021 à 12h15 : Nico_Las : Bonjour à tous

06/06/2021 à 11h10 : Swan : Bonjour à tous^^ et bon mois de Juin !

25/05/2021 à 21h22 : m-ickael : Bonjour :)

17/05/2021 à 13h13 : Swan : Bonjour tout le monde ^^ Théo D je te remercie d'avoir testé mon système de don: €0,01 EUR :ok

09/05/2021 à 09h28 : m-ickael : Bonjour :)

05/05/2021 à 09h49 : Swan : Bonjour tout le monde :fleur

02/05/2021 à 11h20 : Swan : Bon 1er mai à tous :) :nat0

29/04/2021 à 11h27 : Swan : :lu Bonjour tout le monde ^^

20/04/2021 à 21h32 : m-ickael : Bonjour

20/04/2021 à 17h53 : Swan : Coucou tout le monde ^^

18/04/2021 à 14h14 : m-ickael : Bonjour :)

15/04/2021 à 11h46 : Swan : Bonjour à tous ;)

11/04/2021 à 11h23 : Swan : Salut !! Bon dimanche à tous ^^

07/04/2021 à 12h32 : m-ickael : Bonjour :top

05/04/2021 à 15h03 : Swan : Youhou !! Joyeuses Pâques !!! :D

04/04/2021 à 16h09 : m-ickael : Bonjour.

04/04/2021 à 11h58 : Swan : Coucou tout le monde ^^ :coin3

03/04/2021 à 17h22 : m-ickael : Bonjour :)

28/03/2021 à 10h47 : Swan : Bonjour tout le monde ^^

04/03/2021 à 21h45 : m-ickael : Moi il est là :D

02/03/2021 à 11h37 : Swan : Il est ou le soleil !!! il est ouuUUUuuu ??? :rire

01/03/2021 à 22h47 : Swan : Bon 1er Mars à tous ;)

27/02/2021 à 07h48 : m-ickael : Bonjour

26/02/2021 à 11h16 : Swan : :lu Bonjour tout le monde ^^ Ce soir week end !!

23/02/2021 à 10h50 : Swan : Salut tout le monde ^^ On est toujours là hein !! ;)

07/02/2021 à 08h33 : m-ickael : :)

06/02/2021 à 11h38 : Swan : Bonjour tout le monde :lu Merci Mickael ^^

04/02/2021 à 18h22 : m-ickael : Salut. Long à charger par moment, mais oui ça marche :)

03/02/2021 à 08h28 : Swan : Salut !! Migration sur la 5.2 de Pbt en cours ;)

30/01/2021 à 13h20 : Swan : Salut tout le monde dites moi le site fonctionne correctement ?

22/01/2021 à 16h42 : m-ickael : :(

22/01/2021 à 11h07 : Swan : Bonjour à tous, on a vraiment le moral au ras des pâquerettes... :dehors2

21/01/2021 à 13h15 : Swan : Salut tout le monde ^^ Jour de pluie , jour heureux ??

14/01/2021 à 16h57 : m-ickael : :top

Vous n'êtes pas autorisé à ajouter un message !

Classe Member

Introduction



La classe User gère le membre 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 du membre



Les informations du membre sont accéssibles grâce à la fonction Get_attribute()
Vous pouvez récupérer les informations suivante:

Code PHP :
$User->Get_attribute('user_id') //Id de l'utilisateur, -1 si invité
$User->Get_attribute('login') //Pseudo de l'utilisateur, Invité si invité
$User->Get_attribute('level') //Niveau d'autorisation de l'utilisateur, -1 si invité
$User->Get_attribute('user_groups') //Groupes de l'utilisateur, séparés par des |
$User->Get_attribute('user_lang') //Langue de l'utilisateur
$User->Get_attribute('user_theme') //Thème de l'utilisateur
$User->Get_attribute('user_mail') //Mail de l'utilisateur
$User->Get_attribute('user_pm') //Nombre de messages privés de l'utilisateur
$User->Get_attribute('user_readonly') //Utilisateur en lecture seule?
$User->Get_attribute('user_editor') //Editeur texte de l'utilisateur
$User->Get_attribute('user_timezone') //Zone horaire de l'utilisateur (GMT)



Gestion des autorisations



Autorisations simple sur les rangs



Un utilisateur a un rang qui lui est assigné, qui peut aller de visiteur à administrateur. Ainsi il est possible de définir des autorisations sur les rangs.
Pour cela consultez la méthode Check_level()


Autorisations 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.



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() de la classe Groups.
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



  • Check_level : Autorisation simple sur le rang du membre.
  • Check_auth : Autorisations avancée sur le(s) groupe(s) du membre.
  • Check_max_value : Retourne le tableau avec les droits issus du tableau passé en argument. Tableau destiné à être serialisé.
Cette page a été vue 3581 fois