formulaire inscription utilise le meme que le formulaire d'update, la gestion du mot de passe est crypter coté client

This commit is contained in:
Christophe 2020-08-13 21:53:24 +02:00
parent 6ea2fd9cb6
commit aa47d7916d
5 changed files with 119 additions and 55 deletions

View file

@ -23,6 +23,15 @@ $GLOBALS['comptespip_editer'] = [
//'fonction' => 'ma_super_fonction' //'fonction' => 'ma_super_fonction'
) )
], ],
[
'saisie' => 'input',
'options' => array(
'nom' => 'prenom',
'label' => 'Votre prénom',
'obligatoire' => 'oui',
//'fonction' => 'ma_super_fonction'
)
],
[ [
'saisie' => 'input', 'saisie' => 'input',
'options' => array( 'options' => array(

View file

@ -17,7 +17,7 @@
<div class="se_connecter inner"> <div class="se_connecter inner">
<div class="grid-2"> <div class="grid-2">
<div class="sinscrire"> <div class="sinscrire">
[(#FORMULAIRE_CREER_COMPTE_SPIP{})] [(#FORMULAIRE_EDITER_COMPTE_SPIP{})]
</div> </div>
<div class="login"> <div class="login">
<h3 class="mlm">Se connecter</h3> <h3 class="mlm">Se connecter</h3>

View file

@ -3,19 +3,21 @@
[<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>] [<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>]
[<p class="reponse_formulaire reponse_formulaire_ok">(#ENV*{message_ok})</p>] [<p class="reponse_formulaire reponse_formulaire_ok">(#ENV*{message_ok})</p>]
<form name="formulaire_#FORM" action="#ENV{action}" method="post"><div> <form name="formulaire_#FORM" id="editer_compte_spip" action="#ENV{action}" method="post"><div>
#ACTION_FORMULAIRE{#ENV{action}} #ACTION_FORMULAIRE{#ENV{action}}
<div class="comptespip_logo_auteur"> [(#ENV{id_auteur}|!={new}|oui)
<INCLURE{fond=inclure/logo_auteur,id_auteur,env}> <div class="comptespip_logo_auteur">
<INCLURE{fond=inclure/logo_auteur,id_auteur,env}>
[(#ENV{_bigup_rechercher_fichiers}|oui) [(#ENV{_bigup_rechercher_fichiers}|oui)
[(#SAISIE{bigup, logo, form, formulaire_args} [(#SAISIE{bigup, logo, form, formulaire_args}
{previsualiser=oui} {previsualiser=oui}
{accept=image/*} {accept=image/*}
)] )]
] ]
</div> </div>
]
<div> <div>
#GENERER_SAISIES{#ENV{_saisies}} #GENERER_SAISIES{#ENV{_saisies}}
@ -35,9 +37,36 @@
</fieldset> </fieldset>
<div class="boutons"> <div class="boutons">
[(#ENV{id_auteur}|!={new}|oui)
<a class="supprimer_compte_spip btn" href="[(#URL_PAGE{supprimer_compte_spip})]"><:comptespip:btn_supprimer_compte_spip:></a> <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> ]
<button type="submit" class="btn"><:comptespip:valider:></button>
</div> </div>
</div></form> </div></form>
</div> </div>
<script type="text/javascript" src="[(#CHEMIN{prive/javascript/login-sha-min.js})]"></script>
<script type="text/javascript">
jQuery(function(){
jQuery('form#editer_compte_spip').on('submit', function(e){
var alea = "#ENV{alea}";
['#champ_password', "#champ_password_confirmation"].forEach((champ)=>{
var pass = $(champ).val();
console.log(alea);
if (!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 = hex_sha256(alea + pass);
if ( hash ) {
$('input'+champ).val(hash);
}
}
});
});
});
</script>

View file

@ -6,35 +6,23 @@ function formulaires_editer_compte_spip_saisies_dist($id_auteur = 'new', $redir
return $saisies; return $saisies;
} }
function comptespip_recupIdauteur($id_auteur){
include_spip('inc/autoriser');
static $id;
if ($id === null) {
if (autoriser("administrer","comptespip") and intval($id_auteur)) {
$id = intval($id_auteur);
}
if (isset($GLOBALS['visiteur_session']['id_auteur']) AND $GLOBALS['visiteur_session']['id_auteur']) {
$id = $GLOBALS['visiteur_session']['id_auteur'];
}
$id = 'new';
}
return $id;
}
function formulaires_editer_compte_spip_charger_dist($id_auteur = 'new', $redirect = ''){ function formulaires_editer_compte_spip_charger_dist($id_auteur = 'new', $redirect = ''){
$id_auteur = comptespip_recupIdauteur($id_auteur); $id_auteur = comptespip_recupIdauteur($id_auteur);
$valeurs = []; $valeurs = ['id_auteur' => $id_auteur];
if (intval($id_auteur)) { if (intval($id_auteur)) {
$valeurs = sql_fetsel('*', 'spip_auteurs', 'id_auteur='.intval($id_auteur)); $valeurs = sql_fetsel('*', 'spip_auteurs', 'id_auteur='.intval($id_auteur));
if (lire_config('comptespip/modif_logo_auteur')) {
$valeurs['_bigup_rechercher_fichiers'] = 'true';
$valeurs['logo'] = '';
$valeurs['alea'] = $valeurs['alea_actuel'];
}
} }
$valeurs['alea'] = '';
$valeurs['password'] = ''; $valeurs['password'] = '';
$valeurs['password_confirmation'] = ''; $valeurs['password_confirmation'] = '';
if (lire_config('comptespip/modif_logo_auteur')) {
$valeurs['_bigup_rechercher_fichiers'] = 'true';
$valeurs['logo'] = '';
}
return $valeurs; return $valeurs;
} }
@ -123,15 +111,32 @@ function formulaires_editer_compte_spip_traiter_dist($id_auteur = 'new', $redir
$saisies = $GLOBALS['comptespip_editer']; $saisies = $GLOBALS['comptespip_editer'];
$id_auteur = comptespip_recupIdauteur($id_auteur); $id_auteur = comptespip_recupIdauteur($id_auteur);
$mode = lire_config('comptespip/statut');
$retour = []; $retour = [];
include_spip('action/editer_auteur'); include_spip('action/editer_auteur');
$password = _request('password');
$update = true;
$set = [];
if (!intval($id_auteur)) { if (!intval($id_auteur)) {
$id_auteur = auteur_inserer(); $id_auteur = auteur_inserer();
$update = false;
$search = [ ' ', "'", 'é' ];
$replace = [ '_', '_', 'e' ];
$login = strtolower(str_replace($search, $replace, _request('nom')));
$login .= '_'.$id_auteur;
$set['login'] = $login;
$set['pass'] = $password;
$set['statut'] = $mode;
} else {
if ($password) {
$set['pass'] = $password;
}
} }
if (!empty($saisies)) { if (!empty($saisies)) {
$set = [];
foreach ($saisies as $saisie) { foreach ($saisies as $saisie) {
$champ = $saisie['options']['nom']; $champ = $saisie['options']['nom'];
if (isset($f) and !empty($f)) { if (isset($f) and !empty($f)) {
@ -141,37 +146,42 @@ function formulaires_editer_compte_spip_traiter_dist($id_auteur = 'new', $redir
} }
} }
if (count($set) > 0) { if (count($set) > 0) {
$r = auteur_modifier($id_auteur, $set); $r = sql_updateq('spip_auteurs', $set, 'id_auteur='.intval($id_auteur));
} }
} }
// gestion du login et du password if ($update and lire_config('comptespip/modif_logo_auteur')) {
if (_request('login')) {
$login = _request('login');
}
if (_request('password')) {
$pass = _request('password');
}
$set_instituer = [
'pass' => $pass,
'login' => $login
];
auteur_instituer($id_auteur, $set_instituer);
if (lire_config('comptespip/modif_logo_auteur')) {
comptespip_save_logo_auteur($id_auteur); comptespip_save_logo_auteur($id_auteur);
} }
include_spip('inc/invalideur'); include_spip('inc/invalideur');
suivre_invalideur("id='id_auteur/$id_auteur'"); suivre_invalideur("id='id_auteur/$id_auteur'");
if ($r) { if (!$update and lire_config('comptespip/connexion_auto')) {
$retour['message_erreur'] = $r; // loguer le compte créé (on a vérifié par SMS)
} else { $auteur = sql_fetsel('*','spip_auteurs','id_auteur='.intval($id_auteur));
$retour['message_ok'] = _T('comptespip/modification_compte_ok'); include_spip('inc/auth');
auth_loger($auteur);
if (lire_config('comptespip/page_redirection_connexion')) {
$retour = parametre_url(generer_url_public(lire_config('comptespip/page_redirection_connexion'),'',true),'id_auteur',intval($id_auteur));
}
return array('message_ok' => _T('form_forum_identifiant_mail'), 'redirect' => $retour);
} }
if ($update) {
$auteur = sql_fetsel('*','spip_auteurs','id_auteur='.intval($id_auteur));
include_spip('inc/session');
actualiser_sessions($auteur);
}
if ($r) {
$retour['message_ok'] = _T('comptespip:modification_compte_ok');
} else {
$retour['message_erreur'] = _T('comptespip:erreur_edition_compte');
}
if ($redirect) { if ($redirect) {
$retour['redirect'] = $redirect; $retour['redirect'] = $redirect;
} }
@ -194,3 +204,19 @@ function comptespip_save_logo_auteur($id_auteur){
autoriser_exception('modifier', 'article', $id_auteur, false); autoriser_exception('modifier', 'article', $id_auteur, false);
} }
} }
function comptespip_recupIdauteur($id_auteur){
include_spip('inc/autoriser');
static $id;
if ($id === null) {
if (autoriser("administrer","comptespip") and intval($id_auteur)) {
$id = intval($id_auteur);
}
if (isset($GLOBALS['visiteur_session']['id_auteur']) AND $GLOBALS['visiteur_session']['id_auteur']) {
$id = $GLOBALS['visiteur_session']['id_auteur'];
}
$id = 'new';
}
return $id;
}

View file

@ -11,7 +11,7 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
'aller_a_la_poubelle' => 'Passer le compte en statut "poubelle"', 'aller_a_la_poubelle' => 'Passer le compte en statut "poubelle"',
// BB // BB
'btn_supprimer_compte_spip' => 'Supprimer btn compte', 'btn_supprimer_compte_spip' => 'Supprimer mon compte',
// C // C
'comptespip_titre' => 'CompteSPIP', 'comptespip_titre' => 'CompteSPIP',