diff --git a/comptespip_autorisations.php b/comptespip_autorisations.php index cd11a6c..acecbc4 100644 --- a/comptespip_autorisations.php +++ b/comptespip_autorisations.php @@ -32,3 +32,16 @@ function autoriser_inscrireauteur($faire, $quoi, $id, $qui, $opt) { return false; } +function autoriser_comptespip_administrer_dist($faire, $type, $id, $qui, $opt) { + return in_array($qui['statut'], array('0minirezo')); +} + +function autoriser_comptespip_modifier_dist($faire, $type, $id, $qui, $opt) { + if (autoriser('administrer','comptespip')) { + return true; + } + if ($id === $qui['id_auteur']) { + return true; + } + return false; +} diff --git a/formulaires/editer_compte_spip.php b/formulaires/editer_compte_spip.php index 1c4a674..68d3ce6 100644 --- a/formulaires/editer_compte_spip.php +++ b/formulaires/editer_compte_spip.php @@ -6,9 +6,28 @@ function formulaires_editer_compte_spip_saisies_dist($id_auteur = 'new', $redir 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 = ''){ - $id_auteur = session_get('id_auteur'); - $valeurs = sql_fetsel('*', 'spip_auteurs', 'id_auteur='.intval($id_auteur)); + $id_auteur = comptespip_recupIdauteur($id_auteur); + + $valeurs = []; + if (intval($id_auteur)) { + $valeurs = sql_fetsel('*', 'spip_auteurs', 'id_auteur='.intval($id_auteur)); + } $valeurs['password'] = ''; $valeurs['password_confirmation'] = ''; @@ -21,7 +40,7 @@ function formulaires_editer_compte_spip_charger_dist($id_auteur = 'new', $redir } function formulaires_editer_compte_spip_verifier_dist($id_auteur = 'new', $redirect = ''){ - $id_auteur = session_get('id_auteur'); + $id_auteur = comptespip_recupIdauteur($id_auteur); $erreurs = array(); $mode = lire_config('comptespip/statut'); @@ -103,8 +122,13 @@ function formulaires_editer_compte_spip_verifier_dist($id_auteur = 'new', $redi function formulaires_editer_compte_spip_traiter_dist($id_auteur = 'new', $redirect = ''){ $saisies = $GLOBALS['comptespip_editer']; - $id_auteur = session_get('id_auteur'); + $id_auteur = comptespip_recupIdauteur($id_auteur); $retour = []; + include_spip('action/editer_auteur'); + + if (!intval($id_auteur)) { + $id_auteur = auteur_inserer(); + } if (!empty($saisies)) { $set = []; @@ -117,7 +141,6 @@ function formulaires_editer_compte_spip_traiter_dist($id_auteur = 'new', $redir } } if (count($set) > 0) { - include_spip('action/editer_auteur'); $r = auteur_modifier($id_auteur, $set); } }