fix: compat spip 4 et sup

This commit is contained in:
Christophe 2024-11-15 11:23:20 +01:00
parent 7683235a46
commit 17b16a2990
2 changed files with 26 additions and 96 deletions

View file

@ -85,14 +85,6 @@
[(#SET{min,#VAL{minlength=}|concat{#ENV{pass_longeur_mini,6}}})] [(#SET{min,#VAL{minlength=}|concat{#ENV{pass_longeur_mini,6}}})]
[(#SET{chaine_langue,#VAL{comptespip:champ_password}|_T{#ARRAY{min,#ENV{pass_longeur_mini}}}})] [(#SET{chaine_langue,#VAL{comptespip:champ_password}|_T{#ARRAY{min,#ENV{pass_longeur_mini}}}})]
<div style="height: 0;">
[(#SAISIE{input,new_password}
{type=hidden}
)]
[(#SAISIE{input,new_password_confirmation}
{type=hidden}
)]
</div>
[(#SAISIE{input,password} [(#SAISIE{input,password}
{type=password} {type=password}
{attributs=#GET{min}} {attributs=#GET{min}}
@ -114,33 +106,3 @@
</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(){
setTimeout(()=> $('#champ_password_confirmation').val(''), 400);
jQuery('form#editer_compte_spip').on('submit', function(e){
['#champ_password', "#champ_password_confirmation"].forEach((champ)=>{
var pass = $(champ).val();
$(champ).val('');
if (pass
&& !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(pass);
if ( hash ) {
if (champ === "#champ_password") {
$('input#champ_new_password').val(hash);
} else {
$('input#champ_new_password_confirmation').val(hash);
}
}
}
});
});
});
</script>

View file

@ -32,8 +32,6 @@ function formulaires_editer_compte_spip_charger_dist($id_auteur = 'new', $redir
} }
$valeurs['alea'] = ''; $valeurs['alea'] = '';
$valeurs['new_password'] = '';
$valeurs['new_password_confirmation'] = '';
$valeurs['password'] = ''; $valeurs['password'] = '';
$valeurs['password_confirmation'] = ''; $valeurs['password_confirmation'] = '';
$valeurs['pass_longeur_mini'] = _PASS_LONGUEUR_MINI; $valeurs['pass_longeur_mini'] = _PASS_LONGUEUR_MINI;
@ -51,21 +49,17 @@ function formulaires_editer_compte_spip_verifier_dist($id_auteur = 'new', $redi
} }
// mot de passe // mot de passe
if (_request('new_password') != _request('new_password_confirmation')){ if (_request('password') != _request('password_confirmation')){
$erreurs['new_password_confirmation'] = _T('info_passes_identiques'); $erreurs['password_confirmation'] = _T('info_passes_identiques');
} }
//if ( strlen(_request('password')) > 0 and strlen(_request('password')) < _PASS_LONGUEUR_MINI ){
//$erreurs['password'] = _T('info_passe_trop_court_car_pluriel', array('nb' => _PASS_LONGUEUR_MINI));
//}
// Mais si l'un des deux champs n'est pas rempli, cette erreur prend le dessus // Mais si l'un des deux champs n'est pas rempli, cette erreur prend le dessus
if ($id_auteur === 'new') { if ($id_auteur === 'new') {
if (!_request('new_password')){ if (!_request('password')){
$erreurs['new_password'] = _T('info_obligatoire'); $erreurs['password'] = _T('info_obligatoire');
} }
if (!_request('new_password_confirmation')){ if (!_request('password_confirmation')){
$erreurs['new_password_confirmation'] = _T('info_obligatoire'); $erreurs['password_confirmation'] = _T('info_obligatoire');
} }
} }
@ -130,7 +124,6 @@ function formulaires_editer_compte_spip_verifier_dist($id_auteur = 'new', $redi
$erreurs['mobile'] = _T('comptespip:telephone_deja_enregistre'); $erreurs['mobile'] = _T('comptespip:telephone_deja_enregistre');
} }
} }
return $erreurs; return $erreurs;
} }
@ -147,9 +140,7 @@ function formulaires_editer_compte_spip_traiter_dist($id_auteur = 'new', $redir
} }
include_spip('action/editer_auteur'); include_spip('action/editer_auteur');
include_spip('inc/acces'); $password = _request('password');
$password = _request('new_password');
$update = true; $update = true;
$set = []; $set = [];
@ -164,27 +155,11 @@ function formulaires_editer_compte_spip_traiter_dist($id_auteur = 'new', $redir
if (lire_config('comptespip/login_telephone') === 'oui') { if (lire_config('comptespip/login_telephone') === 'oui') {
$login = _request('telephone'); $login = _request('telephone');
} else { } else {
// $search = [ ' ', "'", 'é' ];
// $replace = [ '_', '_', 'e' ];
// $login = strtolower(str_replace($search, $replace, _request('nom')));
// $login .= '_'.$id_auteur;
$login = 'login_'.$id_auteur; $login = 'login_'.$id_auteur;
} }
$set['login'] = $login; $set_inst['login'] = $login;
$set['statut'] = $mode; $set_inst['statut'] = $mode;
if (strlen($password) < 50) { auteur_instituer($id_auteur, $set_inst);
include_spip('inc/acces');
include_spip('auth/sha256.inc');
$alea_actuel = creer_uniqid();
$pass = spip_sha256($alea_actuel . $password);
$set['pass'] = $pass;
$set['alea_actuel'] = $alea_actuel;
$set['alea_futur'] = $alea_actuel;
} else {
$set['pass'] = $password;
$set['alea_actuel'] = "";
$set['alea_futur'] = creer_uniqid();
}
/* /*
* Branchement sur le plugin Autorisations etendues * Branchement sur le plugin Autorisations etendues
*/ */
@ -205,28 +180,20 @@ function formulaires_editer_compte_spip_traiter_dist($id_auteur = 'new', $redir
'data' => $set 'data' => $set
) )
); );
} else {
if ($password) {
// si le password fait moins de 50 caracteres, on peut penser que le javascript n'a pas fonctionné, on crypte alors le mdp
if (strlen($password) < 50) {
include_spip('inc/acces');
include_spip('auth/sha256.inc');
$alea_actuel = creer_uniqid();
$pass = spip_sha256($alea_actuel . $password);
$set['pass'] = $pass;
$set['alea_actuel'] = $alea_actuel;
$set['alea_futur'] = $alea_actuel;
} else {
$set['pass'] = $password;
$set['alea_actuel'] = "";
$set['alea_futur'] = creer_uniqid();
} }
if ($password) {
auteur_instituer($id_auteur, [
'pass' => $password
]);
} }
if (lire_config('comptespip/login_telephone') === 'oui') { if (lire_config('comptespip/login_telephone') === 'oui') {
$set['login'] = _request('telephone'); auteur_instituer($id_auteur, [
} 'login' => _request('telephone')
]);
} }
if (!empty($saisies)) { if (!empty($saisies)) {
foreach ($saisies as $saisie) { foreach ($saisies as $saisie) {
$champ = $saisie['options']['nom']; $champ = $saisie['options']['nom'];
@ -257,7 +224,8 @@ function formulaires_editer_compte_spip_traiter_dist($id_auteur = 'new', $redir
'data' => $set 'data' => $set
) )
); );
$r = sql_updateq('spip_auteurs', $set, 'id_auteur='.intval($id_auteur)); // $r = sql_updateq('spip_auteurs', $set, 'id_auteur='.intval($id_auteur));
$r = auteur_modifier($id_auteur, $set);
} }
} }
@ -310,9 +278,9 @@ function formulaires_editer_compte_spip_traiter_dist($id_auteur = 'new', $redir
if ($r) { if ($r) {
$retour['message_ok'] = _T('comptespip:modification_compte_ok');
} else {
$retour['message_erreur'] = _T('comptespip:erreur_edition_compte'); $retour['message_erreur'] = _T('comptespip:erreur_edition_compte');
} else {
$retour['message_ok'] = _T('comptespip:modification_compte_ok');
} }
if ($redirect) { if ($redirect) {