Les archives de FluxBB.fr
Vous n'êtes pas identifié(e).
bonsoir,
serait-il possible, d'une manière suffisamment simple pour qu'elle puisse être exposée ici, de contrôler l'accès aux différents menus de la barre de navigation, et ce en fonction des groupes d'utilisateurs ?
Ou peut être de masquer certains menus pour des groupes définis.
Ou tout autre manipulation permettant par exemple d'interdire l'accès à la liste des membres pour les invités.
Hors ligne
soit tu te contentes de mettre la valeur g_read_board du groupe invité a 0, mais l'invité ne verra plus les forums, soit dans le code d'userlist.php tu modifies genre comme ça :
tu remplaces
if ($pun_user['g_read_board'] == '0')
message($lang_common['No view']);
par
if ($pun_user['g_read_board'] == '0' || $pun_user['g_id'] == PUN_GUEST)
message($lang_common['No view']);
et là l'invité pourra voir les forums mais pas l'userlist (on considère donc que g_read_board pour l'invité est a 1)
j'espère t'avoir aidé
Hors ligne
Tout se passe dans le fichier functions.php, la fonction generate_navlinks(). En l'étudiant un minimum tu verras que certains liens ne s'affiche que pour certains groupes.
Pour la liste des membres, va voir cette discussion qui donne une réponse complète : http://www.punbb.fr/forums/viewtopic.php?id=9274
Nous ne faisons pas le travail à votre place mais nous prenons le temps de vous montrer le chemin. Merci de lire ce que l'on vous dit et de réfléchir avant de re-demander une explication.
Hors ligne
Merci pour vos réponses si rapides.
Effectivement (j'avais pourtant bien cherché mais pas avec les bons mots clés...), la réponse est ici, et doit s'appliquer sans soucis aux autres menus.
Est-ce également possible avec un lien personnel ajouté via "Options/Fonctionnalités/Items de menu additionnels" et qui n'apparait donc pas dans le fichier function.php ?
Hors ligne
Non, ce n'est pas possible, tu dois l'ajouter dans le fichier functions.php si tu veux que son affichage soit conditionnés.
Nous ne faisons pas le travail à votre place mais nous prenons le temps de vous montrer le chemin. Merci de lire ce que l'on vous dit et de réfléchir avant de re-demander une explication.
Hors ligne
bonjour,
j'aurais (encore?) besoin d'être aiguillé.
j'essaye donc d'ajouter ce lien personnel dans functions.php afin qu'il ne soit affiché que pour certains groupes.
De la même manière que celle qui m'a été indiquée pour cacher la liste des membres, j'ai donc naïvement essayé d'ajouter :
if (!$pun_user['is_guest'])
$links[] = '<li id="navogspy"><a href="http://pseudo64.ogspy-gzw.com/">'.$lang_common['OGspy'].'</a>';
Bien sûr, cela ne fonctionne pas.
Malin comme un singe, je soupçonne qu'il faille définir quelque part
id="navogspy"
mais j'ignore, avec maintes autres choses je le concède volontiers, où le faire... (ni même si c'est ce qu'il faut faire)
D'autre part, si je veux interdire la visibilité de ce lien aux invités ET aux simples inscrits (et donc ne l'afficher que pour les autres groupes) ce sera sans doute l'instruction
if (!$pun_user['is_guest'])
qu'il me faudra modifier, non ?
De quelle manière ?...
Vous serait-il possible de me mettre sur la voie ?
Dernière modification par pseudo (30-10-2009 12:47:35)
Hors ligne
Il te faut faire un test sur $pun_user['group_id'] si tu veux tester le groupe.
Pour le "id", tu n'est pas de la définir mais il doit être unique dans la page
Nous ne faisons pas le travail à votre place mais nous prenons le temps de vous montrer le chemin. Merci de lire ce que l'on vous dit et de réfléchir avant de re-demander une explication.
Hors ligne
bonsoir,
bon, ce n'est pas faute d'avoir essayé mais je n'arrive à rien...
je voulais juste rendre deux liens de la barre de navigation visibles seulement pour trois groupes (admins, modos et membres) et donc invisibles aux deux autres groupes (inscrits et invités).
J'enrage un peu de bloquer la-dessus car c'est la dernière étape avant que mon forum n'ait sa forme définitive.
Si une âme charitable passe par ici et daigne m'accorder un peu de son temps, soit pour m'expliquer en détail, soit pour faire les modifs dans mes fichiers, je serais le plus heureux des boulets...
merci...
Hors ligne
Il te faut faire un test sur $pun_user['group_id'] si tu veux tester le groupe.
Pour le "id", tu n'est pas de la définir mais il doit être unique dans la page
Bonjour
Je viens d'installer un fluxBB pour une asso. J'ai utilisé quelques mods pour arriver à paramétrer ce qu'on me demande. J'ai bien suivi pour l'accès "interdit aux invités". Ça marche.
Mais par contre je ne comprends pas comment réaliser l'interdiction à un des groupes de membres d'avoir ni accès à la liste des autres membres (modos et admin compris) ni aux uploads.
Je ne sais pas créer de toute pièce des 'if $ etc.' et des 'id_' mais je peux les intégrer comme il faut aux scripts.
Est-ce qu'on peut expliquer pas à pas la procédure ?
Merci beaucoup d'avance.
Hors ligne
Bonjour,
Pour interdire l'accès d'une page à un ou plusieurs groupes, il suffit de rajouter un
if($pun_user['g_id'] == ID_GROUPE)
message($lang_common['No permission']);
après l'inclusion du include/common.php.
Dernière modification par adaur (17-10-2010 17:05:19)
Hors ligne
Bonjour adaur Merci de ta réponse rapide.
J'ai bien ouvert le fichier "userlist.php" où j'ai intégré ce que tu m'as dit mais ça ne fonctionne pas.:(
Il faut peut-être que j'identifie le groupe ? comment ?
Peux-tu me guider un peu plus dans ce trafic ?
define('PUN_ROOT', './');
require PUN_ROOT.'include/common.php';
if($pun_user['g_id'] == ID_GROUPE)
message($lang_common['No permission']);
if ($pun_user['g_read_board'] == '0')
message($lang_common['No view']);
Hors ligne
Peut être en remplaçant ID_GROUPE par l'id du groupe à interdire ?
Hors ligne
Peut être en remplaçant ID_GROUPE par l'id du groupe à interdire ?
Oui, c'est ce qu'il faut faire
Cependant tu peux simplifier le code:
if($pun_user['g_read_board'] == '0' || $pun_user['g_id'] == ID_GROUPE)
message($lang_common['No view']);
en remplacement de
if($pun_user['g_id'] == ID_GROUPE)
message($lang_common['No permission']);
if ($pun_user['g_read_board'] == '0')
message($lang_common['No view']);
Hors ligne
Ah bonjour Bagu et merci adaur de revenir sur mon problème.
Ça marche.
Donc pour cacher aux membres la "liste des membres", il faut écrire dans le "userlist.php"
if($pun_user['g_read_board'] == '0' || $pun_user['g_id'] == '4')
message($lang_common['No view']);
en trouvant le n° du groupe à paramétrer sur le "common.php" :
// Define a few commonly used constants
define('PUN_UNVERIFIED', 32000);
define('PUN_ADMIN', 1);
define('PUN_MOD', 2);
define('PUN_GUEST', 3);
define('PUN_MEMBER', 4);
Super.
Mais comment à partir de là restreindre cette interdiction à un groupe de membres particulier ? Existe-t-il quelque part un codage des sous-groupes type 41, 42, 43 etc. ou 4.1; 4.2....
Hors ligne
Hors ligne
Bonjour.
Me revoilà après des petits tests.
Une nouvelle table a bien été créée: id_5 qui correspond après vérification au nouveau groupe "membres restreints" basé sur le groupe "membres" (id_4).
Mais, un autre groupe basé toujours sur ce groupe "membres", nommé "membres qualifiés", a gardé l'id_4. J'ai fait les essais sous plusieurs identifiants pour m'en apercevoir.
Qu'est-ce qui est alors pris en compte pour la création d'un ID spécifique (qui devrait être id_6) ? étrange pour moi; je ne vois pas. Et vous ?
Hors ligne
Si en créant un nouveau groupe celui-ci n'a pas un id différent, c'est que la base de données ne fonctionne pas : ré-installer le tout (à vide).
Ensuite, re-créer progressivement les choses (groupes, catégories, forums, etc..) TOUJOURS par l'interface du forum (mode admin) et surtout pas à la main sur phpMyAdmin.
Life is a struggle, programming is a suffer.
Hors ligne
Bonjour, merci Mpok de ton intervention
C'est OK. Je vois bien de nouveau le bon nombre d'id_. Il a fallu tester pour voir qui était qui. Ce n'est pas explicite dans les tables, savoir quel id_ correspond à quel title et user_title.
Pour la requête comment dois-je l'écrire correctement quand il y a plusieurs groupes ? Est-ce suffisant de la mettre une fois pour toute dans le seul fichier "user_list" ?
if($pun_user['g_read_board'] == '0' || $pun_user['g_id'] == '4')
message($lang_common['No view']);
if($pun_user['g_read_board'] == '0' || $pun_user['g_id'] == '6')
message($lang_common['No view']);
Est-ce que c'est correct ainsi ?
Hors ligne
Bonjour
la formule ne doit pas être la bonne car même après vidage du cache, le groupe 6 a toujours la visibilité de la liste. Mais elle reste bien cachée au groupe 4.
Vous avez une idée ? d'avance merci.
Hors ligne
if($pun_user['g_read_board'] == '0' || $pun_user['g_id'] == '4' || $pun_user['g_id'] == '6')
message($lang_common['No view']);
en remplacement du code au dessus ça devrait être bon
Dernière modification par adaur (21-10-2010 13:27:41)
Hors ligne
Merci beaucoup adaur
C'est impeccable. Est-ce qu'un résumé de la manoeuvre ne devrait pas être mis dans la partie documentation bidouilleurs > autres astuces ?
Ça complèterait le Enlever la liste des modérateurs d'un forum sur l'index des forums. Non ?
Hors ligne
Tout le monde peut apporter sa pierre à la documentation, je ne suis pas le seul à pouvoir la compléter
Nous ne faisons pas le travail à votre place mais nous prenons le temps de vous montrer le chemin. Merci de lire ce que l'on vous dit et de réfléchir avant de re-demander une explication.
Hors ligne
Tout le monde peut apporter sa pierre à la documentation, je ne suis pas le seul à pouvoir la compléter
Tout à fait.
Mais les utilisateurs ne sont pas forcément au courant. Peut-être un bandeau d'accueil ?
(de la même façon qu'il faut que je fasse depuis plusieurs semaines un bandeau pour la page mods, signalant la nouvelle politique…).
Life is a struggle, programming is a suffer.
Hors ligne
C'est déjà indiqué sur la page d'accueil de l'aide :
Vous êtes sur un espace de travail collaboratif, un wiki. Tous les membres peuvent modifier les pages de cette documentation en prenant soin de :
mais bon, encore faut-il que ce passage soit lu en effet.
Nous ne faisons pas le travail à votre place mais nous prenons le temps de vous montrer le chemin. Merci de lire ce que l'on vous dit et de réfléchir avant de re-demander une explication.
Hors ligne