temps d’installation si SPIP
et phpBB sont déja installés
: 10 minutes
licence : GNU/GPL
auteur de l’intégration SPIP :
Thomas Gassilloud http://thomas.pomeys.org
thomas.gassilloud@pomeys.org
site exemple : www.pomeys.org
version : 1.00 (21 juin 2004)
De nombreux sites ont besoin de restreindre l’accès tout
ou partie de leur contenu à certaines personnes identifiées. Le
problème se pose donc aussi pour SPIP qui
doit pouvoir gérer tout type de contenu. Dans ce cas, la restriction d’accès
doit pouvoir se gérer facilement grâce à l’interface d’administration pour
que le site reste vraiment collaboratif (ie que la technique ne soit pas une
barrière à la mise en place de contenu). La solution proposée n’est
certainement pas inviolable mais peux etre une utiliser pour obtenir une premier
niveau de sécurités.
NB : Ce script correspond à un cahier des charges assez particulier ou l’on
souhaitait bien différencier la base de données de restriction d’accès avec
celle des rédacteurs SPIP. Pour fusionner les
deux voir http://www.tunecity.net/fr_art_authentication_spip_phpbb=119.html D’autre
part, les pièces jointes dans IMG ne sont bien sur pas protégées.
Mise en place :
- Dans phpBB, créer les groupes adéquats en étant loggé en
administrateur. - Dans l’interface d’administration de SPIP,
créer un groupe de mots-clés nommé authentification par exemple sous SPIP
puis y ajouter le nom des groupes en mots clés. - Adapter le script ci dessous à la configuration de cotre site, en
particulier le numéro du groupe de mots clés d’authentification et le
répertoire ou trouver phpBB - Copier le script modifié au début des squelettes (fichiers *.html) SPIP
ou autres fichiers que vous voulez protéger - Supprimer la mise en cache de SPIP pour ce que vous voulez protéger, il
suffit de mettre le délai de mise à jour à 0 dans les fichiers *.php3
d’appel. Par exemple pour rubrique.php3
< ?php
$fond = « rubrique » ;
$delais = 0 ;
include (« inc-public.php3 ») ;
?>
Usage :
- Grâce à l’interface d’administration de SPIP,
les rédacteurs SPIP associe aux
articles, rubriques ou brèves un mot clé qui correspond au groupe qui
pourra accéder au contenu. - L’utilisateur s’enregistre à phpBB
grâce au formulaire du forum - L’administrateur l’ajoute aux groupes phpBB
correspondant au contenu qu’il souhaite lui rendre disponible - Lors de la première consultation, l’utilisateur s’identifie et le reste
pendant quelques jours. Grace à un cookie, la restriction est alors
transparente pour lui et ne nécessite pas qu’il se ré identifie à chaque
consultation de nouveau contenu.
Autre système possibilité 100% SPIP :
Script :
<BOUCLE100(MOTS)id_rubriqueid_groupe=2>
< ?php
// Mettez le répertoire d’installation de phpBB
$phpbb_root_path=’/home/admin/siteweb/forum/’ ;
// Mettez le groupe qui sera autorisé à parcourir les pages ou ce script sera intégré
$secure_against_group_name = ’#TITRE’ ;
define(’IN_PHPBB’, true) ;
include($phpbb_root_path.’extension.inc’) ;
include($phpbb_root_path.’common.’.$phpEx) ;
include($phpbb_root_path.’config.’.$phpEx) ;
$sql="SELECT * FROM « . $table_prefix . "config WHERE config_name = ’script_path’" ;
if ( !($result = $db->sql_query($sql)) )
die( »<B>Erreur :</B> Ne peux obtenir le script <BR>SQL : $sql") ;
if ($db->sql_numrows($result) == 0)
die("<B>Error :</B> L’info du script n’existe pas<BR>SQL : $sql") ;
$row = $db->sql_fetchrow($result) ;
$phpbb_script_path = $row[config_value] ;
//
// Début de la gestion de session
//
$userdata = session_pagestart($user_ip, PAGE_INDEX) ;
init_userprefs($userdata) ;
//
// Fin de la gestion de session
//
// Si l’utilisateur n’est pas loggé, le redirigé avec une page d’authentification
if( !$userdata[’session_logged_in’] )
header("Location : " . append_sid($phpbb_script_path . « login. » . $phpEx .
" ?redirect=" . $PHP_SELF)) ;
// Prendre le group_id
$sql="SELECT group_id FROM " . $table_prefix . « groups WHERE group_name = ’ » .
$secure_against_group_name . « ’ LIMIT 1 » ;
if ( !($result = $db->sql_query($sql)) )
die("<B>Erreur :</B> Ne peux pas obtenir des infos sur le nom du groupe<BR>SQL :
$sql") ;
if ($db->sql_numrows($result) == 0)
die(« <B>Erreur :</B> Le groupe <b>$secure_against_group_name</b> n’existe pas. ») ;
$row = $db->sql_fetchrow($result) ;
$secure_against_group_no = $row[group_id] ;
// Vérifier si l’utilisateur est membre du bon groupe.
$sql="SELECT * FROM « . $table_prefix . "user_group WHERE group_id=’" .
$secure_against_group_no . »’ AND user_id=’" . $userdata[user_id] . « ’ LIMIT 1 » ;
if ( !($result = $db->sql_query($sql)) )
die("<B>Erreur :</B> Ne peux pas obtenir les bonnes informations<BR>SQL :
$sql") ;
if ($db->sql_numrows($result) == 0)
die("<B>Désolé, accès non autorisé, vous devez etre un membre du groupe
’$secure_against_group_name’</B>") ;
// Si l’utilisateur a les bons droits, laissons lui continuer le chargement de la page
?>
</BOUCLE100>
Bonus :
Pour mettre un formulaire d’identification à l’intérieur de vos pages, vous
pouvez y insérer le script :
< ?php
define(’IN_PHPBB’, true) ;
$phpbb_root_path = ’../forum/’ ;
include($phpbb_root_path . ’extension.inc’) ;
include($phpbb_root_path . ’common.’.$phpEx) ;
$userdata = session_pagestart($user_ip, PAGE_INDEX) ;
init_userprefs($userdata) ;
if( $userdata[’session_logged_in’] )
echo(’deja loggé,<a href="http://www.pomeys.org/forum/login.php?logout=true">cliquer ici pour se déconnecter</a>’) ;
else
echo(’<form action="../forum/login.php" method="post"><input
type="text" name="username" size=« 25 »><br />
<input type="password" name="password" size=« 25 »><br />
<input type="submit" value=« connectez vous » name="login">
</form><a href="../forum/profile.php ?mode=register&agreed=true">obtenir des identifiants</a>’) ;
?>
Discussions par date d’activité
Une discussion
merci pour cette contrib, après quelques bidouillages ca marche nickel et chacun auteur peut lui meme restreindre l’accès a son article :)
Répondre à ce message
Ajouter un commentaire
Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :
Merci d’avance pour les personnes qui vous aideront !
Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.
Suivre les commentaires : |