level_1 ){ /****************************/ /* authentification (login) */ /****************************/ case 'authentification': $areSetParam = isset($request->identifiant) && isset($request->mdp); // les arguments existent $identifiantCheck = $areSetParam && checkParam($request->identifiant, 'utilisateur.identifiant'); // identifiant bon format $mdpCheck = $identifiantCheck && checkParam($request->mdp, 'utilisateur.mdp'); // mdp bon format if( $mdpCheck ) // si tout les params sont ok $answer->request = userManager::user_authentification($request->identifiant, $request->mdp); else{ if ( !$areSetParam ) $answer->request = 'missing_param'; else $answer->request = 'wrong password'; } break; /*****************/ /* déconnection */ /*****************/ case 'exit': $_SESSION['identifiant'] = null; // on supprime l'identifiant if( $_SESSION['identifiant'] == null ) $answer->request = 'success'; // succès else $answer->request = 'error'; break; /**************************/ /* création d'utilisateur */ /**************************/ case 'create': if( false && permission('admin') ){ $areSetParam = isset($request->identifiant) && isset($request->prenom) && isset($request->nom) && isset($request->mail) && isset($request->mdp) && isset($request->droits); // les arguments existent $identifiantCheck = $areSetParam && checkParam($request->identifiant, 'utilisateur.identifiant'); // identifiant bon format $prenomCheck = $identifiantCheck && checkParam($request->prenom, 'utilisateur.prenom'); // prenom bon format $nomCheck = $prenomCheck && checkParam($request->nom, 'utilisateur.nom'); // nom bon format $mailCheck = $nomCheck && checkParam($request->mail, 'utilisateur.mail'); // mail bon format $mdpCheck = $mailCheck && checkParam($request->mdp, 'utilisateur.mdp'); // mdp bon format $droitsCheck = $mdpCheck && checkParam($request->droits, 'utilisateur.droits'); // droits bon format if( $droitsCheck ){ // si tout les paramètres sont bons $answer->request = DataBase::getInstance()->creerUtilisateur($request->identifiant, $request->prenom, $request->nom, $request->mail, $request->mdp, $request->droits); }else $answer->request = 'param_error'; }else $answer->request = 'permission_error'; break; /******************************************/ /* liste des enseignants avec leurs rôles */ /******************************************/ case 'getListeEnseignantsModules': if( permission('admin') ){ $answer->userlist = DataBase::getInstance()->listeUtilisateursRole($_SESSION['annee']); $answer->request = 'success'; }else $answer->request = 'permission_error'; break; /******************************************/ /* change l'année en cours (master/admin) */ /******************************************/ case 'changeyear': if( permission('master') || permission('admin') ){ if( isset($request->year) && is_numeric($request->year) ){ $_SESSION['annee'] = (String) $request->year; $answer->request = 'success'; }else $answer->request = 'param_error'; }else $answer->request = 'permission_error'; break; /************************************/ /* modifie le rôle d'un utilisateur */ /************************************/ /* * identifiant l'UID de l'utilisateur à modifier * * admin VRAI si admin, FAUX sinon * admin Si NULL, on ne modifie pas ce champ * * master VRAI si référent, FAUX sinon * master Si NULL, on ne modifie pas ce champ * * addModule l'UID du mcc_module à lui ajouter en tant que correcteur * addModule Si NULL, on n'ajoute aucun module * * delModule l'UID du mcc_module à enlever en tant que correcteur * delModule Si NULL, on n'enlève aucun module * */ case 'updateRole': if( permission('admin') && $_SESSION['annee'] >= DataBase::getInstance()->getSemestreInfoFromTime(time())['annee'] ){ $identifiantCheck = isset($request->identifiant) && checkParam($request->identifiant, 'utilisateur.identifiant'); // identifiant au bon format $adminCheck = $identifiantCheck && ( is_null($request->admin) || is_bool($request->admin) ); // admin ok $masterCheck = $adminCheck && ( is_null($request->master) || is_bool($request->master) ); // master ok $addModuleCheck = $masterCheck && ( is_null($request->addModule) || is_numeric($request->addModule) ); // addModule ok $delModuleCheck = $addModuleCheck && ( is_null($request->delModule) || is_numeric($request->delModule) ); // delModule ok $groupeOpt = isset($request->groupe) && is_numeric($request->groupe); if( $groupeOpt ) $groupe = $request->groupe; else $groupe = null; if( $delModuleCheck ){ $response = 'unknown_update'; /* [1] On modifie le caractère "administrateur" ======================================================*/ if( is_bool($request->admin) ) $response = DataBase::getInstance()->setAdmin($request->identifiant, $request->admin); /* [2] On modifie le caractère "référent" ======================================================*/ if( is_bool($request->master) ) $response = DataBase::getInstance()->setMaster($request->identifiant, $request->master); /* [3] On ajoute un module en tant que correcteur ======================================================*/ if( $request->addModule != null ) $response = DataBase::getInstance()->correcteurAjouterModule($request->identifiant, $request->addModule, $groupe); /* [4] On supprime un module en tant que correcteur ======================================================*/ if( $request->delModule != null ) $response = DataBase::getInstance()->correcteurSupprimerModule($request->identifiant, $request->delModule, $groupe); if( is_bool($response) ) $answer->request = ($response) ? 'success' : 'error'; else $answer->request = $response; }else $answer->request = 'param_error'; }else $answer->request = 'permission_error'; break; /***********/ /* DEFAULT */ /***********/ default: $answer->request = 'unknown_level_1'; break; } } /* [2] AUTHENTIFICATION ============================================================*/ /* [a] userlist */ public static function user_getUserList(){ $userlistFile = file_get_contents("src/userlist.json"); return json_decode( $userlistFile ); } /* [b] CONNECTION ========================================================*/ /* GESTION DE L'AUTHENTIFICATION D'UN UTILISATEUR * * @param username Identifiant de l'utilisateur * @param password Mot de passe de l'utilisateur * * si @username est référencé et que le mot de passe associé vaut @password * alors @$answer->request = TRUE sinon FALSE * + mise ajout à @answer * * Les variables sessions suivantes sont définies : * - $_SESSION['permissions'] * - $_SESSION['userid'] * - $_SESSION['username'] * * @$answer->request = Boolean true si l'utilisateur est ok */ public static function user_authentification($username, $password){ // [1] On récupère la liste d'utilisateurs (/src/userlist.json) $userList = userManager::user_getUserList(); // [2] On check l'existence de l'utilisateur if( isset($userList->{$username}) ){ // [3] On check le mot de passe if( $userList->{$username}->password == $password || $userList->{$username}->password == secure_sha1($password) ){ // [4] On récupère les informations dans la base de données if( $utilInfo = Database::getInstance()->utilisateurInfo($username) ){ // si l'utilisateur est dans le BDD $_SESSION['identifiant'] = $utilInfo['identifiant']; $_SESSION['droits'] = explode(',', $utilInfo['droits']); $_SESSION['sexe'] = ($utilInfo['sexe']=='1') ? 'M' : 'F'; $timestamp = time(); // on récupère l'année scolaire courante ainsi que si le semestre est pair $infoSemestre = DataBase::getInstance()->getSemestreInfoFromTime($timestamp); /* On définit l'année courante et si le semestre est pair */ $_SESSION['annee'] = $infoSemestre['annee']; $_SESSION['semestre_pair'] = (permission('student')) ? $infoSemestre['semestre_pair'] : null; // on défini le semestre par défaut à NULL $_SESSION['semestre'] = null; /* on récupère le semestre courant si c'est un étudiant */ if( permission('student') ){ $semestre = DataBase::studentSemestre( $_SESSION['identifiant'], $_SESSION['semestre_pair'], $_SESSION['annee']); if( is_array($semestre) ){ // si on a bien récupéré le semestre $_SESSION['formation'] = (String) $semestre['id_formation']; $_SESSION['semestre'] = (String) $semestre['id']; } } return 'success'; }else return 'not_in_db'; }else return 'wrong_password'; }else return 'unknown_user'; } } ?>