From 0f0bd471e5ee25bab461439479bf9141a2a209a8 Mon Sep 17 00:00:00 2001 From: Fil <fil@rezo.net> Date: Tue, 2 Jan 2007 22:10:48 +0000 Subject: [PATCH] une constante define('_ID_WEBMESTRES', '1:5'); dans mes_options permet d'eviter a ces deux admins de devoir s'authentifier par ftp pour faire les trucs dangereux ... le mecanisme est bon, mais il reste a voir le nommage et la valeur par defaut (je mettrais bien '1' mais ca ouvre un trou); par ailleurs meilleur nommage de autoriser('modererpetition', 'article'), desole pour qui aurait deja exploite cette API --- ecrire/exec/articles.php | 2 +- ecrire/exec/controle_petition.php | 4 ++-- ecrire/inc/admin.php | 31 ++++++++++++++++++++++++++----- ecrire/inc/autoriser.php | 15 +++++++++++++-- 4 files changed, 42 insertions(+), 10 deletions(-) diff --git a/ecrire/exec/articles.php b/ecrire/exec/articles.php index b5be2f786f..723abd1a32 100644 --- a/ecrire/exec/articles.php +++ b/ecrire/exec/articles.php @@ -262,7 +262,7 @@ function boites_de_config_articles($id_article) $regler = $regler_moderation($id_article,"articles","id_article=$id_article"); } - if (autoriser('moderer_petition', 'article', $id_article)) { + if (autoriser('modererpetition', 'article', $id_article)) { $petitionner = charger_fonction('petitionner', 'inc'); $petition = $petitionner($id_article,"articles","id_article=$id_article"); } diff --git a/ecrire/exec/controle_petition.php b/ecrire/exec/controle_petition.php index 3b7649783a..d422ad6cce 100644 --- a/ecrire/exec/controle_petition.php +++ b/ecrire/exec/controle_petition.php @@ -23,10 +23,10 @@ function exec_controle_petition_dist() $id_article = intval(_request('id_article')); if ( - autoriser('moderer_petition') + autoriser('modererpetition') OR ( $id_article > 0 - AND autoriser('moderer_petition', 'article', $id_article) + AND autoriser('modererpetition', 'article', $id_article) ) ) { diff --git a/ecrire/inc/admin.php b/ecrire/inc/admin.php index fd93c4aaec..42a7d4a683 100644 --- a/ecrire/inc/admin.php +++ b/ecrire/inc/admin.php @@ -31,8 +31,8 @@ function debut_admin($script, $action, $commentaire='') { $dir = _DIR_TMP; } else { $dir = _DIR_TRANSFERT . $connect_login . '/'; - } + $signal = fichier_admin($action); if (@file_exists($dir . $signal)) { spip_log ("Action admin: $action"); @@ -42,9 +42,29 @@ function debut_admin($script, $action, $commentaire='') { include_spip('inc/texte'); $commentaire = ("\n<p>".propre($commentaire)."</p>\n"); } + include_spip('inc/minipres'); + include_spip('inc/autoriser'); + - $form = $commentaire + // Si on est un super-admin, un bouton de validation suffit + // nom de l'autorisation a revoir... 'webmestre' veut tout et rien dire... + if (autoriser('webmestre')) { + if (_request('validation_admin') == $signal) { + spip_log ("Action super-admin: $action"); + return true; + } + $form = $commentaire + . "<form action='./' method='post'>" + . copy_request($script) + . '<input type="hidden" name="validation_admin" value="'.$signal.'" />' + . bouton_suivant(_T('bouton_valider')) + . "</form>"; + $js = ''; + } + + else { + $form = $commentaire . "<form action='./' method='post'>" . copy_request($script) . fieldset(_T('info_authentification_ftp').aide("ftp_auth"), @@ -57,14 +77,15 @@ function debut_admin($script, $action, $commentaire='') { . _T('info_creer_repertoire_2', array('repertoire' => joli_repertoire($dir))) . bouton_suivant(_T('bouton_recharger_page')))) . "</form>"; + $js = " onload='document.forms[0].fichier.value=\"\";barre_inserer(\"$signal\", document.forms[0].fichier)'"; + } // code volontairement tordu: // provoquer la copie dans le presse papier du nom du repertoire - // en remettant a vide le champ pour que ça marche aussi en cas + // en remettant a vide le champ pour que ca marche aussi en cas // de JavaScript inactif. echo minipres(_T('info_action', array('action' => $action)), - $form -, " onload='document.forms[0].fichier.value=\"\";barre_inserer(\"$signal\", document.forms[0].fichier)'"); + $form, $js); exit; } diff --git a/ecrire/inc/autoriser.php b/ecrire/inc/autoriser.php index 21126e3660..67e3a52a2a 100644 --- a/ecrire/inc/autoriser.php +++ b/ecrire/inc/autoriser.php @@ -225,10 +225,21 @@ function autoriser_signature_modifier_dist($faire, $type, $id, $qui, $opt) { // Moderer la petition ? // = modifier l'article correspondant // = droits par defaut sinon (admin complet pour moderation de tout) -// http://doc.spip.org/@autoriser_moderer_petition_dist -function autoriser_moderer_petition_dist($faire, $type, $id, $qui, $opt) { +// http://doc.spip.org/@autoriser_modererpetition_dist +function autoriser_modererpetition_dist($faire, $type, $id, $qui, $opt) { return autoriser('modifier', $type, $id, $qui, $opt); } +// Est-on webmestre ? Signifie qu'on n'a meme pas besoin de passer par ftp +// pour modifier les fichiers, cf. notamment inc/admin +// = rien ni personne sauf definition de +// a l'avenir peut-etre autoriser "admin numero 1" ou une interface de selection +function autoriser_webmestre_dist($faire, $type, $id, $qui, $opt) { + return + (defined('_ID_WEBMESTRES') AND in_array($qui['id_auteur'], explode(':', _ID_WEBMESTRES)) AND $qui['statut'] == '0minirezo' AND !$qui['restreint']) + OR false; +} + + ?> -- GitLab