Skip to content
Extraits de code Groupes Projets
Valider feb2c851 rédigé par Fil's avatar Fil
Parcourir les fichiers

petits ajustements sur le login ; essayer notamment de refuser le js, ou les...

petits ajustements sur le login ; essayer notamment de refuser le js, ou les cookies, ou de taper un login inconnu
parent 461670fe
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -6,6 +6,12 @@
[<p class="formulaire_message">(#ENV**{_deja_loge})</p>]
[<p class="formulaire_message">(#ENV**{message_ok})</p>]
[<p class='formulaire_erreur'>(#ENV**{message_erreur})</p>]
[(#ENV{echec_cookie})<fieldset class='formulaire_erreur'>
<h2><:avis_erreur_cookie:></h2>
<p><:login_cookie_oblige:><br /><:login_cookie_accepte:></p>
</fieldset>]
[(#ENV{editable})
<form id='formulaire_login' method='post' action='#ENV{action}' enctype='multipart/form-data'>
[(#REM) declarer les hidden qui declencheront le service du formulaire
......@@ -22,13 +28,11 @@
<li class="editer_password obligatoire">
<label for="password"><:login_pass2:></label>
<input class='password' type='password' name='password' id='password' value="" size='40' />
<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>]
<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>
</li>
[(#ENV{rester_connecte})
<li><input class='checkbox' type="checkbox" name="session_remember" id="session_remember" value="oui" [(#ENV**{cnx}|?{' '})checked="checked"]
class="intact" onchange="this.className='';" />
<li><input class='checkbox' type="checkbox" name="session_remember" id="session_remember" value="oui" [(#ENV**{cnx}|?{' '})checked="checked"] onchange="jQuery(this).addClass('modifie');" />
<label class='nofx' for="session_remember"><:login_rester_identifie:></label></li>
]
</ol>
......@@ -58,20 +62,19 @@ var alea_futur='#ENV{_alea_futur,''}';
var login='#ENV{var_login,''}';
var informe_auteur_en_cours = false;
function informe_auteur(c){
informe_auteur_en_cours = false;
eval('c = '+c); // JSON
if (c) {
alea_actuel = c.alea_actuel;
alea_futur = c.alea_futur;
jQuery('input#session_login_hidden').attr('value',c.login);
// indiquer le cnx si on n'y a pas touche
jQuery('input#session_remember.intact')
.attr('checked',c.cnx=='1'?'checked':'');
jQuery('input#session_remember:not(.modifie)')
.attr('checked',(c.cnx=='1')?'checked':'');
jQuery('#spip_logo_auteur').html(c.logo);
jQuery('#pass_securise').show();
} else {
jQuery('#spip_logo_auteur').html('');
alea_actuel = '';
}
informe_auteur_en_cours = false;
}
function calcule_md5_pass(pass){
if (alea_actuel) {
......@@ -81,41 +84,40 @@ function calcule_md5_pass(pass){
}
}
function actualise_auteur(){
if (login!=jQuery('#var_login').attr('value')) {
login = jQuery('#var_login').attr('value');
if (login != jQuery('#var_login').attr('value')) {
informe_auteur_en_cours = true;
login = jQuery('#var_login').attr('value');
$.get('#URL_ACTION{informer_auteur}',{var_login:login},informe_auteur);
}
}
jQuery('#var_login').change(function(){actualise_auteur();});
jQuery('#password').after("<em id='pass_securise'><img src='#EVAL{_DIR_IMG_PACK}securise.gif' width='16' height='16' alt='<:login_securise:>' title='<:login_securise:>' \/><\/em>");
jQuery('#var_login').change(actualise_auteur);
jQuery('form#formulaire_login').submit(function(){
actualise_auteur();
pass = jQuery('input[@name=password]').attr('value');
// ne jamais laisser le pass circuler en clair
if (pass) {
if (alea_actuel)
// on a l'alea, on peut lancer le submit apres avoir hashe le pass
calcule_md5_pass(pass);
else {
// on a pas encore l'alea de l'auteur
// retrouver les alea de l'auteur qui ne sont pas encore arrives (remplissage auto des champs par le navigateur) !
// si l'information est en cours, retenter sa chance
if (informe_auteur_en_cours) {
setTimeout(function(){jQuery('form#formulaire_login').submit();},300);
return false;
}
// sinon lancer une demande
informe_auteur_en_cours = true;
$.get('#URL_ACTION{informer_auteur}',{var_login:jQuery('#var_login').attr('value')},function(c) {
informe_auteur(c);
// le formulaire sera soumis apres reception des info auteur
jQuery('form#formulaire_login').submit();
});
// ou dans un delai maxi de 5s (pour eviter le blocage a cette etape)
// si l'information est en cours, retenter sa chance
if (informe_auteur_en_cours) {
setTimeout(function(){
jQuery('form#formulaire_login').submit();
},5000);
}, 1000);
return false;
}
// Si on a l'alea, on peut lancer le submit apres avoir hashe le pass
if (alea_actuel) {
calcule_md5_pass(pass);
}
// sinon c'est que l'auteur n'existe pas
else {
var alert = jQuery("<div class='formulaire_erreur'>"
+ (<:login_identifiant_inconnu|_q:>.replace(/@login@/, login))
+ "<\/div>")
.appendTo(jQuery("#var_login").parent());
setTimeout(function() {alert.slideUp();}, 3000);
return false;
}
}
......
......@@ -38,19 +38,19 @@ function formulaires_login_charger_dist($cible="",$login="",$prive=null){
// 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']:'',
#'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="" />';
. '<input type="hidden" name="next_session_password_md5" value="" />';
// Si on est connecte, envoyer vers la destination
// si on en a le droit, et sauf si on y est deja
......@@ -79,6 +79,14 @@ function formulaires_login_charger_dist($cible="",$login="",$prive=null){
}
}
// 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')
$valeurs['echec_cookie'] = ' ';
return array($editable,$valeurs);
}
......@@ -93,26 +101,8 @@ function formulaires_login_verifier_dist($cible="",$login="",$prive=null){
$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>]*/
}
$session_remember = _request('session_remember');
#$pose_cookie = generer_url_action('cookie',"",false,true);
$auth_http = '';
if ($echec_cookie AND !$ignore_auth_http) {
......@@ -151,7 +141,8 @@ function formulaires_login_verifier_dist($cible="",$login="",$prive=null){
unset($row['lang']);
}
$identifier_login = charger_fonction('identifier_login','inc');
if (!$identifier_login($session_login,$session_password,$session_md5pass,$session_md5next)){
if (!$identifier_login($session_login, $session_password,
$session_md5pass, $session_md5next, $session_remember)){
$erreurs['password'] = _T('login_erreur_pass');
}
else {
......@@ -200,6 +191,12 @@ function formulaires_login_traiter_dist($cible="",$login="",$prive=null){
else $cible = generer_url_ecrire();
}*/
// Si on est admin, poser le cookie de correspondance
if ($GLOBALS['auteur_session']['statut'] == '0minirezo') {
include_spip('inc/cookie');
spip_setcookie('spip_admin', '@'.$GLOBALS['auteur_session']['login'],
time() + 7 * 24 * 3600);
}
// Si on est connecte, envoyer vers la destination
if ($cible
......
......@@ -97,7 +97,7 @@ function informer_login($login){
}
unset($row['source']);
$prefs = unserialize($row['prefs']);
$row['cnx'] = $prefs['cnx'] == 'perma' ? '1' : '0';
$row['cnx'] = ($prefs['cnx'] == 'perma') ? '1' : '0';
unset($row['prefs']);
$page = evaluer_fond('formulaires/logo_auteur', array('id_auteur'=>$row['id_auteur']));
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter