1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179
| DEFINE("NIV_ADMIN",8) ;
DEFINE("NIV_CENTRALE",6) ;
DEFINE("NIV_ACA",4) ;
DEFINE("NIV_IA",2) ;
DEFINE("NIV_USER",1) ; // connecté
DEFINE("NIV_ANONYME",0) ;
DEFINE("MODE_MAJ",true) ; // utilisé aussi dans libsecur
$champs_modifiables = array (
NIV_IA => 'nom,prenom,grade,tel,fax,iddep,adresse,email,s_fonc,ligne',
NIV_ACA => 'nom,prenom,grade,tel,fax,iddep,adresse,email,s_fonc,ligne',
NIV_CENTRALE => 'nom,prenom,grade,tel,fax,idacad,iddep,adresse,email,s_fonc,ligne',
NIV_ADMIN => 'nom,prenom,grade,tel,fax,idacad,iddep,adresse,email,s_fonc,ligne'
) ;
$action = @$action?$action:"home";// par defaut, l'action est home
$params = array (
'home' => array('home',NIV_ANONYME,'home','Liste'),
'login'=> array('login',NIV_ANONYME,'home','Connexion'),
'logout'=> array('logout',NIV_USER,'home','Déconnexion'),
'pref'=> array('',NIV_USER,'pref','Préférences'),
'get_passwd'=> array('get_passwd',NIV_ANONYME,'get_passwd',''),
'nou_passwd'=> array('nou_passwd',NIV_IA,'nou_passwd',''),
'nou_param'=> array('nou_param',NIV_IA,'nou_param',''),
'ajout_cor'=>array('ajout_cor',NIV_IA,'edit_cor','Ajout d\'un correspondant'),
'suppr_cor'=>array('suppr_cor',NIV_CENTRALE,'suppr_cor','Suppression d\'un correspondant'),
'choix'=>array('choix',NIV_IA,'home','Choix'),
'ordre'=>array('ordre',NIV_IA,'home','Ordre'),
'importer'=>array('importer',NIV_IA,'home',''),
'admin'=> array('admin',NIV_CENTRALE,'admin','Administration des comptes'),
'editcpt'=>array('editcpt',NIV_CENTRALE,'r_editcpt','Édition d\'un compte'),
'ajoutcpt'=>array('ajoutcpt',NIV_ADMIN,'r_ajoutcpt','Ajout d\'un compte'),
'suppcpt'=>array('suppcpt',NIV_ADMIN,'r_suppcpt','Suppression d\'un compte'),
'envoimdpcpt'=>array('envoimdpcpt',NIV_CENTRALE,'admin','Envoi mot de passe d\'un compte'),
'aide'=>array('',NIV_ANONYME,'aide','','Aide')
);
if (MODE_MAJ)
$params['edit_cor'] = array('edit_cor',NIV_IA,'edit_cor','Édition d\'un correspondant');
else
$params['edit_cor'] = array('edit_cor',NIV_CENTRALE,'edit_cor','Édition d\'un correspondant');
if (!@$params[$action]){ // action inconnue = erreur fatale
print "<font color='red'>Désolé : commande non disponible<br> </font>";
exit;
}
define('DOSSIER','D0160F');
//define('DOSSIERLIB',dirname(__FILE__).'/../D0001F/'.DOSSIER.'/admcor'); // rep des biblio
//define('DOSSIERLIBSECURBASE',dirname(__FILE__).'/../D0001F/'.DOSSIER.'/securbase_commun/'); // rep des biblio
require("libsecur.php"); // librairie spécifique, incluant la librairie globale lib.php
//require(DOSSIERLIBSECURBASE."libsecur_test.php"); // librairie spécifique, incluant la librairie globale lib.php
require("initdb.php");
connect("securbase");
//print_r($params);
//-- récupération des variables de session
session_name ("EDUSCOL_admcor");
//session_save_path ( DOSSIERLIB.'/sessions/' ) ;
session_start();
$user=@$_SESSION['sess_admcor'];
print_r($user);
// ----- constantes ------------
define('APPLI',"admcor"); //nom de l'aplication
define('CHEMIN',"admcor.php"); //chemin de l'aplication
define('MAILADMIN',"securite.eduscol@education.gouv.fr");
// ---- initialisations avant boucle des commandes ----
$a_users = array();
$message = "";
openlog(APPLI,LOG_PID|LOG_CONS,IDLOG);
syslog(LOG_INFO,"$action ".getenv('REMOTE_ADDR')." ".$user->donnees['login']);
$a_sfonc=array(
1=>'correspondant académique sécurité',
21=>'correspondant départemental sécurité 1er degré',
22=>'correspondant départemental sécurité 2nd degré',
3=>'coordonnateur académique risques majeurs',
4=>'coordonnateur académique sécurité routière'
);
// ----- boucle principale --------
do {
$suivante = '';
list($commande,$niveau,$mapage,$titre) = $params[$action];
$nomenu = 0;
$fs = array();
// suivant utilisateur défini ou non ...
if ($user->defini) {init_si_log();}
else {session_unset();}
// vérifier si l'utilisateur est autorisé à effectuer cette action
if ($err = erreur_niveau($user->fonc)) {break;}
// traiter les actions spécifiques aux commandes
if ($commande){$err = $commande();}
$action = $suivante;
} while ($action);
//print_r($session_c);
// ---- fin de la boucle principale ---------
// annuler l'authentification si l'une des opérations précédentes a provoqué une erreur de niveau 1
if ($err && $err->niv) {if ($user) $user->vider(); session_unset(); }
// ------ début des affichages ----
if (!@$nomenu) {include("menuadmcor.php");} // bandeau du menu, sauf indication contraire
if ($err) {// affichage de la page d'erreur si besoin
if ($err->page_retour) {$mapage = $err->page_retour;}
$err->affiche();
}
echo $mapage;
include("templates/$mapage.php"); // affichage de la page associée à l'action
closelog();
?>
</body>
</html>
<?
// ======= FONCTIONS UTILITAIRES ========
function init_si_log() {
global $user,$sess_admcor,$session_c,$a_corr;
//$HTTP_SESSION_VARS['sess_admcor']=$user;
$sess_admcor=$user;
session_register('sess_admcor');
if(!@$session_c){
$session_c = new c_listecorr(
' t_corr_test, securbase.t_academie ',
' * ',
' idacad = id_academie '
);
//$HTTP_SESSION_VARS['session_c']=$session_c;
if ((NIV_ACA == $user->fonc) || (NIV_IA == $user->fonc))
$session_c->choix($user->donnees["gecos"]);
else
$session_c->choix();
session_register('session_c');
}
lire_aca();
lire_ia();
}
function erreur_niveau($n) { // vérifie le niveau de l'utilisateur
global $niveau;
if ($n < $niveau) {
if ($n) {return new erreur("clef=niveau");}
else {return new erreur("clef=identite");}
}
return 0;
}
// ---------- gestion du compte par l'utilisteur --------
function login() {// authentification par formulaire
global $user,$f,$fs,$suivante;
$user='';
$fs['login']=$f['login'];
$user = new c_user('login',$f['login']);
if ($user->fonc == NIV_ACA || $user->fonc == NIV_IA) $user->init();
if (! $user->defini ) {return new erreur('login inconnu');}
if (! $user->verif_passwd($f['passwd'])) {return new erreur("mot de passe incorrect","home",1);}
syslog(LOG_INFO,"Nouvelle session ".getenv('REMOTE_ADDR')." ".$user->donnees['login']);
$suivante="home";
}
?> |
Partager