1 | <?php |
---|
2 | # ACS |
---|
3 | # (Plugin Spip) |
---|
4 | # http://acs.geomaticien.org |
---|
5 | # |
---|
6 | # Copyright Daniel FAIVRE, 2007-2011 |
---|
7 | # Copyleft: licence GPL - Cf. LICENCES.txt |
---|
8 | |
---|
9 | /** |
---|
10 | * acs_onload_ecrire est appellé au chargement de l'espace ecrire. |
---|
11 | * les fonctions définies ici sont disponibles dans tout l'espace ecrire |
---|
12 | */ |
---|
13 | |
---|
14 | // Contrôle l'accès aux pages de configuration, dont celles déclarées dans $GLOBALS['ACS_ACCES'] (acs_options) |
---|
15 | // et celles déclarées dans $GLOBALS['meta']['ACS_CADENASSE'] (inc/acs_adm) |
---|
16 | if (_request('exec')) |
---|
17 | acs_acces(_request('exec')); |
---|
18 | |
---|
19 | /** |
---|
20 | * Contrôle l'accès à la page $page |
---|
21 | * Les pages à contrôler sont déclarées dans $GLOBALS['ACS_ACCES'] (acs_options) |
---|
22 | * et dans $GLOBALS['meta']['ACS_CADENASSE'] (inc/acs_adm) |
---|
23 | * |
---|
24 | * @param string $page |
---|
25 | */ |
---|
26 | function acs_acces($page) { |
---|
27 | // les fichiers exec de configuration de spip sont administrés par les mêmes admins qu'ACS |
---|
28 | $enfer = array('acs', |
---|
29 | 'acs_editer_admins', |
---|
30 | 'acs_selectionner_admin', |
---|
31 | 'acs_rechercher_admin', |
---|
32 | 'acs_page_get_infos', |
---|
33 | 'composant_get_infos', |
---|
34 | 'composant_get_trad', |
---|
35 | 'configuration', |
---|
36 | 'config_lang', |
---|
37 | 'admin_tech', |
---|
38 | 'admin_vider', |
---|
39 | 'admin_plugin'); |
---|
40 | |
---|
41 | // Les pages administrés par les mêmes admins qu'ACS |
---|
42 | if (isset($GLOBALS['ACS_ACCES']) && is_array($GLOBALS['ACS_ACCES']) && count($GLOBALS['ACS_ACCES'])) |
---|
43 | $enfer = array_merge($GLOBALS['ACS_ACCES'], $enfer); |
---|
44 | $GLOBALS['ACS_ENFER'] = $enfer; // On garde cette définition pour affichage |
---|
45 | |
---|
46 | if (isset($GLOBALS['meta']['ACS_ADMINS'])) { // Pas d'action avant initialisation d'ACS ! |
---|
47 | // Les pages à accès contrôlé par ACS, avec choix des admins |
---|
48 | if (isset($GLOBALS['meta']['ACS_CADENASSE']) && $GLOBALS['meta']['ACS_CADENASSE']) { |
---|
49 | $acsCadenasse = unserialize($GLOBALS['meta']['ACS_CADENASSE']); |
---|
50 | if (is_array($acsCadenasse) && isset($acsCadenasse[$page])) { |
---|
51 | if (!in_array($GLOBALS['auteur_session']['id_auteur'], array_keys($acsCadenasse[$page]))) |
---|
52 | acs_exit(); |
---|
53 | } |
---|
54 | } |
---|
55 | if (in_array($page, $enfer) && (!acs_autorise())) |
---|
56 | acs_exit(); |
---|
57 | } |
---|
58 | } |
---|
59 | |
---|
60 | // (ressemble vaguement à exec_configuration_dist() de spip 1.9.2 - http://doc.spip.org/@exec_configuration_dist) |
---|
61 | function acs_exit() { |
---|
62 | global $spip_version_code; |
---|
63 | |
---|
64 | if (!isset($GLOBALS['auteur_session']['statut'])) { |
---|
65 | include_spip('inc/headers'); |
---|
66 | redirige_par_entete(generer_url_public('login')); |
---|
67 | } |
---|
68 | |
---|
69 | include_spip('inc/acs_presentation'); |
---|
70 | include_spip('inc/config'); |
---|
71 | |
---|
72 | $GLOBALS['couleur_foncee'] = '#ffaf00'; |
---|
73 | $GLOBALS['couleur_claire'] = '#ff0000'; |
---|
74 | if($spip_version_code >= 1.93) |
---|
75 | echo '<html><body>'; // commencer_page_dist() buggé avec version 1.9.3svn du 11/04/2008 |
---|
76 | else |
---|
77 | echo acs_commencer_page(_T('avis_non_acces_page'), "administration", "interdit"); |
---|
78 | |
---|
79 | echo '<br /><div style="width: 50%">'; |
---|
80 | echo '<h2 class="alert">'._T('avis_non_acces_page').'</h2>'; |
---|
81 | if (in_array(_request('exec'), $GLOBALS['ACS_ENFER'])) |
---|
82 | echo avertissement_config(); |
---|
83 | echo '</div>'; |
---|
84 | echo fin_gauche(), fin_page(); |
---|
85 | exit; |
---|
86 | } |
---|
87 | |
---|
88 | |
---|
89 | |
---|
90 | // Lit un tableau sérialisé dans une variable meta |
---|
91 | // Read serialized array in meta variable |
---|
92 | function meta2array($meta) { |
---|
93 | $r = unserialize($GLOBALS['meta'][$meta]); |
---|
94 | if (is_array($r)) |
---|
95 | return $r; |
---|
96 | return $GLOBALS['meta'][$meta]; |
---|
97 | } |
---|
98 | |
---|
99 | ?> |
---|