debut du form de desincription, le hash en js ne fonctionne plus, maintenant que tous nos sites sont en https, je vais laisser filer

This commit is contained in:
Christophe 2020-08-12 23:47:25 +02:00
parent 5d8e2d9f40
commit 3766b28d25
9 changed files with 230 additions and 4 deletions

View file

@ -1,6 +1,6 @@
<div class="inner"> <div class="inner">
<h1>Editer compte SPIP</h1> <h1>Editer compte SPIP</h1>
<div class="ajax"> <div class="ajax">
[(#FORMULAIRE_EDITER_COMPTE_SPIP{})] [(#FORMULAIRE_EDITER_COMPTE_SPIP{#SESSION{id_auteur}})]
</div> </div>
</div> </div>

View file

@ -0,0 +1,8 @@
#CACHE{0}
<div id="supprimer_compte_spip" class="inner">
<h1><:comptespip:supprimer_compte_spip:></h1>
<div class="ajax">
[(#FORMULAIRE_SUPPRIMER_COMPTE_SPIP{#SESSION{id_auteur}})]
</div>
</div>

View file

@ -143,7 +143,25 @@
</div> </div>
</div> </div>
</div> </div>
</fieldset>
<fieldset>
<h3 class="legend"><:comptespip:conf_formulaire_suppression:></h3>
<div class="editer">
#SET{name,choix_suppression_compte}
#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}}
<div class="editer_[(#GET{name})][ (#GET{erreurs}|oui)erreur]">
<label><:comptespip:label_choix_action_suppression:></label>
<div class="choix">
<input type="radio" class="radio" name="#GET{name}" value="" id="#GET{name}_poubelle"[ (#ENV{#GET{name}}|=={''}|?{checked="checked"})] >
<label for="#GET{name}_poubelle"><:comptespip:aller_a_la_poubelle:></label>
</div>
<div class="choix">
<input type="radio" class="radio" name="#GET{name}" value="supprimer" id="#GET{name}_supprimer"[ (#ENV{#GET{name}}|=={supprimer}|?{checked="checked"})] >
<label for="#GET{name}_supprimer"><:comptespip:supprimer_compte_definitivement:></label>
</div>
</div>
</div>
</fieldset> </fieldset>

View file

@ -35,7 +35,8 @@
</fieldset> </fieldset>
<div class="boutons"> <div class="boutons">
<button type="submit" class="btn"><:comptespip:valider:></button> <a class="supprimer_compte_spip btn" href="[(#URL_PAGE{supprimer_compte_spip})]"><:comptespip:btn_supprimer_compte_spip:></a>
<a type="submit" class="btn"><:comptespip:valider:></a>
</div> </div>
</div></form> </div></form>

View file

@ -0,0 +1,75 @@
<div class="formulaire_spip formulaire_#FORM">
[<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>]
[<p class="reponse_formulaire reponse_formulaire_ok">(#ENV*{message_ok})</p>]
[(#ENV{editable}|oui)
<form name="formulaire_#FORM" id="desinscription" action="#ENV{action}" method="post"><div>
#ACTION_FORMULAIRE{#ENV{action}}
<div class="editer_groupe">
<p class="glop">lkdsflsdlkf</p>
<div class='editer editer_new_pass[ (#ENV**{erreurs}|table_valeur{new_pass}|oui)erreur]'>
<label for='new_pass'><:moncompte:entree_mdp_pour_suppression_de_compte:></label>
[ <span class='erreur_message'>(#ENV**{erreurs}|table_valeur{new_pass})</span> ]
<input type='password' autocomplete="off" class='password' name='password' id='password' value="" required />
</div>
<input type="text" value="" name="toto" id="toto"/>
</div>
<p class="boutons"><input type="submit" class="submit" value="<:moncompte:desinscription:>" ></p>
</div></form>
</div>
]
<script type="text/javascript" src="[(#CHEMIN{prive/javascript/login-sha-min.js})]"></script>
<script type="text/javascript">
var login_info = {
'alea_actuel': '#ENV{_alea_actuel}',
'alea_futur': '#ENV{_alea_futur}',
'login': '#ENV{login}',
'compat_md5': false
};
function desinscription_submit() {
}
//console.log(login_info);
//var a = jQuery("input[name=password]");
//var b = a.prop("value");
//console.log(calcule_hash_pass(b));
//if ( b && ( login_info.alea_actuel || login_info.alea_futur )) {
//a.after('<input name="password" type="hidden" value="" />').prop("value", b);
//a.prop("name", "nothing").prop("value",""), calcule_hash_pass(b);
//}
jQuery(function(){
jQuery('form#desinscription').submit(function(e){
e.preventDefault();
var pass = $('#password').val();
if ((login_info.alea_actuel || login_info.alea_futur)
&& !pass.match(/^\{([0-9a-f]{32});([0-9a-f]{32})\}$/i)
&& !pass.match(/^\{([0-9a-f]{64});([0-9a-f]{64});([0-9a-f]{32});([0-9a-f]{32})\}$/i)
&& sha256_self_test() // verifions que le hash sha est operationnel
) {
var hash = "";
hash = hex_sha256(login_info.alea_actuel + pass);
hash = hash+';'+hex_sha256(login_info.alea_futur + pass);
// envoyer aussi le md5 si demande (compatibilite)
if (window.calcMD5){
hash = hash+';'+calcMD5(login_info.alea_actuel + pass);
hash = hash+';'+calcMD5(login_info.alea_futur + pass);
}
jQuery('input#password').prop('value', '');
jQuery('input#toto').prop('value', hash);
};
});
});
</script>

View file

@ -0,0 +1,112 @@
<?php
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
function formulaires_supprimer_compte_spip_charger_dist($id_auteur, $redirect = ''){
if (! intval($id_auteur)) {
return false;
}
$row = sql_fetsel('login, alea_actuel, alea_futur', 'spip_auteurs', 'id_auteur='.intval($id_auteur));
$valeurs = array(
'password' => '',
'toto' => '',
'login' => $row['login'],
'_alea_actuel' => isset($row['alea_actuel']) ? $row['alea_actuel'] : '',
'_alea_futur' => isset($row['alea_futur']) ? $row['alea_futur'] : '',
);
return $valeurs;
}
function formulaires_supprimer_compte_spip_verifier_dist($id_auteur, $redirect = ''){
$erreurs = array();
if (! intval($id_auteur)) {
$erreurs['message_erreur'] = _T('moncompte:action_interdite');
return $erreurs;
}
//champs obligatoire
foreach (array ('password') as $obligatoire) {
if (!_request($obligatoire)) $erreurs[$obligatoire] = _T('obligatoire');
}
return $erreurs;
}
function formulaires_supprimer_compte_spip_traiter_dist($id_auteur, $redirect = ''){
$chaine = _request('password');
$toto = _request('toto');
$chaine = substr($chaine,1, -1);
$password_a_tester = explode(';', $chaine)[0];
$password = sql_getfetsel('pass', 'spip_auteurs', 'id_auteur='.intval($id_auteur));
$retour = array();
if (
!$password or
$password === $password_a_tester
) {
supprimer_ce_compte($id_auteur);
$retour['message_ok'] = _T('moncompte:compte_supprime');
} else {
echo "Ne pas Supprimer";
$retour['message_erreur'] = _T('moncompte:compte_pas_supprime');
}
$retour['redirect'] = "spip.php";
if ($redirect) {
$retour = $redirect;
}
return $retour;
}
function supprimer_ce_compte($id_auteur){
// suppression definitive du compte
$type_action = 'poubelle';
if (lire_config('comptespip/choix_suppression_compte') === 'supprimer' ) {
$type_action = 'suppression';
sql_delete('spip_auteurs','id_auteur='.intval($id_auteur));
sql_delete('spip_forum','id_auteur='.intval($id_auteur));
$from = array(
'spip_auteurs_liens'
);
$where = array(
'id_auteur='.intval($id_auteur),
'objet="article"',
);
$T_id_article = sql_allfetsel('id_objet',$from, $where);
$in = sql_in('id_article', array_column($T_id_article, 'id_objet'));
sql_updateq('spip_articles', array('statut' => 'poubelle'), $in);
} else {
// on passe à la poubelle le compte
sql_updateq('spip_auteurs', array('statut' => '5poubelle'), 'id_auteur='.intval($id_auteur));
sql_updateq('spip_forum', array('auteur' => '', 'email_auteur' => ''), 'id_auteur='.intval($id_auteur));
}
pipeline('comptespip_desinscription',[
'args' => compact('id_auteur', 'type_action'),
'data' => ''
]);
// on deconnecte
$logout = charger_fonction('logout','action');
set_request('url', 'spip.php');
$logout();
// On invalide le cache
include_spip('inc/invalideur');
suivre_invalideur("id='id_auteur/$id_auteur'");
}

View file

@ -7,10 +7,14 @@ if (!defined('_ECRIRE_INC_VERSION')) {
$GLOBALS[$GLOBALS['idx_lang']] = array( $GLOBALS[$GLOBALS['idx_lang']] = array(
// G // AA
'comptespip_titre' => 'CompteSPIP', 'aller_a_la_poubelle' => 'Passer le compte en statut "poubelle"',
// BB
'btn_supprimer_compte_spip' => 'Supprimer btn compte',
// C // C
'comptespip_titre' => 'CompteSPIP',
'cfg_exemple' => 'Exemple', 'cfg_exemple' => 'Exemple',
'cfg_exemple_explication' => 'Explication de cet exemple', 'cfg_exemple_explication' => 'Explication de cet exemple',
'cfg_titre_parametrages' => 'Paramétrages', 'cfg_titre_parametrages' => 'Paramétrages',
@ -29,7 +33,11 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
'conf_label_logo_auteur' => "Autoriser la modification du logo de l'auteur", 'conf_label_logo_auteur' => "Autoriser la modification du logo de l'auteur",
'conf_label_desactiver_page_connect' => "Désactiver la page connect", 'conf_label_desactiver_page_connect' => "Désactiver la page connect",
'conf_label_desactiver_page_connect_expl' => "Page d'inscription et de login", 'conf_label_desactiver_page_connect_expl' => "Page d'inscription et de login",
'conf_formulaire_suppression' => "Configuration du formulaire de suppression de compte SPIP",
// LL
'label_entree_mdp_pour_suppression_de_compte' => "Entrer votre mot de passe pour pouvoir vous désinscrire",
'label_choix_action_suppression' => 'Action lors de désinscription',
// MM // MM
'message_mail' => 'Voici vos identifiants pour vous connecter sur le site "@nom_site_spip@" (@adresse_login@) :', 'message_mail' => 'Voici vos identifiants pour vous connecter sur le site "@nom_site_spip@" (@adresse_login@) :',
@ -40,6 +48,9 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
// OO // OO
'oui' => 'Oui', 'oui' => 'Oui',
// SS
'supprimer_compte_spip' => "Suppression de mon compte",
'supprimer_compte_definitivement' => 'Supprimer le compte définitivement',
// T // T
'titre_page_configurer_comptespip' => 'CompteSPIP', 'titre_page_configurer_comptespip' => 'CompteSPIP',
); );

View file

@ -19,6 +19,7 @@
<pipeline nom="autoriser" inclure="comptespip_autorisations.php" /> <pipeline nom="autoriser" inclure="comptespip_autorisations.php" />
<pipeline nom="insert_head_css" inclure="comptespip_pipelines.php" /> <pipeline nom="insert_head_css" inclure="comptespip_pipelines.php" />
<pipeline nom="comptespip_desinscription" action="" />
<pipeline nom="comptespip_pre_inscription" action="" /> <pipeline nom="comptespip_pre_inscription" action="" />
<pipeline nom="comptespip_pre_login" action="" /> <pipeline nom="comptespip_pre_login" action="" />