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