Skip to content
Extraits de code Groupes Projets
Valider 1685f7ac rédigé par cerdic's avatar cerdic
Parcourir les fichiers

refonte du formulaire de login en formulaire dynamique CVT (charger/verifier/traiter)

syntaxe #FORMULAIRE_LOGIN{url,login,prive}
les #LOGIN_PUBLIC et #LOGIN_PRIVE sont conserves et mappes sur #FORMULAIRE_LOGIN
auth_xx est appelee avec login,pass,passmd5,passmd5next pour eviter les request sauvage (mais les _request marcheront encore car pas de changement des input sur les md5)
il faut verifier que le login ldap reste fonctionnel
cas de d'authent http reste a traiter, et l'absence de cookie acceptee par le navigateur aussi
parent 999038e5
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -17,6 +17,7 @@ dist/formulaires/editer_rubrique.php -text ...@@ -17,6 +17,7 @@ dist/formulaires/editer_rubrique.php -text
dist/formulaires/editer_site.html -text dist/formulaires/editer_site.html -text
dist/formulaires/editer_site.php -text dist/formulaires/editer_site.php -text
dist/formulaires/editer_site_fonctions.php -text dist/formulaires/editer_site_fonctions.php -text
dist/formulaires/login.php -text
dist/formulaires/login_forum_abo.html -text dist/formulaires/login_forum_abo.html -text
dist/formulaires/logo_auteur.html -text dist/formulaires/logo_auteur.html -text
dist/formulaires/oubli/charger.php -text dist/formulaires/oubli/charger.php -text
...@@ -222,6 +223,7 @@ dist/images/sans-heure.gif -text ...@@ -222,6 +223,7 @@ dist/images/sans-heure.gif -text
dist/images/searching.gif -text dist/images/searching.gif -text
dist/images/secteur-12.gif -text dist/images/secteur-12.gif -text
dist/images/secteur-24.gif -text dist/images/secteur-24.gif -text
dist/images/securise.gif -text
dist/images/set-ecran-etroit.png -text dist/images/set-ecran-etroit.png -text
dist/images/set-ecran.png -text dist/images/set-ecran.png -text
dist/images/site-24.gif -text dist/images/site-24.gif -text
...@@ -663,6 +665,7 @@ ecrire/inc/gadgets.php -text ...@@ -663,6 +665,7 @@ ecrire/inc/gadgets.php -text
ecrire/inc/grouper_mots.php -text ecrire/inc/grouper_mots.php -text
ecrire/inc/headers.php -text ecrire/inc/headers.php -text
ecrire/inc/iconifier.php -text ecrire/inc/iconifier.php -text
ecrire/inc/identifier_login.php -text
ecrire/inc/import_0_0.php -text ecrire/inc/import_0_0.php -text
ecrire/inc/import_1_2.php -text ecrire/inc/import_1_2.php -text
ecrire/inc/import_1_3.php -text ecrire/inc/import_1_3.php -text
......
#CACHE{0}
#HTTP_HEADER{"Cache-Control: no-store, no-cache, must-revalidate"} #HTTP_HEADER{"Cache-Control: no-store, no-cache, must-revalidate"}
#HTTP_HEADER{"Pragma: no-cache"} #HTTP_HEADER{"Pragma: no-cache"}
[(#ENV{echec_cookie}) <div class='formulaire_spip formulaire_login formfx'>
<fieldset class="reponse_formulaire"> <br class='spacer' />
<legend><:avis_erreur_cookie:></legend> [<p class="formulaire_message">(#ENV**{_deja_loge})</p>]
<p><:login_cookie_oblige:></p> [<p class="formulaire_message">(#ENV**{message_ok})</p>]
<p><:login_cookie_accepte:></p> [<p class='formulaire_erreur'>(#ENV**{message_erreur})</p>]
</fieldset>] [(#ENV{editable})
<form id='formulaire_login' method='post' action='#ENV{action}' enctype='multipart/form-data'>
[(#ENV{echec_visiteur}) [(#REM) declarer les hidden qui declencheront le service du formulaire
<fieldset class="reponse_formulaire"> parametre : url d'action ]
<legend><:avis_erreur_visiteur:></legend> #ACTION_FORMULAIRE{#ENV{action}}
<p><:texte_erreur_visiteur:></p> <fieldset><legend><:form_forum_identifiants:></legend>
</fieldset>] <span id="spip_logo_auteur">#ENV*{_logo,''}</span>
<ol class="formfx">
<script type="text/javascript" src="#EVAL{_DIR_JAVASCRIPT}md5.js"> </script> <li class="editer_login obligatoire">
<form id="login[_(#ENV{login})]" <label for="var_login"><:login_login2:></label>
action="[(#ENV{action2})]" <input class='text' type='text' name='var_login' id='var_login' class='forml' value="[(#ENV**{var_login})]" size='40' />
method="post"[(#ENV{source}|=={spip}|?{' ',''}) [<span class='erreur'>(#ENV**{erreurs}|table_valeur{var_login})</span>]
onsubmit='if (this.session_password.value) { </li>
this.session_password_md5.value = calcMD5("[(#ENV{alea_actuel})]" + this.session_password.value); <li class="editer_password obligatoire">
this.next_session_password_md5.value = calcMD5("[(#ENV{alea_futur})]" + this.session_password.value); <label for="password"><:login_pass2:></label>
this.session_password.value = ""; <input class='password' type='password' name='password' id='password' value="" size='40' />
return true; <em id='pass_securise'[(#ENV{_alea_actuel}|?{'',' '})style='display:none;']><img src='#EVAL{_DIR_IMG_PACK}securise.gif' width='16' height='16' alt='<:login_securise:>' /></em>
}']> [<span class='erreur'>(#ENV**{erreurs}|table_valeur{password})</span>]
<fieldset> <span class='details'>&#91;<a href="#URL_PAGE{spip_pass}" target="spip_pass" onclick="javascript:window.open(this.href, 'spip_pass', 'scrollbars=yes, resizable=yes, width=480, height=330'); return false;"><:login_motpasseoublie:></a>&#93;</span>
<legend><:form_forum_identifiants:></legend> </li>
[<p class="reponse_formulaire">(#ENV*{erreur})</p>] [(#ENV{rester_connecte})
<li><input class='checkbox' type="checkbox" name="session_remember" id="session_remember" value="oui" [(#ENV**{cnx}|?{' '})checked="checked"]
<span id="spip_logo_auteur">[(#INCLURE{fond=formulaires/logo_auteur}{id_auteur}|inserer_attribut{alt,#ENV{login_alt}})]</span> class="intact" onchange="this.className='';" />
<label class='nofx' for="session_remember"><:login_rester_identifie:></label></li>
[<p><label for="var_login"><:login_login2:></label>(#ENV{login}|?{'',' '})<br /> ]
<input type="text" class="forml" id="var_login" name="var_login" value="" size="40" /></p>] </ol>
<p class="spip_bouton"><input type="submit" value="<:bouton_valider:>" /></p>
[ </fieldset>
<input type="hidden" name="session_login_hidden" value="(#ENV{login})" />
<p id='login_securise' style='display: none;'><:login_login:>&nbsp;<strong>[(#ENV{login_alt})]</strong><br />&#91;<a href='[(#ENV{action2}
|parametre_url{cookie_admin,non}
|parametre_url{url,#ENV*{url}}
|parametre_url{retour,#ENV*{self}})]'><:login_autre_identifiant:></a>&#93;</p>
<script type="text/javascript"><!--
if (l=document.getElementById('login_securise')) l.style.display='';
//--></script>
<noscript>
<div id='login_non_securise'>
<p class="reponse_formulaire"><:login_non_securise:> <a href="[(#ENV{action})]"><:login_recharger:></a>.</p>
<p><label for="session_login"><:login_login2:></label><br />
<input type="text" class="forml" name="session_login" id="session_login"[ value="(#ENV{login})"] size="40" /></p>
</div>
</noscript>
]
[(#ENV{login}|?{'',' '})<div id='pass_ajax' style='display: none;'>]
<p><label[ for="var_login_(#ENV{login})"]><:login_pass2:></label><br />
<input type="password" class="forml" name="session_password"[ id="var_login_(#ENV{login})"] value="" size="20" /><br />
&#91;<a href="#URL_PAGE{spip_pass}" target="spip_pass" onclick="javascript:window.open(this.href, 'spip_pass', 'scrollbars=yes, resizable=yes, width=480, height=330'); return false;"><:login_motpasseoublie:></a>&#93;
</p>
[(#ENV{rester_connecte})
<p><input type="checkbox" name="session_remember" id="session_remember[_(#ENV{login})]" value="oui"[(#ENV*{prefs}|filtre_rester_connecte)checked="checked"]
class="intact" onchange="this.className='';" />
<label for="session_remember[_(#ENV{login})]"><:login_rester_identifie:></label></p>
]
[(#ENV{login}|?{'',' '})</div>]
<input type="hidden" name="session_password_md5" value="" />
<input type="hidden" name="next_session_password_md5" value="" />
<input type="hidden" name="essai_login" value="oui" />
<input type="hidden" name="url" value="[(#ENV{url})]" />
<input type="hidden" name="url_echec" value="[(#SELF)]" />
<p class="spip_bouton"><input type="submit" value="<:bouton_valider:>" /></p>
</fieldset>
</form> </form>
]
<script type="text/javascript"><!-- [(#REM) en cas d'absence de cookie, on represente le formulaire alternatif
if (l=document.getElementById('var_login[_(#ENV{login})]')) l.focus();
--></script>[
<form action="(#ENV{auth_http})" method="get">[ <form action="(#ENV{auth_http})" method="get">[
(#ENV{auth_http}|form_hidden) (#ENV{auth_http}|form_hidden)
] ]
...@@ -87,44 +49,48 @@ if (l=document.getElementById('var_login[_(#ENV{login})]')) l.focus(); ...@@ -87,44 +49,48 @@ if (l=document.getElementById('var_login[_(#ENV{login})]')) l.focus();
<p class="spip_bouton"><input type="submit" value="<:login_sans_cookiie:>"/></p></div> <p class="spip_bouton"><input type="submit" value="<:login_sans_cookiie:>"/></p></div>
</fieldset> </fieldset>
</form> </form>
] ]
[(#ENV{login}|?{'',' '}) </div>
[(#REM) javascript qui gere la securite du login en evitant de faire circuler le pass en clair]
<script type="text/javascript" src="#EVAL{_DIR_JAVASCRIPT}md5.js"></script>
<script type='text/javascript'> <script type='text/javascript'>
var alea_actuel; var alea_actuel='#ENV{_alea_actuel,''}';
var alea_futur; var alea_futur='#ENV{_alea_futur,''}';
var login; var login='#ENV{var_login,''}';
var informe_auteur_en_cours = false; var informe_auteur_en_cours = false;
function informe_auteur(c){ function informe_auteur(c){
eval('c = '+c); // JSON eval('c = '+c); // JSON
if (c) { if (c) {
alea_actuel = c.alea_actuel; alea_actuel = c.alea_actuel;
alea_futur = c.alea_futur; alea_futur = c.alea_futur;
$('input#session_login_hidden').attr('value',c.login); jQuery('input#session_login_hidden').attr('value',c.login);
// indiquer le cnx si on n'y a pas touche // indiquer le cnx si on n'y a pas touche
$('input#session_remember.intact') jQuery('input#session_remember.intact')
.attr('checked',c.cnx=='1'?'checked':''); .attr('checked',c.cnx=='1'?'checked':'');
$('#spip_logo_auteur').html(c.logo); jQuery('#spip_logo_auteur').html(c.logo);
jQuery('#pass_securise').show();
} else { } else {
$('#spip_logo_auteur').html(''); jQuery('#spip_logo_auteur').html('');
} }
informe_auteur_en_cours = false; informe_auteur_en_cours = false;
} }
function calcule_md5_pass(pass){ function calcule_md5_pass(pass){
$('input\u005b@name=session_password\u005d').attr('value',''); if (alea_actuel) {
$('form#login').attr('action','#ENV{pose_cookie}'); jQuery('input[@name=password]').attr('value','');
$('input\u005b@name=session_password_md5\u005d').attr('value',calcMD5(alea_actuel + pass)); jQuery('input[@name=session_password_md5]').attr('value',calcMD5(alea_actuel + pass));
$('input\u005b@name=next_session_password_md5\u005d').attr('value',calcMD5(alea_futur + pass)); jQuery('input[@name=next_session_password_md5]').attr('value',calcMD5(alea_futur + pass));
}
} }
$('form#login #pass_ajax').show().after('<input type="hidden" name="session_login_hidden" id="session_login_hidden" value="" />'); function actualise_auteur(){
$('#var_login').blur(function(){ if (login!=jQuery('#var_login').attr('value')) {
if (login!=$(this).attr('value')) { login = jQuery('#var_login').attr('value');
login = $(this).attr('value');
informe_auteur_en_cours = true; informe_auteur_en_cours = true;
$.get('#URL_ACTION{informer_auteur}',{var_login:$(this).attr('value')},informe_auteur); $.get('#URL_ACTION{informer_auteur}',{var_login:login},informe_auteur);
} }
}); }
$('form#login').submit(function(){ jQuery('#var_login').change(function(){actualise_auteur();});
pass = $('input\u005b@name=session_password\u005d').attr('value'); jQuery('form#formulaire_login').submit(function(){
pass = jQuery('input[@name=password]').attr('value');
// ne jamais laisser le pass circuler en clair // ne jamais laisser le pass circuler en clair
if (pass) { if (pass) {
if (alea_actuel) if (alea_actuel)
...@@ -136,26 +102,23 @@ $('form#login').submit(function(){ ...@@ -136,26 +102,23 @@ $('form#login').submit(function(){
// si l'information est en cours, retenter sa chance // si l'information est en cours, retenter sa chance
if (informe_auteur_en_cours) { if (informe_auteur_en_cours) {
setTimeout(function(){$('form#login').submit();},300); setTimeout(function(){jQuery('form#formulaire_login').submit();},300);
return false; return false;
} }
// sinon lancer une demande // sinon lancer une demande
informe_auteur_en_cours = true; informe_auteur_en_cours = true;
$.get('#URL_ACTION{informer_auteur}',{var_login:$('#var_login').attr('value')},function(c) { $.get('#URL_ACTION{informer_auteur}',{var_login:jQuery('#var_login').attr('value')},function(c) {
informe_auteur(c); informe_auteur(c);
// le formulaire sera soumis apres reception des info auteur // le formulaire sera soumis apres reception des info auteur
$('form#login').submit(); jQuery('form#formulaire_login').submit();
}); });
// ou dans un delai maxi de 5s (pour eviter le blocage a cette etape) // ou dans un delai maxi de 5s (pour eviter le blocage a cette etape)
// mais sans le pass, ce qui fait retomber sur le scenario de repli du login en 2 passes
setTimeout(function(){ setTimeout(function(){
$('input\u005b@name=session_password\u005d').attr('value',''); jQuery('form#formulaire_login').submit();
$('form#login').submit(); },5000);
},3000);
return false; return false;
} }
} }
}); });
</script> </script>
] \ No newline at end of file
<?php
/***************************************************************************\
* SPIP, Systeme de publication pour l'internet *
* *
* Copyright (c) 2001-2008 *
* Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
* *
* Ce programme est un logiciel libre distribue sous licence GNU/GPL. *
* Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
\***************************************************************************/
if (!defined("_ECRIRE_INC_VERSION")) return; #securite
include_spip('base/abstract_sql');
spip_connect();
function formulaires_login_charger_dist($cible="",$login="",$prive=null){
$auteur = array();
$login = $login ? $login : _request('var_login');
if (is_null($prive)){
$parse = parse_url($cible);
$prive = strncmp(substr($parse['path'],-strlen(_DIR_RESTREINT_ABS)), _DIR_RESTREINT_ABS, strlen(_DIR_RESTREINT_ABS))==0;
}
// Le login est memorise dans le cookie d'admin eventuel
if (!$login) {
if (isset($_COOKIE['spip_admin']) && preg_match(",^@(.*)$,", $_COOKIE['spip_admin'], $regs))
$login = $regs[1];
}
else if ($login == '-1'){
$login = '';
}
if ($login){
include_spip('inc/identifier_login');
$auteur = informer_login($login);
}
// Ne pas proposer de "rester connecte quelques jours"
// si la duree de l'alea est inferieure a 12 h (valeur par defaut)
$rester_connecte = (_RENOUVELLE_ALEA < 12*3600) ? '' : ' ';
$valeurs = array(
#'auth_http' => $auth_http,
'var_login' => $login,
'rester_connecte' => $rester_connecte,
'_logo' => isset($auteur['logo'])?$auteur['logo']:'',
'cnx' => isset($auteur['cnx'])?$auteur['cnx']:'',
'_alea_actuel' => isset($auteur['alea_actuel'])?$auteur['alea_actuel']:'',
'_alea_futur' => isset($auteur['alea_futur'])?$auteur['alea_futur']:'',
);
$valeurs['_hidden'] =
'<input type="hidden" name="session_password_md5" value="" />'
. '<input type="hidden" name="next_session_password_md5" value="" />'
. '<input type="hidden" name="session_login_hidden" id="session_login_hidden" value="" />';
// Si on est connecte, envoyer vers la destination
// si on en a le droit, et sauf si on y est deja
verifier_visiteur();
$editable = false;
if (_request('var_erreur') OR !isset($GLOBALS['visiteur_session']['id_auteur']))
$editable = true;
if ($prive) {
include_spip('inc/autoriser');
$loge = autoriser('ecrire');
} else {
$loge = ($visiteur_session['auth'] != '');
}
if ($loge) {
// on est a destination ?
if ($cible == self())
$editable = false;
else {
// sinon on y va
include_spip('inc/headers');
$valeurs['_deja_loge'] =
"<a href='$cible'>" . _T('login_par_ici') . "</a>"
. redirige_formulaire($cible)
;
}
}
return array($editable,$valeurs);
}
function formulaires_login_verifier_dist($cible="",$login="",$prive=null){
global $ignore_auth_http;
if (is_null($prive)){
$parse = parse_url($cible);
$prive = strncmp(substr($parse['path'],-strlen(_DIR_RESTREINT_ABS)), _DIR_RESTREINT_ABS, strlen(_DIR_RESTREINT_ABS))==0;
}
$erreurs = array();
$session_login = _request('var_login');
$session_password = _request('password');
$session_md5pass = _request('session_password_md5');
$session_md5next = _request('next_session_password_md5');
// en cas d'echec de cookie, inc_auth a renvoye vers le script de
// pose de cookie ; s'il n'est pas la, c'est echec cookie
// s'il est la, c'est probablement un bookmark sur bonjour=oui,
// et pas un echec cookie.
/*if (_request('var_echec_cookie'))
$echec_cookie = ($_COOKIE['spip_session'] != 'test_echec_cookie');
else $echec_cookie = '';*/
if ($echec_cookie){
$erreurs['message_erreur'] = "echec cookie ";
/*
[(#ENV{echec_cookie})
<fieldset class="reponse_formulaire">
<legend><:avis_erreur_cookie:></legend>
<p><:login_cookie_oblige:></p>
<p><:login_cookie_accepte:></p>
</fieldset>]*/
}
#$pose_cookie = generer_url_action('cookie',"",false,true);
$auth_http = '';
if ($echec_cookie AND !$ignore_auth_http) {
if (($GLOBALS['flag_sapi_name']
AND preg_match(",apache,i", @php_sapi_name()))
OR preg_match(",^Apache.* PHP,", $_SERVER['SERVER_SOFTWARE']))
$auth_http = $pose_cookie;
}
// Attention dans le cas 'intranet' la proposition de se loger
// par auth_http peut conduire a l'echec.
if (isset($_SERVER['PHP_AUTH_USER']) AND isset($_SERVER['PHP_AUTH_PW']))
$auth_http = '';
if ($session_login) {
$row = sql_fetsel('*', 'spip_auteurs', "login=" . sql_quote($session_login));
// Retrouver ceux qui signent de leur nom ou email
if (!$row AND !spip_connect_ldap()) {
$row = sql_fetsel('*', 'spip_auteurs', "(nom = " . sql_quote($session_login) . " OR email = " . sql_quote($session_login) . ") AND login<>'' AND statut<>'5poubelle'");
if ($row) {
$login_alt = $session_login; # afficher ce qu'on a tape
$session_login = $row['login'];
}
}
if ((!$row AND !spip_connect_ldap()) OR
($row['statut'] == '5poubelle') OR
(($row['source'] == 'spip') AND $row['pass'] == '')) {
$erreurs['message_erreur'] = _T('login_identifiant_inconnu',
array('login' => htmlspecialchars($session_login)));
$row = array();
$session_login = '';
include_spip('inc/cookie');
spip_setcookie("spip_admin", "", time() - 3600);
} else {
// on laisse le menu decider de la langue
unset($row['lang']);
}
$identifier_login = charger_fonction('identifier_login','inc');
if (!$identifier_login($session_login,$session_password,$session_md5pass,$session_md5next)){
$erreurs['password'] = _T('login_erreur_pass');
}
else {
# login ok
# verifier si on a pas affaire a un visiteur qui essaye de se loge sur ecrire/
if ($prive) {
include_spip('inc/autoriser');
verifier_visiteur();
if (!autoriser('ecrire')){
$erreurs['message_erreur'] = "<h1>"._T('avis_erreur_visiteur')."</h1>"
. "<p>"._T('texte_erreur_visiteur')."</p>"
. "<p class='retour'>[<a href='".generer_url_action('logout','logout=prive&url='.urlencode(self()))."'>"._T('icone_deconnecter')."</a>]</p>";
}
}
}
} else {
# pas de login saisi !
$erreurs['message_erreur'] = _T('login_identifiant_inconnu',
array('login' => htmlspecialchars($login)));
}
return $erreurs;
}
function formulaires_login_traiter_dist($cible="",$login="",$prive=null){
if (is_null($prive)){
$parse = parse_url($cible);
$prive = strncmp(substr($parse['path'],-strlen(_DIR_RESTREINT_ABS)), _DIR_RESTREINT_ABS, strlen(_DIR_RESTREINT_ABS))==0;
}
$message = '';
$auth = charger_fonction('auth','inc');
$auth();
// Si on se connecte dans l'espace prive,
// ajouter "bonjour" (repere a peu pres les cookies desactives)
if ($prive)
$cible = parametre_url($cible, 'bonjour', 'oui', '&');
if ($cible) {
$cible = parametre_url($cible, 'var_login', '', '&');
}
/* cible est fourni par la balise si on veut vraiment etre redirige
else {
if ($cible = parametre_url($action,'url'))
$cible = $cible;
else $cible = generer_url_ecrire();
}*/
// Si on est connecte, envoyer vers la destination
if ($cible
AND ($cible!=self())) {
if (!headers_sent() AND !$_GET['var_mode']) {
include_spip('inc/headers');
$message .= redirige_formulaire($cible);
} else {
$message .= "<a href='$cible'>" .
_T('login_par_ici') .
"</a>";
}
}
return $message;
}
?>
dist/images/securise.gif

409 octets

#CACHE{0}
#FILTRE{compacte_head}
[(#REM) [(#REM)
Eviter les boutons d'admin sur la page de login Eviter les boutons d'admin sur la page de login
] ]
...@@ -11,26 +13,35 @@ ...@@ -11,26 +13,35 @@
<meta name="generator" content="SPIP[ (#SPIP_VERSION)]" /> <meta name="generator" content="SPIP[ (#SPIP_VERSION)]" />
[<link rel="shortcut icon" href="(#CHEMIN{favicon.ico})" />] [<link rel="shortcut icon" href="(#CHEMIN{favicon.ico})" />]
<link rel="stylesheet" href="[(#CHEMIN{spip_style.css}|direction_css)]" type="text/css" /> <link rel="stylesheet" href="[(#CHEMIN{spip_style.css}|direction_css)]" type="text/css" />
<link rel="stylesheet" href="[(#CHEMIN{formfx.css}|direction_css)]" type="text/css" />
<link rel="stylesheet" href="[(#CHEMIN{minipres.css}|direction_css)]" type="text/css" /> <link rel="stylesheet" href="[(#CHEMIN{minipres.css}|direction_css)]" type="text/css" />
<style type="text/css"> <style type="text/css">
<!-- <!--
body.page_login { text-align: center; font: 1em Verdana, Tahoma, Geneva, Helvetica, sans-serif; } body.page_login { text-align: center; font: 1em Verdana, Tahoma, Geneva, Helvetica, sans-serif; }
#minipres { width: 30em; } #minipres { width: 30em; }
.formulaire_spip { text-align: #LANG_LEFT; font-size: 0.8em; } .formulaire_login { text-align: #LANG_LEFT; font-size: 0.8em; }
.formulaire_spip fieldset {border: 1px solid #BABDB6; padding:10px;font-size: 1em;} .formulaire_login fieldset {border: 1px solid #BABDB6; padding:10px;font-size: 1em;}
.formulaire_menu_lang { float: #LANG_RIGHT; } .formulaire_menu_lang { float: #LANG_RIGHT; }
.formulaire_menu_lang label { display: none; } .formulaire_menu_lang label { display: none; }
.formulaire_login { clear: both; } .formulaire_login { clear: both; }
.formulaire_login fieldset li label,
.formulaire_login fieldset li .erreur,
.formulaire_login fieldset li .details {display:block;width:auto;}
.formulaire_login fieldset li label.nofx {display:inline;}
.formulaire_login fieldset li input.text,
.formulaire_login fieldset li input.password {width:20em;}
.spip_logos { float: right; padding-left: 10px; } .spip_logos { float: right; padding-left: 10px; }
.forml,input { font-size: 1.0em; } .forml,input { font-size: 1.0em; }
#var_lang_ecrire {font-size:0.8em;}
p .forml { width: 20em; font-family: inherit; } p .forml { width: 20em; font-family: inherit; }
.spip_bouton input { float: #LANG_RIGHT; } .spip_bouton input { float: #LANG_RIGHT; }
.reponse_formulaire { font-weight: bold; color: red; } .reponse_formulaire { font-weight: bold; color: red; }
a { color: #e86519; text-decoration: none; } a { color: #e86519; text-decoration: none; }
.formulaire_login .retour { text-align: center; } .retour { text-align: center;font-size:0.8em; }
formulaire_login.retour { font-size:1em; }
--> -->
</style> </style>
[<script type='text/javascript' src='(#URL_PAGE{jquery.js})'></script>] [(#REM|f_jQuery)]
</head> </head>
<body class='page_login' > <body class='page_login' >
...@@ -44,20 +55,16 @@ ...@@ -44,20 +55,16 @@
[(#ENV{url}|=={''}|?{#SET{prive,' '}})] [(#ENV{url}|=={''}|?{#SET{prive,' '}})]
[(#ENV{url}|match{'^ecrire/'}|?{#SET{prive,' '}})] [(#ENV{url}|match{'^ecrire/'}|?{#SET{prive,' '}})]
[(#GET{prive}) <small><:login_acces_prive:></small>] [(#GET{prive}) <small><:login_acces_prive:></small>]
[(#GET{prive}|?{'',' '}) <!-- ?? -->]
</h3> </h3>
#MENU_LANG_ECRIRE #MENU_LANG_ECRIRE
<div class="formulaire_spip formulaire_login"> [(#FORMULAIRE_LOGIN{#ENV{url}|sinon{#URL_ECRIRE{accueil}}})]
[(#GET{prive}|?{'',' '}) #LOGIN_PUBLIC]
[(#GET{prive}|?{' '}) #LOGIN_PRIVE]
<p class="retour"> <p class="retour">
[&#91;<a href="#URL_PAGE{identifiants,focus=nom_inscription}&amp;mode=(#URL_SITE_SPIP|tester_config{1comite})" target="spip_pass" onclick="javascript:window.open(this.href, 'spip_pass', 'scrollbars=yes, resizable=yes, width=480, height=400'); return false;"><:login_sinscrire:></a>&#93;] [&#91;<a href="#URL_PAGE{identifiants,focus=nom_inscription}&amp;mode=(#URL_SITE_SPIP|tester_config{1comite})" target="spip_pass" onclick="javascript:window.open(this.href, 'spip_pass', 'scrollbars=yes, resizable=yes, width=480, height=400'); return false;"><:login_sinscrire:></a>&#93;]
&#91;<a href="#URL_SITE_SPIP/"><:login_retoursitepublic:></a>&#93; &#91;<a href="#URL_SITE_SPIP/"><:login_retoursitepublic:></a>&#93;
</p> </p>
</div>
</div><!--#minipres--> </div><!--#minipres-->
......
...@@ -20,7 +20,7 @@ function action_cookie_dist() { ...@@ -20,7 +20,7 @@ function action_cookie_dist() {
// La cible de notre operation de connexion // La cible de notre operation de connexion
$url = _request('url'); $url = _request('url');
$redirect = isset($url) ? $url : _DIR_RESTREINT_ABS; $redirect = isset($url) ? $url : _DIR_RESTREINT;
$redirect_echec = _request('url_echec'); $redirect_echec = _request('url_echec');
if (!isset($redirect_echec)) { if (!isset($redirect_echec)) {
if (strpos($redirect,_DIR_RESTREINT_ABS)!==false) if (strpos($redirect,_DIR_RESTREINT_ABS)!==false)
...@@ -52,98 +52,27 @@ function action_cookie_dist() { ...@@ -52,98 +52,27 @@ function action_cookie_dist() {
redirige_par_entete(parametre_url(parametre_url($redirect_echec,'var_echec_cookie','oui','&'),'url',rawurlencode($redirect),'&')); redirige_par_entete(parametre_url(parametre_url($redirect_echec,'var_echec_cookie','oui','&'),'url',rawurlencode($redirect),'&'));
} }
if (_request('essai_login') == "oui") {
// Recuperer le login en champ hidden
if (!$session_login = _request('session_login'))
$session_login = _request('session_login_hidden');
if (!spip_connect()) {
include_spip('inc/minipres');
echo minipres(_T('info_travaux_titre'), _T('titre_probleme_technique'));
exit;
}
$auteur = array();
// Essayer tour a tour les differentes sources d'authenfication
// on s'en souviendra dans visiteur_session['auth']
$sources_auth = array('spip', 'ldap');
while (!$auteur
AND list(,$methode) = each($sources_auth)) {
if ($auth = charger_fonction('auth_'.$methode, 'inc', true)
AND $auteur = $auth(
$session_login, _request('session_password')
)) {
$auteur['auth'] = $methode;
} else {
spip_log("pas de connexion avec $methode");
}
}
// Sinon, renvoyer le formulaire avec message d'erreur si 2e fois
if (!$auteur) {
$redirect = parametre_url($redirect_echec,'var_login',$session_login,'&');
if (_request('session_password')
OR _request('session_password_md5'))
$redirect = parametre_url($redirect, 'var_erreur', 'pass', '&');
$redirect = parametre_url($redirect,'url',$url,'&');
spip_log("echec login: $session_login");
}
// OK on a ete authentifie, on se connecte
if ($auteur) {
spip_log("login de $session_login vers $redirect (".$auteur['auth']);
// Si on se connecte dans l'espace prive,
// ajouter "bonjour" (repere a peu pres les cookies desactives)
if (strpos($redirect,_DIR_RESTREINT_ABS)!==false)
$redirect = parametre_url($redirect, 'bonjour', 'oui', '&');
// Prevoir de demander un cookie de correspondance
if ($auteur['statut'] == '0minirezo')
$set_cookie_admin = "@".$session_login;
$session = charger_fonction('session', 'inc');
$cookie_session = $session($auteur);
// La case "rester connecte quelques jours"
$session_remember = (_request('session_remember') == 'oui') ? 'perma' : '';
if ($session_remember)
spip_setcookie('spip_session', $cookie_session, time() + 2 * _RENOUVELLE_ALEA);
else
spip_setcookie('spip_session', $cookie_session);
$prefs = ($auteur['prefs']) ? unserialize($auteur['prefs']) : array();
$prefs['cnx'] = $session_remember;
sql_updateq('spip_auteurs', array('prefs' => serialize($prefs)), "id_auteur = " . $auteur['id_auteur']);
}
}
$cook = isset($_COOKIE['spip_admin']) ? $_COOKIE['spip_admin'] : ''; $cook = isset($_COOKIE['spip_admin']) ? $_COOKIE['spip_admin'] : '';
// Suppression cookie d'admin ? // Suppression cookie d'admin ?
if (_request('cookie_admin') == "non") { if (_request('cookie_admin') == "non") {
if (!$retour = _request('retour')) /*if (!$retour = _request('retour'))
$retour = generer_url_public('login', $retour = generer_url_public('login',
'url='.rawurlencode($url), true); 'url='.rawurlencode($url), true);*/
if ($cook) if ($cook)
spip_setcookie('spip_admin', $cook, time() - 3600 * 24); spip_setcookie('spip_admin', $cook, time() - 3600 * 24);
$redirect = parametre_url($retour,'var_login','','&'); /*$redirect = parametre_url($retour,'var_login','','&');
$redirect = parametre_url($redirect,'var_erreur','','&'); $redirect = parametre_url($redirect,'var_erreur','','&');
$redirect .= ((false !== strpos($redirect, "?")) ? "&" : "?") $redirect .= ((false !== strpos($redirect, "?")) ? "&" : "?")
. "var_login=-1"; . "var_login=-1";*/
} }
// Ajout de cookie d'admin // Ajout de cookie d'admin
else if ( else if (isset($set_cookie_admin)
isset($set_cookie_admin) OR $set_cookie_admin = _request('cookie_admin')) {
OR $set_cookie_admin = _request('cookie_admin')
) {
spip_setcookie('spip_admin', $set_cookie_admin, spip_setcookie('spip_admin', $set_cookie_admin,
time() + 14 * 24 * 3600); time() + 14 * 24 * 3600);
} }
// Redirection finale // Redirection finale
redirige_par_entete($redirect, true); redirige_par_entete($redirect, true);
} }
......
...@@ -18,24 +18,13 @@ function action_informer_auteur_dist() { ...@@ -18,24 +18,13 @@ function action_informer_auteur_dist() {
include_spip('inc/json'); include_spip('inc/json');
$row = array(); $row = array();
if ($login=_request('var_login')) { if ($login=_request('var_login')){
$row = sql_fetsel('id_auteur,login,alea_actuel,alea_futur,prefs', 'spip_auteurs', "login=" . sql_quote($login)); include_spip('inc/identifier_login');
// Retrouver ceux qui signent de leur nom ou email $row = informer_login($login);
if (!$row AND !spip_connect_ldap()) {
$row = sql_fetsel('id_auteur,login,alea_actuel,alea_futur,prefs', 'spip_auteurs', "(nom = " . sql_quote($login) . " OR email = " . sql_quote($login) . ") AND login<>'' AND statut<>'5poubelle'");
}
if ($row) {
$prefs = unserialize($row['prefs']);
$row['cnx'] = $prefs['cnx'] == 'perma' ? '1' : '0';
unset($row['prefs']);
$page = evaluer_fond('formulaires/logo_auteur', array('id_auteur'=>$row['id_auteur']));
$row['logo'] = $page['texte'];
}
unset($row['id_auteur']); unset($row['id_auteur']);
echo json_export($row);
} }
echo json_export($row);
} }
?>
?>
\ No newline at end of file
...@@ -102,7 +102,7 @@ function balise_FORMULAIRE__dyn($form) ...@@ -102,7 +102,7 @@ function balise_FORMULAIRE__dyn($form)
$args['form'] = $form; $args['form'] = $form;
return array("formulaires/$form", return array("formulaires/$form",
3600, 0,
array_merge( array_merge(
$valeurs, $valeurs,
array( array(
......
...@@ -35,6 +35,11 @@ function balise_LOGIN_PRIVE_stat ($args, $filtres) { ...@@ -35,6 +35,11 @@ function balise_LOGIN_PRIVE_stat ($args, $filtres) {
// http://doc.spip.org/@balise_LOGIN_PRIVE_dyn // http://doc.spip.org/@balise_LOGIN_PRIVE_dyn
function balise_LOGIN_PRIVE_dyn($login, $cible) { function balise_LOGIN_PRIVE_dyn($login, $cible) {
return login_explicite($login, $cible); include_spip('balise/formulaire_');
if (!$url # pas d'url passee en filtre ou dans le contexte
AND !$url = _request('url') # ni d'url passee par l'utilisateur
)
$url = generer_url_ecrire('accueil','',true);
return balise_FORMULAIRE__dyn('login',$url,$login,true);
} }
?> ?>
\ No newline at end of file
...@@ -33,160 +33,12 @@ function balise_LOGIN_PUBLIC_stat ($args, $filtres) { ...@@ -33,160 +33,12 @@ function balise_LOGIN_PUBLIC_stat ($args, $filtres) {
// http://doc.spip.org/@balise_LOGIN_PUBLIC_dyn // http://doc.spip.org/@balise_LOGIN_PUBLIC_dyn
function balise_LOGIN_PUBLIC_dyn($url, $login) { function balise_LOGIN_PUBLIC_dyn($url, $login) {
include_spip('balise/formulaire_');
if (!$url # pas d'url passee en filtre ou dans le contexte if (!$url # pas d'url passee en filtre ou dans le contexte
AND !$url = _request('url') # ni d'url passee par l'utilisateur AND !$url = _request('url') # ni d'url passee par l'utilisateur
) )
$url = parametre_url(self(), '', '', '&'); $url = parametre_url(self(), '', '', '&');
return login_explicite($login, $url); return balise_FORMULAIRE__dyn('login',$url,$login,false);
}
// http://doc.spip.org/@login_explicite
function login_explicite($login, $cible) {
global $visiteur_session;
$action = parametre_url(self(), '', '', '&');
if ($cible) {
$cible = parametre_url($cible, 'var_erreur', '', '&');
$cible = parametre_url($cible, 'var_login', '', '&');
} else {
if (preg_match(",[?&]url=([^&]*),", $action, $m))
$cible = rawurldecode($m[1]);
else $cible = generer_url_ecrire();
}
verifier_visiteur();
// Si on est connecte, envoyer vers la destination
// si on en a le droit, et sauf si on y est deja
if (!strncmp($cible, _DIR_RESTREINT_ABS, strlen(_DIR_RESTREINT_ABS))) {
include_spip('inc/autoriser');
$loge = autoriser('ecrire');
} else {
$loge = ($visiteur_session['auth'] != '');
}
if ($loge) {
// on est a destination ?
if ($cible == $action)
return '';
// sinon on y va
if (!headers_sent() AND !$_GET['var_mode']) {
include_spip('inc/headers');
redirige_par_entete($cible);
} else {
return "<a href='$cible'>" .
_T('login_par_ici') .
"</a>";
}
}
return login_pour_tous($login ? $login : _request('var_login'), $cible, $action);
}
// http://doc.spip.org/@login_pour_tous
function login_pour_tous($login, $cible, $action) {
global $ignore_auth_http;
// en cas d'echec de cookie, inc_auth a renvoye vers le script de
// pose de cookie ; s'il n'est pas la, c'est echec cookie
// s'il est la, c'est probablement un bookmark sur bonjour=oui,
// et pas un echec cookie.
if (_request('var_erreur') == 'cookie')
$echec_cookie = ($_COOKIE['spip_session'] != 'test_echec_cookie');
else $echec_cookie = '';
// hack grossier pour changer le message en cas d'echec d'un statut interdit sur ecrire/
$echec_visiteur = (_request('var_erreur') == 'statut') ?' ':'';
$pose_cookie = generer_url_action('cookie',"",false,true);
$auth_http = '';
if ($echec_cookie AND !$ignore_auth_http) {
if (($GLOBALS['flag_sapi_name']
AND preg_match(",apache,i", @php_sapi_name()))
OR preg_match(",^Apache.* PHP,", $_SERVER['SERVER_SOFTWARE']))
$auth_http = $pose_cookie;
}
// Attention dans le cas 'intranet' la proposition de se loger
// par auth_http peut conduire a l'echec.
if (isset($_SERVER['PHP_AUTH_USER']) AND isset($_SERVER['PHP_AUTH_PW']))
$auth_http = '';
// Le login est memorise dans le cookie d'admin eventuel
if (!$login) {
if (isset($_COOKIE['spip_admin']) && preg_match(",^@(.*)$,", $_COOKIE['spip_admin'], $regs))
$login = $regs[1];
} else if ($login == '-1')
$login = '';
$erreur = '';
if ($login) {
$row = sql_fetsel('*', 'spip_auteurs', "login=" . sql_quote($login));
// Retrouver ceux qui signent de leur nom ou email
if (!$row AND !spip_connect_ldap()) {
$row = sql_fetsel('*', 'spip_auteurs', "(nom = " . sql_quote($login) . " OR email = " . sql_quote($login) . ") AND login<>'' AND statut<>'5poubelle'");
if ($row) {
$login_alt = $login; # afficher ce qu'on a tape
$login = $row['login'];
}
}
if ((!$row AND !spip_connect_ldap()) OR
($row['statut'] == '5poubelle') OR
(($row['source'] == 'spip') AND $row['pass'] == '')) {
$erreur = _T('login_identifiant_inconnu',
array('login' => htmlspecialchars($login)));
$row = array();
$login = '';
include_spip('inc/cookie');
spip_setcookie("spip_admin", "", time() - 3600);
} else {
// on laisse le menu decider de la langue
unset($row['lang']);
}
} else {
$row = array();
}
// afficher "erreur de mot de passe" si &var_erreur=pass
if (_request('var_erreur') == 'pass')
$erreur = _T('login_erreur_pass');
// Ne pas proposer de "rester connecte quelques jours"
// si la duree de l'alea est inferieure a 12 h (valeur par defaut)
$rester_connecte = (_RENOUVELLE_ALEA < 12*3600) ? '' : ' ';
// Appeler le squelette formulaire_login
return array('formulaires/login', $GLOBALS['delais'],
array_merge(
array_map('texte_script', $row),
array(
'action2' => ($login ? $pose_cookie: $action),
'erreur' => $erreur,
'action' => $action,
'pose_cookie' => $pose_cookie,
'url' => $cible,
'auth_http' => $auth_http,
'echec_cookie' => ($echec_cookie ? ' ' : ''),
'echec_visiteur' => $echec_visiteur,
'login' => $login,
'login_alt' => (isset($login_alt) ? $login_alt : $login),
'self' => self('&'),
'rester_connecte' => $rester_connecte
)
)
);
}
// Bouton duree de connexion
// http://doc.spip.org/@filtre_rester_connecte
function filtre_rester_connecte($prefs) {
$prefs = unserialize(stripslashes($prefs));
return $prefs['cnx'] == 'perma' ? ' ' : '';
} }
?> ?>
\ No newline at end of file
...@@ -196,7 +196,7 @@ function colonne_droite_neq4($id_rubrique, $activer_breves, $activer_sites, $art ...@@ -196,7 +196,7 @@ function colonne_droite_neq4($id_rubrique, $activer_breves, $activer_sites, $art
if (!@$_COOKIE['spip_admin']) { if (!@$_COOKIE['spip_admin']) {
$cookie = rawurlencode("@$connect_login"); $cookie = rawurlencode("@$connect_login");
$retour = rawurlencode(_DIR_RESTREINT_ABS . _SPIP_ECRIRE_SCRIPT); $retour = rawurlencode('./' . _SPIP_ECRIRE_SCRIPT);
$lien = generer_url_action('cookie', "cookie_admin=$cookie&url=$retour"); $lien = generer_url_action('cookie', "cookie_admin=$cookie&url=$retour");
$gadget .= "<div>&nbsp;</div>". $gadget .= "<div>&nbsp;</div>".
"<table width='95%'><tr>". "<table width='95%'><tr>".
...@@ -254,7 +254,7 @@ function personnel_accueil($coockcookie) ...@@ -254,7 +254,7 @@ function personnel_accueil($coockcookie)
// //
if ($coockcookie) { if ($coockcookie) {
$lien = generer_url_action('cookie', "cookie_admin=non&url=".rawurlencode(_DIR_RESTREINT_ABS . _SPIP_ECRIRE_SCRIPT)); $lien = generer_url_action('cookie', "cookie_admin=non&url=".rawurlencode('./'. _SPIP_ECRIRE_SCRIPT));
$t = _T('icone_supprimer_cookie'); $t = _T('icone_supprimer_cookie');
$t = icone_horizontale($t, $lien, "cookie-24.gif", "", false); $t = icone_horizontale($t, $lien, "cookie-24.gif", "", false);
if ($GLOBALS['spip_display'] != 1) if ($GLOBALS['spip_display'] != 1)
......
...@@ -15,13 +15,9 @@ if (!defined("_ECRIRE_INC_VERSION")) return; ...@@ -15,13 +15,9 @@ if (!defined("_ECRIRE_INC_VERSION")) return;
// Authentifie et retourne la ligne SQL decrivant l'utilisateur si ok // Authentifie et retourne la ligne SQL decrivant l'utilisateur si ok
// http://doc.spip.org/@inc_auth_spip_dist // http://doc.spip.org/@inc_auth_spip_dist
function inc_auth_spip_dist ($login, $pass) { function inc_auth_spip_dist ($login, $pass, $md5pass="", $md5next="") {
// recuperer le cryptage par JavaScript // si envoi non crypte, crypter maintenant
$md5pass = $_POST['session_password_md5'];
$md5next = $_POST['next_session_password_md5'];
// si envoi non crypte, crypter maintenant
if (!$md5pass AND $pass) { if (!$md5pass AND $pass) {
$result = sql_select("alea_actuel, alea_futur", "spip_auteurs", "login=" . sql_quote($login)); $result = sql_select("alea_actuel, alea_futur", "spip_auteurs", "login=" . sql_quote($login));
......
...@@ -31,6 +31,7 @@ function redirige_par_entete($url, $equiv='') { ...@@ -31,6 +31,7 @@ function redirige_par_entete($url, $equiv='') {
if (!$equiv OR (strncmp("Apache", $_SERVER['SERVER_SOFTWARE'],6)==0)) { if (!$equiv OR (strncmp("Apache", $_SERVER['SERVER_SOFTWARE'],6)==0)) {
@header("Location: " . $url); @header("Location: " . $url);
$equiv="";
} else { } else {
@header("Refresh: 0; url=" . $url); @header("Refresh: 0; url=" . $url);
$equiv = "<meta http-equiv='Refresh' content='0; url=$url'>"; $equiv = "<meta http-equiv='Refresh' content='0; url=$url'>";
...@@ -57,7 +58,10 @@ function redirige_par_entete($url, $equiv='') { ...@@ -57,7 +58,10 @@ function redirige_par_entete($url, $equiv='') {
// http://doc.spip.org/@redirige_formulaire // http://doc.spip.org/@redirige_formulaire
function redirige_formulaire($url, $equiv = '') { function redirige_formulaire($url, $equiv = '') {
if (!_request('var_ajax') && !_request('var_ajaxcharset')) if (!_request('var_ajax')
&& !_request('var_ajaxcharset')
&& !headers_sent()
&& !$_GET['var_mode'])
redirige_par_entete(str_replace('&amp;','&',$url), $equiv); redirige_par_entete(str_replace('&amp;','&',$url), $equiv);
else { else {
$url = strtr($url, "\n\r", " "); $url = strtr($url, "\n\r", " ");
......
<?php
/***************************************************************************\
* SPIP, Systeme de publication pour l'internet *
* *
* Copyright (c) 2001-2008 *
* Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
* *
* Ce programme est un logiciel libre distribue sous licence GNU/GPL. *
* Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
\***************************************************************************/
if (!defined("_ECRIRE_INC_VERSION")) return;
include_spip('base/abstract_sql');
function inc_identifier_login_dist($session_login, $session_password, $session_md5pass="", $session_md5next="", $session_remember=''){
$auteur = verifier_login($session_login, $session_password, $session_md5pass, $session_md5next);
// OK on a ete authentifie, on se connecte
if ($auteur) {
spip_log("login de $session_login vers $redirect (".$auteur['auth']);
// Prevoir de demander un cookie de correspondance
if ($auteur['statut'] == '0minirezo')
$set_cookie_admin = "@".$session_login;
$session = charger_fonction('session', 'inc');
$cookie_session = $session($auteur);
// La case "rester connecte quelques jours"
$session_remember = ($session_remember == 'oui') ? 'perma' : '';
if ($session_remember)
spip_setcookie('spip_session', $cookie_session, time() + 2 * _RENOUVELLE_ALEA);
else
spip_setcookie('spip_session', $cookie_session);
$prefs = ($auteur['prefs']) ? unserialize($auteur['prefs']) : array();
$prefs['cnx'] = $session_remember;
sql_updateq('spip_auteurs', array('prefs' => serialize($prefs)), "id_auteur = " . $auteur['id_auteur']);
}
$cook = isset($_COOKIE['spip_admin']) ? $_COOKIE['spip_admin'] : '';
// Ajout de cookie d'admin
# rien a faire ici, trouver ou le mettre
/*if (isset($set_cookie_admin)
OR $set_cookie_admin = _request('cookie_admin')
) {
spip_setcookie('spip_admin', $set_cookie_admin, time() + 14 * 24 * 3600);
}*/
return $auteur;
}
function verifier_login($session_login, $session_password, $session_md5pass="", $session_md5next=""){
if (!spip_connect()) {
include_spip('inc/minipres');
echo minipres(_T('info_travaux_titre'), _T('titre_probleme_technique'));
exit;
}
$auteur = array();
// Essayer tour a tour les differentes sources d'authenfication
// on s'en souviendra dans visiteur_session['auth']
$sources_auth = array('spip', 'ldap');
while (!$auteur
AND list(,$methode) = each($sources_auth)) {
if ($auth = charger_fonction('auth_'.$methode, 'inc', true)
AND $auteur = $auth($session_login, $session_password, $session_md5pass,$session_md5next)) {
$auteur['auth'] = $methode;
} else {
spip_log("pas de connexion avec $methode");
}
}
return $auteur;
}
function informer_login($login){
$row = sql_fetsel('id_auteur,login,alea_actuel,alea_futur,prefs,source', 'spip_auteurs', "login=" . sql_quote($login));
// Retrouver ceux qui signent de leur nom ou email
if (!$row AND !spip_connect_ldap()) {
$row = sql_fetsel('id_auteur,login,alea_actuel,alea_futur,prefs,source', 'spip_auteurs', "(nom = " . sql_quote($login) . " OR email = " . sql_quote($login) . ") AND login<>'' AND statut<>'5poubelle'");
}
if ($row) {
// desactiver le hash md5 si pas auteur spip ?
if ($row['source']!=='spip'){
$row['alea_actuel']='';
$row['alea_futur']='';
}
unset($row['source']);
$prefs = unserialize($row['prefs']);
$row['cnx'] = $prefs['cnx'] == 'perma' ? '1' : '0';
unset($row['prefs']);
$page = evaluer_fond('formulaires/logo_auteur', array('id_auteur'=>$row['id_auteur']));
$row['logo'] = $page['texte'];
}
return $row;
}
?>
\ No newline at end of file
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Veuillez vous inscrire ou vous pour commenter