Subversion Repositories Sites.tela-botanica.org

Compare Revisions

Ignore whitespace Rev 1092 → Rev 1093

/branches/actu_spip_2.1.2/plugins/connecteur_papyrus/config.inc.php
New file
0,0 → 1,15
<?php
 
$chemin_papyrus = '/home/greg/web/papyrus_trunk/';
$chemin_spip = $chemin_papyrus.'actu/';
$chemin_plugin = $chemin_spip.'/plugins/connecteur_papyrus/';
 
 
//Configuration de la table $param_auth (table de l'annuaire)
$nom_table = 'annuaire';
$nom_champ_id = 'id';
$nom_champ_mail = 'mail';
$nom_champ_mdp = 'mot_de_passe';
$type_cryptage = 'md5';
 
?>
/branches/actu_spip_2.1.2/plugins/connecteur_papyrus/authentification.php
New file
0,0 → 1,99
<?php
//Le test ci-dessous est nécessaire car le pipeline "affichage_final" considère que
//la page de login de spip (/ecrire) est en public. Or, l'éxécution de ces fonctions
//est problèmatique dans cet environnement.
 
if (!isset($_GET["page"]) || $_GET["page"]!="login") {
//Fonction d'affichage du formulaire d'authentification.
//Sera passé en paramètre du constructeur auth()
if (!function_exists(AUTH_formulaire_login)) {
function AUTH_formulaire_login ($username = null, $status = null, &$auth = null) {
$res ='<form id="form_connexion" class="form_identification" action="'.$url.'" method="post">
<fieldset>
<legend>Identifiez vous</legend>
<label for="username">Courriel : </label>
<input type="text" size="12" id="username" name="username" maxlength="80" tabindex="1" value="courriel" />
<label for="password">Mot de passe : </label>
<input type="password" size="12" id="password" name="password" maxlength="80" tabindex="2" value="mot de passe" />
<input type="submit" id="connexion" name="connexion" tabindex="3" value="ok" />
<p><a id="lien_inscription" href="/page:inscription">S\'inscrire...</a></p>
</fieldset>
</form>' ;
echo $res;
}
}
//Fonction principale de la classe qui doit connecter à papyrus ou afficher le formulaire de connexion
function pap_connecteur_connecter($texte) {
//Les variables du fichier de configuration doivent être rappelée par GLOBAL;
global $chemin_papyrus, $chemin_spip, $chemin_plugin, $nom_table, $nom_champ_mail, $nom_champ_id, $nom_champ_mdp, $type_cryptage;
//Inclusions des fichier de configuration de papyrus
include_once $chemin_papyrus.'papyrus/configuration/pap_config_avancee.inc.php' ;
include_once $chemin_papyrus.'papyrus/configuration/pap_config.inc.php' ;
set_include_path($_SERVER['DOCUMENT_ROOT'].PATH_SEPARATOR.
$_SERVER['DOCUMENT_ROOT'].DIRECTORY_SEPARATOR.PAP_CHEMIN_API_PEAR.PATH_SEPARATOR.
get_include_path().PATH_SEPARATOR.
$chemin_plugin."pap_includes/");
//Inclusion des fichiers pear
include_once 'Auth.php' ;
include_once 'DB.php' ;
include_once 'Net/URL.php' ;
//Début du buffer pour récupérer la sortie du formulaire et l'afficher dans le <body> et non n'importe où
ob_start();
$NetUrl = new Net_URL();
$url = $NetUrl->getUrl();
 
// Connection à la base de donnée
$GLOBALS['db'] =& DB::connect(PAP_DSN);
 
//voir le fichier config.inc.php pour configurer les variables
$param_auth = array ('dsn' => PAP_DSN,
'table' => $nom_table,
'usernamecol' => $nom_champ_mail,
'passwordcol' => $nom_champ_mdp,
'cryptType' => $type_cryptage,
'db_fields' => '*');
 
// ATTENTION : bien définir le nom de la session avec la fonction PHP et le placer avant l'instanciation de l'objet AUTH!
session_name('pap-annuaire');
$GLOBALS['identification'] = new Auth('DB', $param_auth, "AUTH_formulaire_login");
$GLOBALS['identification']->getAuth();
$GLOBALS['identification']->setAdvancedSecurity(PAP_AUTH_SECURITE_AVANCEE);
// On débute une session
$GLOBALS['identification']->start();
// On teste si la variable logout existe, si oui, on deconnecte
if (isset($_REQUEST['deconnexion']) || isset($_REQUEST['logout']) || $GLOBALS['identification']->checkAuth() == false) {
// On place les cookies avec une durée dépassée
setcookie('spip_session', '', time() - 3600, '/actu/') ;
setcookie('spip_admin', '', time() - 3600, '/actu/') ;
$GLOBALS['identification']->logout();
$NetUrl->removeQueryString('logout');
}
 
if ($GLOBALS['identification']->checkAuth()) {
//echo "inclusion spip_cookie";
include_once 'spip_cookie.php' ;
} else {
//On récupère la valeur de la fonction AUTH_formulaire_login dans le buffer
$buffer = ob_get_contents();
//Ajout du texte récupéré au corps de la page Web.
$texte = str_replace('<!-- PAPCONNECTEUR -->','<div id="zone-connexion">'.$buffer.'</div>', $texte);
}
//Nettoyage du buffer
ob_end_clean();
return $texte;
}
}
?>
/branches/actu_spip_2.1.2/plugins/connecteur_papyrus/pap_includes/spip_cookie.php
New file
0,0 → 1,131
<?php
/*vim: set expandtab tabstop=4 shiftwidth=4: */
// +------------------------------------------------------------------------------------------------------+
// | PHP version 4.1 |
// +------------------------------------------------------------------------------------------------------+
// | Copyright (C) 2004 Tela Botanica (accueil@tela-botanica.org) |
// +------------------------------------------------------------------------------------------------------+
// | This library is free software; you can redistribute it and/or |
// | modify it under the terms of the GNU Lesser General Public |
// | License as published by the Free Software Foundation; either |
// | version 2.1 of the License, or (at your option) any later version. |
// | |
// | This library is distributed in the hope that it will be useful, |
// | but WITHOUT ANY WARRANTY; without even the implied warranty of |
// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
// | Lesser General Public License for more details. |
// | |
// | You should have received a copy of the GNU Lesser General Public |
// | License along with this library; if not, write to the Free Software |
// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
// +------------------------------------------------------------------------------------------------------+
// CVS : $Id: spip_cookie.php,v 1.1 2004/07/20 10:01:22 alex Exp $
/**
* Envoie de cookie pour SPIP à partir d'une inscription
*
* Envoie de cookie pour SPIP à partir d'une inscription
*
*@package inscription
//Auteur original :
*@author Alexandre Granier <alexandre@tela-botanica.org>
//Autres auteurs :
*@author Aucun
*@copyright Tela-Botanica 2000-2004
*@version $Revision: 1.1 $ $Date: 2004/07/20 10:01:22 $
// +------------------------------------------------------------------------------------------------------+
*/
// Ce fichier doit être placé à la racine de SPIP
// Il doit être appellé dans chaque squelette
// après l'ouverture d'une session, si on ouvre une session
 
// Il faut récupérer une valeur userid, c'est à dire
// loggué l'utilisateur par exemple avec PEAR
define ('SPIP_CHEMIN', 'actu/') ;
 
 
// Ajouter une session pour l'auteur specifie
// Modifié pour éviter un Warning
if (!defined ('CHEMIN_SPIP')) {
define ('CHEMIN_SPIP', '') ;
}
 
function ajouter_session_($auteur, $id_session, $id_auteur, $alea)
{
global $chemin_spip;
$fichier_session = $chemin_spip.'tmp/sessions/session_'.$id_auteur.'_'.md5($id_session.' '.$alea).'.php3';
//$fichier_session = CHEMIN_SPIP.'ecrire/data/session_'.$id_auteur.'_'.$id_session.'.php3';
$vars = array('id_auteur', 'nom', 'login', 'email', 'statut', 'lang' /*, 'ip_change'*/, 'hash_env' );
$auteur['hash_env'] = hash_env_() ;
$texte = "<"."?php\n";
reset($vars);
while (list(, $var) = each($vars)) {
$texte .= "\$GLOBALS['auteur_session']['$var'] = '".addslashes($auteur[$var])."';\n";
}
$texte .= "?".">\n";
if ($f = fopen($fichier_session, "wb")) {
fputs($f, $texte);
fclose($f);
}
}
 
function hash_env_()
{
global $HTTP_SERVER_VARS;
return md5($HTTP_SERVER_VARS['REMOTE_ADDR'] . $HTTP_SERVER_VARS['HTTP_USER_AGENT']);
}
 
 
// On recherche userid
//echo var_dump($GLOBALS['identification']);
//exit();
 
$userid = $GLOBALS['identification']->getAuthData($nom_champ_id);
if ($userid != 0) {
// recherche du login dans la table spip_auteur
// Soit c'est l'email, soit c'est un nom wiki
mysql_select_db(PAP_BDD_NOM) ;
$resultat_mail = mysql_query ('SELECT '.$nom_champ_mail.', '.$nom_champ_id.' FROM '.$nom_table.' WHERE '.$nom_champ_id .'='.$userid)
or die ("Echec requete<br />".mysql_error());
$ligne_mail = mysql_fetch_object ($resultat_mail) ;
$l = mysql_connect(PAP_BDD_SERVEUR, PAP_BDD_UTILISATEUR, PAP_BDD_MOT_DE_PASSE) ;
mysql_select_db('plantnet', $l) ;
$requete_login = 'SELECT login, id_auteur FROM plantnet.spip_auteurs WHERE email = "'.$ligne_mail->$nom_champ_mail.'"' ;
$resultat_login = mysql_query($requete_login, $l) or die ('Echec'.mysql_error()) ;
$ligne_login = mysql_fetch_object($resultat_login) ;
echo "setcookie ".PAP_AUTH_SESSION_DUREE;
setcookie('spip_admin', '@'.$ligne_login->login, (int)PAP_AUTH_SESSION_DUREE, '/actu/') ;
exit();
$id = $ligne_login->id_auteur ;
$query = 'SELECT * FROM spip_auteurs WHERE id_auteur = '.$ligne_login->id_auteur;
$result = mysql_query($query, $l);
$GLOBALS['auteur_session'] = @mysql_fetch_array($result) ;
$GLOBALS['auteur_session']['statut'] = '1comite';
$GLOBALS['auteur_session']['lang'] = 'fr';
 
// recherche de l'alea éphémère dans spip_meta
$requete_meta = 'SELECT nom,valeur FROM spip_meta' ;
$resultat_meta = mysql_query($requete_meta) or die ('echec') ;
while ($ligne_meta = mysql_fetch_object($resultat_meta) ) {
if ($ligne_meta->nom == 'alea_ephemere') {
$alea = $ligne_meta->valeur ;
}
}
if (!isset ($HTTP_COOKIE_VARS['spip_session'])) {
$id_session = $id.'_'.(md5 (uniqid (rand ())));
setcookie('spip_session', $id_session, (int)PAP_AUTH_SESSION_DUREE, '/actu/') ;
} else {
$id_session = preg_replace('/[0-9]+_/', $id.'_', $HTTP_COOKIE_VARS['spip_session']) ;
setcookie('spip_session', $id_session, (int)PAP_AUTH_SESSION_DUREE, '/actu/') ;
}
ajouter_session_($GLOBALS['auteur_session'], $id_session, $ligne_login->id_auteur, $alea) ;
}
?>
/branches/actu_spip_2.1.2/plugins/connecteur_papyrus/README.TXT
New file
0,0 → 1,8
Le plugin Connecteur papyrus n'est pas utilisŽ en production.
Il me semble que je l'ai vu marcher, mais il faudrait vŽrifier.
 
Il vise a dŽplacer dans un plugin la crŽation du cookie que l'on fait
actuellement dans le code de spip 1.9 par une inclusion de fichier.
 
Cependant, il me semble que je n'ai pas trouvŽ le bon pipeline pour
faire fonctionner le plugin.
/branches/actu_spip_2.1.2/plugins/connecteur_papyrus/back.plugin.xml
New file
0,0 → 1,15
<plugin>
<nom>Connecteur Papyrus</nom>
<auteur>Greg - Tela Botanica 2010</auteur>
<version>1.0.1</version>
<etat>dev</etat>
<description>Lier l'authentification avec papyrus</description>
<prefix>pap_connecteur</prefix>
<options>config.inc.php</options>
<pipeline>
<nom>affichage_final</nom>
<action>connecter</action>
<inclure>authentification.php</inclure>
</pipeline>
</plugin>
 
/branches/actu_spip_2.1.2/plugins/connecteur_papyrus/plugin.xml
New file
0,0 → 1,15
<plugin>
<nom>Connecteur Papyrus</nom>
<auteur>Greg - Tela Botanica 2010</auteur>
<version>1.0.1</version>
<etat>dev</etat>
<description>Lier l'authentification avec papyrus</description>
<prefix>pap_connecteur</prefix>
<options>config.inc.php</options>
<pipeline>
<nom>affichage_final</nom>
<action>connecter</action>
<inclure>authentification.php</inclure>
</pipeline>
</plugin>