Vous devez être membre et vous identifier pour publier un article.
Les visiteurs peuvent toutefois commenter chaque article par une réponse.

[phpBB3] Permissions des forums

Astuces de l’Infobrol (Développement)Article publié le 31/01/2008 19:48:26


Les méthodes



$auth-›acl_get(’f_’); Permissions du forum (généralité)
$auth-›acl_get(’f_announce’); Peut poster des annonces
$auth-›acl_get(’f_attach’); Peut attacher des fichiers
$auth-›acl_get(’f_bbcode’); Peut utiliser le BBCode
$auth-›acl_get(’f_bump’); Peut remonter les sujets
$auth-›acl_get(’f_delete’); Peut détruire ses messages
$auth-›acl_get(’f_download’); Peut télécharger des fichiers
$auth-›acl_get(’f_edit’); Peut éditer ses messages
$auth-›acl_get(’f_email’); Peut envoyer des sujets par mail
$auth-›acl_get(’f_flash’); Peut poster du Flash
$auth-›acl_get(’f_icons’); Peut utiliser les icônes des messages
$auth-›acl_get(’f_ignoreflood’); Peut ignorer la limite de flood
$auth-›acl_get(’f_img’); Peut poster des images
$auth-›acl_get(’f_list’); Peut accéder au forum
$auth-›acl_get(’f_noapprove’); Peut poster sans devoir être approuvé
$auth-›acl_get(’f_poll’); Peut créer des sondages
$auth-›acl_get(’f_post’); Peut créer des nouveaux sujets
$auth-›acl_get(’f_postcount’); Incrémente le nombre de messages postés (appliqué aux nouveaux messages)
$auth-›acl_get(’f_print’); Peut imprimer les sujets
$auth-›acl_get(’f_read’); Peut lire le forum
$auth-›acl_get(’f_reply’); Peut répondre aux sujets
$auth-›acl_get(’f_report’); Peut rapporter les messages
$auth-›acl_get(’f_search’); Peut chercher dans le forum
$auth-›acl_get(’f_sigs’); Peut utiliser sa signature
$auth-›acl_get(’f_smilies’); Peut poster des émoticônes
$auth-›acl_get(’f_sticky’); Peut poster des post-it
$auth-›acl_get(’f_subscribe’); Peut souscrire au forum
$auth-›acl_get(’f_user_lock’); Peut verrouiller ses propres sujets
$auth-›acl_get(’f_vote’); Peut voter dans les sondages
$auth-›acl_get(’f_votechg’); Peut modifier un vote existant

Exemples


Récupérer l’utilisateur phpBB3


Pour rappel, il est possible de récupérer l’utilisateur phpBB3 de cette manière :

  1. if(!defined(’IN_PHPBB’))
  2. {
  3. define(’IN_PHPBB’, true);
  4. }
  5. $phpbb_root_path=’forum/;
  6. include_once($phpbb_root_path.’common.php’);
  7. $user-›session_begin();
  8. $auth-›acl($user-›data);


  1. if(!defined(’IN_PHPBB’))
  2. {
  3. define(’IN_PHPBB’, true);
  4. }

Si nous ne définissons pas cette variable, le forum renverra immédiatement une page vide.

  1. $phpbb_root_path=’forum/;

Ici, nous définissons le chemin pour atteindre la racine du forum

  1. $user-›session_begin();

Nous démarrons la session phpBB. Nous pouvons donc accéder aux informations relatives à l’utilisateur en cours.

Par exemple,
  1. echo $user-›data[’username’];

permet d’afficher le nom d’utilisateur.


  1. $auth-›acl($user-›data);

Cette partie est facultative, et permet d’utiliser les permissions de phpBB

Restriction d’accès des forums


Nous devons parfois déterminer quels sont les forums que le visiteur peut lire, pour masquer les forums cachés. Il suffit de demander à l’objet $auth que le forum nous fournit (voir le fichier includes/auth.php) et d’invoquer sur lui la méthode acl_get. Nous passons en argument à cette méthode ’f_’ pour signaler que nous désirons accéder aux permissions des forums, puis ’read’ pour signaler que nous désirons consulter les permissions en lecture.

Deux approches sont possibles :
  1. soit ne chercher que dans les forums permis (indiqué quand il existe plus de forums cachés que de forums visibles)
  2. soit exclure les forums cachés (recommandé dans le cas où il existe plus de forums visibles que de forums cachés)


Le code suivant nous fournit donc un tableau avec les identifiants des forums à masquer au visiteur :
  1. $notAllowedForums = array();
  2. $notAllowedForums = array_keys($auth-›acl_getf(’!f_read’, true));

Nous pouvons remarquer le signe ! pour demander seulement ceux pour lesquels l’utilisateur ne possède pas de droit de lecture.

Si nous avons une requête sql contenue dans la variable $sql, nous pouvons ajouter à la clause WHERE une condition supplémentaire en excluant les forums cachés :
  1. $sql .=’ WHERE topic_moved_id = 0;
  2.  
  3. if(sizeof($notAllowedForums))
  4. {
  5. $sql .=’ AND forum_id NOT IN(. implode(,, $notAllowedForums) .);
  6. }


Erreur ???


Si vous rencontrez l’erreur suivante : The config. file could not be found. Click here to install phpBB, pensez avant tout à vérifier que vous avez préalablement déclaré la variable $phpEx et que vous lui avez affecté la valeur de l’extension (ex : $phpEx = ’php’;).

Avancé


Nous pouvons travailler de cette manière pour intégrer les sessions phpBB à notre site, mais nous sommes alors entièrement dépendants des modifications apportées au forum.
Il est préférable de créer notre propre classe utilisateur, et affecter les valeurs de l’utilisateur phpBB aux variables de cette classe. Il faut aussi redéfinir les méthodes relatives à la sécurité.

De cette manière, nous sommes indépendants du forum, et il suffit de modifier à un seul endroit le cargement des données pour ne plus utiliser phpBB, ou si les méthodes de phpBB sont modifiées.

Avatar :: Steph Un article de Steph

Source : indéterminée


Sélection, tri et recherche d'articles
FILTRER :
TRIER :1er critère : 2e critère :
CHERCHER : Dans les titres Dans le contenu


[Afficher les liens en fonction des critères du formulaire ci-dessus]

English translation

You have asked to visit this site in English. For now, only the interface is translated, but not all the content yet.

If you want to help me in translations, your contribution is welcome. All you need to do is register on the site, and send me a message asking me to add you to the group of translators, which will give you the opportunity to translate the pages you want. A link at the bottom of each translated page indicates that you are the translator, and has a link to your profile.

Thank you in advance.

Document created the 13/09/2004, last modified the 26/10/2018
Source of the printed document:https://www.gaudry.be/en/ast-rf-434.html

The infobrol is a personal site whose content is my sole responsibility. The text is available under CreativeCommons license (BY-NC-SA). More info on the terms of use and the author.