0182957f422c613a5df791ac5ea10389c1ed3218
2 function affiche_login_secure() {
3 if (login_info
.alea_actuel
)
4 jQuery('#pass_securise').show();
6 jQuery('#pass_securise').hide();
9 function informe_auteur(c
){
10 login_info
.informe_auteur_en_cours
= false;
11 // JSON envoye par informer_auteur.html
12 c
= jQuery
.parseJSON(c
);
14 login_info
.alea_actuel
= c
.alea_actuel
;
15 login_info
.alea_futur
= c
.alea_futur
;
16 // indiquer le cnx si on n'y a pas touche
17 jQuery('input#session_remember:not(.modifie)')
18 .prop('checked',(c
.cnx
=='1')?true:false);
20 login_info
.alea_actuel
= '';
23 jQuery('#spip_logo_auteur').html(c
.logo
);
25 jQuery('#spip_logo_auteur').html('');
26 affiche_login_secure();
29 function calcule_hash_pass(pass
){
30 if ((login_info
.alea_actuel
|| login_info
.alea_futur
)
31 && !pass
.match(/^\{([0-9a-f]{32});([0-9a-f]{32})\}$/i)
32 && !pass
.match(/^\{([0-9a-f]{64});([0-9a-f]{64});([0-9a-f]{32});([0-9a-f]{32})\}$/i)
33 && sha256_self_test() // verifions que le hash sha est operationnel
36 hash
= hex_sha256(login_info
.alea_actuel
+ pass
);
38 hash
= hash
+';'+hex_sha256(login_info
.alea_futur
+ pass
);
39 // envoyer aussi le md5 si demande (compatibilite)
41 hash
= hash
+';'+calcMD5(login_info
.alea_actuel
+ pass
);
42 hash
= hash
+';'+calcMD5(login_info
.alea_futur
+ pass
);
45 jQuery('input[name=password]').prop('value','{'+hash
+'}');
49 function actualise_auteur(){
50 if (login_info
.login
!= jQuery('#var_login').prop('value')) {
51 login_info
.informe_auteur_en_cours
= true;
52 login_info
.login
= jQuery('#var_login').prop('value');
53 var currentTime
= new Date();// on passe la date en var pour empecher la mise en cache de cette requete (bug avec FF3 & IE7)
54 jQuery
.get(login_info
.page_auteur
, {var_login
:login_info
.login
,var_compteur
:currentTime
.getTime()},informe_auteur
);
58 function login_submit(){
60 var inputpass
= jQuery('input[name=password]');
61 var pass
= inputpass
.prop('value');
62 // ne pas laisser le pass d'un auteur "auth=spip" circuler en clair
64 // si l'information est en cours, retenter sa chance
65 // pas plus de 5 fois (si profondeur_url fausse, la requete d'information echoue et ne repond jamais)
66 if (login_info
.informe_auteur_en_cours
&& (login_info
.attente_informe
<5)) {
67 login_info
.attente_informe
++;
68 jQuery('form#formulaire_login').animeajax().find('p.boutons input').before('.'); // montrer qu'il se passe quelque chose
69 setTimeout(function(){
70 jQuery('form#formulaire_login').submit();
75 // Si on a l'alea, on peut lancer le submit apres avoir hashe le pass
76 if (login_info
.alea_actuel
|| login_info
.alea_futur
) {
77 // il ne faut pas injecter le pass hashe directement dans l'input password visible car
78 // - cela est perturbant
79 // - certains navigateurs memorisent le hash au lieu du pass ...
80 // on cree un input hidden a cote, on lui met le name="password"
81 // et on vide le champ visible
82 inputpass
.after('<input name="password" type="hidden" value="" />').prop('value',pass
);
83 inputpass
.prop('name','nothing').prop('value','');
84 calcule_hash_pass(pass
);
86 // si on arrive pas a avoir une reponse ajax, vider le pass pour forcer un passage en 2 fois
87 else if(login_info
.informe_auteur_en_cours
)
88 inputpass
.prop('value','');
89 // sinon c'est que l'auteur n'existe pas
90 // OU qu'il sera accepte par LDAP ou autre auth avec mot de passe en clair