Changeset 23563 in spip-zone


Ignore:
Timestamp:
Oct 22, 2008, 8:23:44 PM (11 years ago)
Author:
amaury.adon@…
Message:

modification du formulaire de login pour être compatible avec spip 2.0.

Ca fait un certain temps que je n'ai pas fait la manip j'espère ne pas tout casser.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • _squelettes_/Durzy/_1_9_3_Dev/squelettes/formulaires/login.html

    r17406 r23563  
    22#HTTP_HEADER{"Pragma: no-cache"}
    33
    4 [(#ENV{echec_cookie})
    5 <fieldset class="reponse_formulaire">
    6 <legend><:avis_erreur_cookie:></legend>
    7 <p><:login_cookie_oblige:></p>
    8 <p><:login_cookie_accepte:></p>
    9 </fieldset>]
     4<div class='formulaire_spip formulaire_login'>
     5        [(#REM) pour IE qui sinon se perd dans l'ajax !, ne pas retirer]<br class='bugajaxie' />
     6        [<p class="reponse_formulaire reponse_formulaire_ok">(#ENV**{_deja_loge})</p>]
     7        [<p class="reponse_formulaire reponse_formulaire_ok">(#ENV**{message_ok})</p>]
     8        [<p class='reponse_formulaire reponse_formulaire_erreur'>(#ENV**{message_erreur})</p>]
    109
    11 [(#ENV{echec_visiteur})
    12 <fieldset class="reponse_formulaire" style="border-width: 0px;">
    13 <legend><:avis_erreur_visiteur:></legend>
    14 <p><:texte_erreur_visiteur:></p>
    15 </fieldset>]
     10        [(#ENV{echec_cookie})
     11        <fieldset class='reponse_formulaire reponse_formulaire_erreur'>
     12                <h2><:avis_erreur_cookie:></h2>
     13                <p class="erreur_message"><:login_cookie_oblige:><br /><:login_cookie_accepte:></p>
     14        </fieldset>]
    1615
    17         <script type="text/javascript" src="#EVAL{_DIR_JAVASCRIPT}md5.js"> </script>
    18         <form id="login[_(#ENV{login})]"
    19                 action="[(#ENV{action2})]"
    20                 method="post"[(#ENV{source}|=={spip}|?{' ',''})
    21                 onsubmit='if (this.session_password.value) {
    22                         this.session_password_md5.value = calcMD5("[(#ENV{alea_actuel})]" + this.session_password.value);
    23                         this.next_session_password_md5.value = calcMD5("[(#ENV{alea_futur})]" + this.session_password.value);
    24                         this.session_password.value = "";
    25                         return true;
    26                         }']>
    27         <fieldset style="border-width: 0px;">
    28        
    29                 [(#REM) En cas d'erreur ex: mauvais identifiant]
    30         [<img src="#CHEMIN{images/warning.png}" alt="#ENV*{erreur}" /> (#ENV*{erreur})]
    31                 [<label for="var_login"><:login_login2:></label>(#ENV{login}|?{'',' '})
    32                 <input type="text" class="forml" id="var_login" name="var_login" value="" size="20" />]
    33                
    34 [
    35 [(#LOGO_AUTEUR||reduire_image{100,80}|inserer_attribut{alt,#ENV{login_alt}})]
    36 <input type="hidden" name="session_login_hidden" value="(#ENV{login})" />
    37 <script type="text/javascript"><!--
    38 document.write("<:login_login:>&nbsp;<strong>[(#ENV{login_alt})]<" + "/strong> >> &#91;<a href='[(#ENV{action2}
    39         |parametre_url{cookie_admin,non}
    40         |parametre_url{url,#ENV*{url}}
    41         |parametre_url{retour,#ENV*{self}})]'><:login_autre_identifiant:><" + "/a>&#93; |")
    42 //--></script>
    43 <noscript>
    44         <p class="reponse_formulaire" style="border:none"><:login_non_securise:> <a href="[(#ENV{action})]"><:login_recharger:></a>.</p>
    45         <p><label for="session_login"><:login_login2:></label>
    46         <input type="text" class="forml" name="session_login" id="session_login"[ value="(#ENV{login})"] size="20" /></p>
    47 </noscript>
    48 
    49         <label[ for="var_login_(#ENV{login})"]><:login_pass2:></label>
    50         <input type="password" class="forml" name="session_password"[ id="var_login_(#ENV{login})"] value="" size="10" />
    51 
    52 [(#ENV{rester_connecte})
    53         <input type="checkbox" name="session_remember" id="session[_(#ENV{login})]" value="oui"[(#ENV*{prefs}|filtre_rester_connecte)checked="checked"]/>
    54         <!-- <label for="session[_(#ENV{login})]"><:login_rester_identifie:></label> -->
    55 ]
    56         <input type="hidden" name="session_password_md5" value="" />
    57         <input type="hidden" name="next_session_password_md5" value="" />
    58         <input type="hidden" name="essai_login" value="oui" />
    59 ]       <input type="hidden" name="url" value="[(#ENV{url})]" />
    60         <input type="image" src="#CHEMIN{images/valider.png}" style="border:none" name="submit" />
    61        
    62         </fieldset>
    63         </form>
    64 <script type="text/javascript"><!--
    65 document.getElementById('var_login[_(#ENV{login})]').focus();
    66 --></script>[
    67         <form action="(#ENV{auth_http})" method="get">[
     16        [(#ENV{editable})
     17        [(#REM) declarer les hidden qui declencheront le service du formulaire
     18                parametre : url d'action ]
     19        [<form id='formulaire_login' method='post' action='(#ENV{action})' enctype='multipart/form-data'><div>
     20                #ACTION_FORMULAIRE{#ENV{action}}]
     21        <fieldset>
     22                <legend><:form_forum_identifiants:></legend>
     23                <span id="spip_logo_auteur">#ENV*{_logo,''}</span>
     24                <ul>
     25                        <li class="editer_login obligatoire">
     26                                <label for="var_login"><:login_login2:></label>
     27                                <input type='text' class='text' name='var_login' id='var_login' value="[(#ENV**{var_login})]" size='20' />
     28                                [<span class="erreur_message">(#ENV**{erreurs}|table_valeur{var_login})</span>]
     29                        </li>
     30                        <li class="editer_password obligatoire">
     31                                <label for="password"><:login_pass2:></label>
     32                                <input type='password' class='password' name='password' id='password' value="" size='20' />
     33                                [<span class="erreur_message">(#ENV**{erreurs}|table_valeur{password})</span>]
     34                                <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=100, height=330'); return false;"><:login_motpasseoublie:></a>&#93;</span>
     35                        </li>
     36                        [(#ENV{rester_connecte})
     37                        <li class="editer_session">
     38                                <input type="checkbox" class="checkbox" name="session_remember" id="session_remember" value="oui" [(#ENV**{cnx}|?{' '})checked="checked"] onchange="jQuery(this).addClass('modifie');" />
     39                                <label class='nofx' for="session_remember"><:login_rester_identifie:></label>
     40                        </li>]
     41                </ul>
     42        </fieldset>[
     43          <p class="boutons"><input type="submit" class="submit" value="<:bouton_valider:>" /></p>
     44(#ENV{action}|?{' ',''})</div></form>]
     45        ]
     46        [(#REM) en cas d'absence de cookie, on represente le formulaire alternatif ]
     47        [<form action="(#ENV{auth_http})" method="get">[
    6848        (#ENV{auth_http}|form_hidden)
    6949        ]
    70         <fieldset style="border-width: 0px;">
    71         <legend><:login_sans_cookiie:></legend>
    72         <div><:login_preferez_refuser:>
    73         <input type="hidden" name="essai_auth_http" value="oui"/>
    74         [<input type="hidden" name="url" value="(#ENV{url})"/>]
    75         <div class="spip_bouton"><input type="submit" value="<:login_sans_cookiie:>"/></div></div>
     50        <fieldset>
     51                <legend><:login_sans_cookiie:></legend>
     52                <:login_preferez_refuser:>
     53                <input type="hidden" name="essai_auth_http" value="oui"/>
     54                [<input type="hidden" name="url" value="(#ENV{url})"/>]
     55                <p class="boutons"><input type="submit" class="submit" value="<:login_sans_cookiie:>"/></p>
    7656        </fieldset>
    77         </form>
    78 ]
     57
     58        ]
     59</div>
     60[(#REM) javascript qui gere la securite du login en evitant de faire circuler le pass en clair]
     61<script type="text/javascript" src="#EVAL{_DIR_JAVASCRIPT}md5.js"></script>
     62<script type='text/javascript'>/*<!#EVAL{chr(91)}CDATA#EVAL{chr(91)}*/
     63var alea_actuel='#ENV{_alea_actuel}';
     64var alea_futur='#ENV{_alea_futur}';
     65var login='#ENV{var_login,''}';
     66var informe_auteur_en_cours = false;
     67var attente_informe = 0;
     68function affiche_login_secure() {
     69        if (alea_actuel)
     70                jQuery('#pass_securise').show();
     71        else
     72                jQuery('#pass_securise').hide();
     73}
     74function informe_auteur(c){
     75        informe_auteur_en_cours = false;
     76        eval('c = '+c); // JSON
     77        if (c) {
     78                alea_actuel = c.alea_actuel;
     79                alea_futur = c.alea_futur;
     80                // indiquer le cnx si on n'y a pas touche
     81                jQuery('input#session_remember:not(.modifie)')
     82                .attr('checked',(c.cnx=='1')?'checked':'');
     83        } else {
     84                alea_actuel = '';
     85        }
     86        if (c.logo)
     87                jQuery('#spip_logo_auteur').html(c.logo);
     88        else
     89                jQuery('#spip_logo_auteur').html('');
     90        affiche_login_secure();
     91}
     92function calcule_md5_pass(pass){
     93        if (alea_actuel) {
     94                jQuery('input[@name=password]').attr('value','');
     95                jQuery('input[@name=session_password_md5]').attr('value',calcMD5(alea_actuel + pass));
     96                jQuery('input[@name=next_session_password_md5]').attr('value',calcMD5(alea_futur + pass));
     97        }
     98}
     99function actualise_auteur(){
     100        if (login != jQuery('#var_login').attr('value')) {
     101                informe_auteur_en_cours = true;
     102                login = jQuery('#var_login').attr('value');
     103                var currentTime = new Date();// on passe la date en var pour empecher la mise en cache de cette requete (bug avec FF3 & IE7)
     104                jQuery.get('#URL_PAGE{informer_auteur}',{var_login:login,var_compteur:currentTime.getTime()},informe_auteur);
     105        }
     106}
     107jQuery('#password')
     108.after("<em id='pass_securise'><img src='#EVAL{_DIR_IMG_PACK}securise.gif' width='16' height='16' alt='<:login_securise:>' title='<:login_securise:>' \/><\/em>");
     109affiche_login_secure();
     110
     111jQuery('#var_login').change(actualise_auteur);
     112
     113jQuery('form#formulaire_login').submit(function(){
     114        actualise_auteur();
     115        pass = jQuery('input[@name=password]').attr('value');
     116        // ne pas laisser le pass d'un auteur "auth=spip" circuler en clair
     117        if (pass) {
     118                // si l'information est en cours, retenter sa chance
     119                // pas plus de 5 fois (si profondeur_url fausse, la requete d'information echoue et ne repond jamais)
     120                if (informe_auteur_en_cours && (attente_informe<5)) {
     121                        attente_informe++;
     122                        jQuery('form#formulaire_login').animeajax().find('p.boutons input').before(attente_informe); // montrer qu'il se passe quelque chose
     123                        setTimeout(function(){
     124                                jQuery('form#formulaire_login').submit();
     125                        }, 1000);
     126                        return false;
     127                }
     128
     129                // Si on a l'alea, on peut lancer le submit apres avoir hashe le pass
     130                if (alea_actuel) {
     131                        calcule_md5_pass(pass);
     132                }
     133                // sinon c'est que l'auteur n'existe pas
     134                // OU qu'il sera accepte par LDAP ou autre auth
     135        }
     136});
     137/*#EVAL{chr(93)}[(#EVAL{chr(93)})]>*/</script>
Note: See TracChangeset for help on using the changeset viewer.