Etape 1 : déploiement de l'ajout d'un module en tant que correcteur

This commit is contained in:
xdrm-brackets 2015-11-23 23:37:23 +01:00
parent 57357fd444
commit 19632629c9
5 changed files with 235 additions and 4 deletions

View File

@ -265,6 +265,58 @@ class DataBase{
return $listeAnnees;
}
/* modifie le caractère "admin" d'un utilisateur
*
* @utilisateur<String> l'UID de l'utilisateur en question
* @admin<Boolean> VRAI si admin, FAUX sinon
*
*
* @return updated<Boolean> VRAI si la modification a été faite
*
*/
public function setAdmin($utilisateur, $admin){
// on vérifie l'existence de l'utilisateur
if( !($utilisateurUID=userRepo::UID($utilisateur)) ) return 'unknown_user';
return userRepo::setAdmin($utilisateurUID, $admin);
}
/* modifie le caractère "référent" d'un utilisateur
*
* @utilisateur<String> l'UID de l'utilisateur en question
* @master<Boolean> VRAI si master, FAUX sinon
*
*
* @return updated<Boolean> VRAI si la modification a été faite
*
*/
public function setMaster($utilisateur, $master){
// on vérifie l'existence de l'utilisateur
if( !($utilisateurUID=userRepo::UID($utilisateur)) ) return 'unknown_user';
return userRepo::setMaster($utilisateurUID, $master);
}
/* ajoute un module qu'un utilisateur peut corriger
*
* @utilisateur<String> l'UID de l'utilisateur en question
* @module<int> l'UID du module à ajouter
*
*
* @return added<Boolean> VRAI si module ajouté, sinon FALSE
*
*/
public function correcteurAjouterModule($utilisateur, $module){
// on vérifie l'existence de l'utilisateur
if( !($utilisateurUID=userRepo::UID($utilisateur)) ) return 'unknown_user';
return userRepo::addModule($utilisateurUID, $module);
}
/**********************************************************/
/* _____ _____ ____ _ _ _____ ______ _____ */
/* / ____| __ \ / __ \| | | | __ \| ____|/ ____| */

View File

@ -119,7 +119,106 @@ class userRepo extends DBAccess{
/* modifie le caractère "admin" d'un utilisateur
*
* @utilisateur<String> l'UID de l'utilisateur en question
* @admin<Boolean> VRAI si admin, FAUX sinon
*
*
* @return updated<Boolean> VRAI si la modification a été faite
*
*/
public static function setAdmin($utilisateur, $admin){
/* [1] On récupère les droits actuels de l'utilisateur
=========================================================*/
if( !($utilisateurInfo=userRepo::info($utilisateur)) ) return false;
$droitsArray = explode(',', $utilisateurInfo['droits'] );
/* [2] On modifie les droits en fonction des paramètres
=========================================================*/
if( $admin && !in_array('admin', $droitsArray) ) // si on doit ajouter le droit et qu'il n'y est pas encore
array_push($droitsArray, 'admin'); // => on ajoute 'admin'
if( !$admin && in_array('admin', $droitsArray) ) // si on doit enlever le droit et qu'il y est
array_splice($droitsArray, array_search('admin', $droitsArray), 1 ); // => on enleve 'admin'
$droitsString = implode(',', $droitsArray);
/* [3] On modifie les droits dans la BDD
=========================================================*/
$modifierAdmin = DataBase::getPDO()->prepare("UPDATE utilisateur SET droits = :droits WHERE identifiant = :identifiant");
$modifierAdmin->execute(array( ':droits' => $droitsString, ':identifiant' => $utilisateur ));
/* [4] On vérifie que les changements on bien pris effet
=========================================================*/
if( !($utilisateurInfoVerif=userRepo::info($utilisateur)) ) return false;
return $utilisateurInfoVerif['droits'] == $droitsString; // si les droits de la BDD sont les mêmes que ceux calculés, c'est que c'est ok
}
/* modifie le caractère "référent" d'un utilisateur
*
* @utilisateur<String> l'UID de l'utilisateur en question
* @master<Boolean> VRAI si master, FAUX sinon
*
*
* @return updated<Boolean> VRAI si la modification a été faite
*
*/
public static function setMaster($utilisateur, $master){
/* [1] On récupère les droits actuels de l'utilisateur
=========================================================*/
if( !($utilisateurInfo=userRepo::info($utilisateur)) ) return false;
$droitsArray = explode(',', $utilisateurInfo['droits'] );
/* [2] On modifie les droits en fonction des paramètres
=========================================================*/
if( $master && !in_array('master', $droitsArray) ) // si on doit ajouter le droit et qu'il n'y est pas encore
array_push($droitsArray, 'master'); // => on ajoute 'master'
if( !$master && in_array('master', $droitsArray) ) // si on doit enlever le droit et qu'il y est
array_splice($droitsArray, array_search('master', $droitsArray), 1 ); // => on enleve 'master'
$droitsString = implode(',', $droitsArray);
/* [3] On modifie les droits dans la BDD
=========================================================*/
$modifierAdmin = DataBase::getPDO()->prepare("UPDATE utilisateur SET droits = :droits WHERE identifiant = :identifiant");
$modifierAdmin->execute(array( ':droits' => $droitsString, ':identifiant' => $utilisateur ));
/* [4] On vérifie que les changements on bien pris effet
=========================================================*/
if( !($utilisateurInfoVerif=userRepo::info($utilisateur)) ) return false;
return $utilisateurInfoVerif['droits'] == $droitsString; // si les droits de la BDD sont les mêmes que ceux calculés, c'est que c'est ok
}
/* ajoute un module qu'un utilisateur peut corriger
*
* @utilisateur<String> l'UID de l'utilisateur en question
* @module<int> l'UID du module à ajouter
*
*
* @return added<Boolean> VRAI si module ajouté, sinon FALSE
*
*/
public function addModule($utilisateur, $module){
/* [1] On vérifie s'il n'enseigne pas déjà pour ce module
==============================================================*/
}

View File

@ -106,6 +106,72 @@ require_once __ROOT__.'/manager/database.php';
break;
/************************************/
/* modifie le rôle d'un utilisateur */
/************************************/
/*
* identifiant<String> l'UID de l'utilisateur à modifier
*
* admin<Boolean> VRAI si admin, FAUX sinon
* admin<NULL> Si NULL, on ne modifie pas ce champ
*
* master<Boolean> VRAI si référent, FAUX sinon
* master<NULL> Si NULL, on ne modifie pas ce champ
*
* addModule<int> l'UID du module à lui ajouter en tant que correcteur
* addModule<NULL> Si NULL, on n'ajoute aucun module
*
* delModule<int> l'UID du module à enlever en tant que correcteur
* delModule<NULL> Si NULL, on n'enlève aucun module
*
*/
case 'updateRole': if( permission('admin') ){
$identifiantCheck = isset($request->identifiant) && is_string($request->identifiant) && preg_match('/^[\w -]{3,50}$/i', $request->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
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);
/* [4] On supprime un module en tant que correcteur
======================================================*/
if( $request->delModule != null )
$response = DataBase::getInstance()->correcteurSupprimerModule($request->identifiant, $request->delModule);
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 */

View File

@ -48,9 +48,9 @@ if( permission('admin') ){
// si l'utilisateur est admin
if( in_array('admin', $user['role']) )
echo "<td><input type='checkbox' id='".$user['id']."admin' checked><label for='".$user['id']."admin'></label> admin</td>";
echo "<td><input type='checkbox' id='".$user['id']."administrateur' checked><label for='".$user['id']."administrateur'></label> administrateur</td>";
else
echo "<td><input type='checkbox' id='".$user['id']."admin'><label for='".$user['id']."admin'></label> admin</td>";
echo "<td><input type='checkbox' id='".$user['id']."administrateur'><label for='".$user['id']."administrateur'></label> administrateur</td>";
// si l'utilisateur est référent
if( in_array('master', $user['role']) )

View File

@ -44,9 +44,23 @@ require_once __ROOT__.'/manager/security.php';
require_once __ROOT__.'/manager/database.php';
debug();
require_once __ROOT__.'/manager/user.php';
$request = new stdClass(); $answer = new stdClass();
$request->level_1 = 'updateRole';
$request->identifiant = 'admin';
$request->admin = null;
$request->master = null;
$request->addModule = null;
$request->delModule = null;
user_switch_level_1($request, $answer);
var_dump( $answer );
// $_SESSION['semestre_pair'] = !$_SESSION['semestre_pair'];
// var_dump( $_SESSION['semestre_pair'] );