SPIP-Contrib

SPIP-Contrib

عربي | Deutsch | English | Español | français | italiano

273 Plugins, 191 contribs sur SPIP-Zone, 33 visiteurs en ce moment

Accueil du site > Auteurs, authentification et autorisations > Authentification (accès protégés) avant SPIP 1.9 > Gestion d’une restriction d’accès avec une base de données du type (...)

Gestion d’une restriction d’accès avec une base de données du type phpBB

14 avril 2005 – par Thomas – <blink style='color:red;'>public|spip|ecrire:commentaire</blink>

2 votes

Gestion d’une restriction d’accès sous SPIP grace à une base de données du type phpBB.

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>’) ;

 ?>

Retour en haut de la page

Vos commentaires

Répondre à cet article

Qui êtes-vous ?

Pour afficher votre trombine avec votre message, enregistrez-la d'abord sur gravatar.com (gratuit et indolore) et n'oubliez pas d'indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici Les choses à faire avant de poser une question (Prolégomènes aux rapports de bugs. )
Ajouter un document

Retour en haut de la page

Ça discute par ici

  • Zpip-dist en HTML5

    15 juin 2010 – 10 <blink style='color:red;'>public|spip|ecrire:commentaires</blink>

    Une surcharge des squelettes Zpip-dist qui tire parti des nouvelles balises offertes par la spécification HTML5. Attention, ce plugin n’est plus compatible avec les nouvelles versions de Zpip, qui a connu plusieurs incompatibilités de nomenclature (...)

  • Une licence pour un article

    18 avril 2007 – 25 <blink style='color:red;'>public|spip|ecrire:commentaires</blink>

    Sur une idée originale de erational, voici un plugin permettant de lier une licence à un article.

  • Plugin Parrainage

    6 novembre 2011 – <blink style='color:red;'>public|spip|ecrire:commentaire</blink>

    Permettre aux utilisateurs d’inviter leurs contacts à s’inscrire sur le site. Description Vous connaissez le web moderne et son cortège d’applis toujours en version « beta » et de buzz sur le dernier réseau à la mode ? Vous voulez vous aussi vous y (...)

  • Formulaire de contact libre

    27 avril 2011 – 36 <blink style='color:red;'>public|spip|ecrire:commentaires</blink>

    Dans SPIP il n’y a pas un formulaire de contact, mais autant de formulaires de contact que d’auteurs. Cette phrase de Romy, dans son article Une page de contact dans mon SPIP, pointe un petit manque de SPIP. La possibilité d’insérer rapidement un (...)

  • Plugin Mot de Passe Compliqué

    2 novembre 2007 – 16 <blink style='color:red;'>public|spip|ecrire:commentaires</blink>

    Ce plugin ajoute un testeur de complexité de mot de passes dans les formulaires de choix de mot de passe de SPIP.