Gestion des rôles implémentée et fonctionnelle

This commit is contained in:
xdrm-brackets 2015-11-24 10:37:02 +01:00
parent 1638e9d56b
commit 6c1d288da8
4 changed files with 165 additions and 11 deletions

View File

@ -178,7 +178,10 @@ class moduleRepo extends DBAccess{
*
*/
public static function exhaustiveList(){
$getModuleList = DataBase::getPDO()->query("SELECT id_module as id, nom, libelle FROM module ORDER BY nom, libelle");
$getModuleList = DataBase::getPDO()->query("SELECT m.id_module as id, m.nom, m.libelle, mcc_m.id_mcc_module
FROM module as m, mcc_module as mcc_m
WHERE m.id_module = mcc_m.id_module
ORDER BY nom, libelle");
return DataBase::delNumeric( $getModuleList->fetchAll() );
}

View File

@ -261,7 +261,7 @@ class userRepo extends DBAccess{
* @return removed<Boolean> VRAI si module supprimé, sinon FALSE
*
*/
public static function delModule($utilisateur, $mccmodule){debug();
public static function delModule($utilisateur, $mccmodule){
/* [1] On vérifie s'il n'enseigne pas déjà pour ce module
==============================================================*/
$enseignementExiste = DataBase::getPDO()->prepare("SELECT id_enseignement as id

152
page/_JS/settings.js Normal file
View File

@ -0,0 +1,152 @@
var roleSection = document.querySelector('#CONTAINER section[name=attributionrole]');
/**************************************/
/* SI LA SECTION "RÔLES" EST PRÉSENTE */
/**************************************/
if( roleSection != null ){
// liste des checkbox pour la caractère "admin" (CHECKBOX)
var checkAdmin = document.querySelectorAll('#CONTAINER section[name=attributionrole] .check_admin[data-usr]');
// liste des checkbox pour la caractère "référent" (CHECKBOX)
var checkMaster = document.querySelectorAll('#CONTAINER section[name=attributionrole] .check_master[data-usr]');
// liste des modules que l'on peut supprimer (CHECKBOX)
var delModules = document.querySelectorAll('#CONTAINER section[name=attributionrole] .del_module[data-mccmod]');
// liste des modules que l'on peut ajouter (BOUTON)
var addModules = document.querySelectorAll('#CONTAINER section[name=attributionrole] .set_correcteur');
/*** CHANGEMENT DE STATUS POUR "ADMIN" ***/
for( var i = 0 ; i < checkAdmin.length ; i++ ){
checkAdmin[i].addEventListener('change', function(e){
// si l'élément est correct
if( typeof e.target.checked == 'boolean' && e.target.dataset.hasOwnProperty('usr') ){
// on met à jour le status
var request = {
level_0: 'user',
level_1: 'updateRole',
identifiant: e.target.dataset.usr,
admin: e.target.checked,
master: null,
addModule: null,
delModule: null
};
API.send(request, function(answer){
if( answer.request != 'success' ) console.log('erreur de changement de rôle (admin)');
reload();
});
}
}, false);
}
/*** CHANGEMENT DE STATUS POUR "REFERENT" ***/
for( var i = 0 ; i < checkMaster.length ; i++ ){
checkMaster[i].addEventListener('change', function(e){
// si l'élément est correct
if( typeof e.target.checked == 'boolean' && e.target.dataset.hasOwnProperty('usr') ){
// on met à jour le status
var request = {
level_0: 'user',
level_1: 'updateRole',
identifiant: e.target.dataset.usr,
admin: null,
master: e.target.checked,
addModule: null,
delModule: null
};
API.send(request, function(answer){
if( answer.request != 'success' ) console.log('erreur de changement de rôle (référent)');
reload();
});
}
}, false);
}
/*** SUPPRIMER UN MODULE POUR UN UTILISATEUR ***/
for( var i = 0 ; i < delModules.length ; i++ ){
delModules[i].addEventListener('change', function(e){
// si l'élément est correct // si décoché, on supprime
if( typeof e.target.checked == 'boolean' && e.target.dataset.hasOwnProperty('usr') && e.target.dataset.hasOwnProperty('mccmod') && !e.target.checked ){
// on met à jour le status
var request = {
level_0: 'user',
level_1: 'updateRole',
identifiant: e.target.dataset.usr,
admin: null,
master: null,
addModule: null,
delModule: e.target.dataset.mccmod
};
API.send(request, function(answer){
if( answer.request != 'success' ) console.log('erreur de changement de rôle (delModule)');
reload();
});
}
}, false);
}
/*** AJOUTER UN MODULE POUR UN UTILISATEUR ***/
for( var i = 0 ; i < addModules.length ; i++ ){
addModules[i].addEventListener('click', function(e){
var associatedSelect = e.target.parentNode.parentNode.children[0].children[0]; console.log( associatedSelect );
// si l'élément est correct // si décoché, on supprime
if( e.target.dataset.hasOwnProperty('usr') && associatedSelect.tagName == 'SELECT' && associatedSelect.getAttribute('name') == 'modules' ){
// on met à jour le status
var request = {
level_0: 'user',
level_1: 'updateRole',
identifiant: e.target.dataset.usr,
admin: null,
master: null,
addModule: associatedSelect.value,
delModule: null
};
API.send(request, function(answer){
if( answer.request != 'success' ) console.log('erreur de changement de rôle (delModule)');
reload();
});
}
}, false);
}
}

View File

@ -48,15 +48,15 @@ if( permission('admin') ){
// si l'utilisateur est admin
if( in_array('admin', $user['role']) )
echo "<td><input type='checkbox' id='".$user['id']."administrateur' checked><label for='".$user['id']."administrateur'></label> administrateur</td>";
echo "<td><input data-usr='".$user['id']."' class='check_admin' type='checkbox' id='".$user['id']."administrateur' checked><label for='".$user['id']."administrateur'></label> administrateur</td>";
else
echo "<td><input type='checkbox' id='".$user['id']."administrateur'><label for='".$user['id']."administrateur'></label> administrateur</td>";
echo "<td><input data-usr='".$user['id']."' class='check_admin' 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']) )
echo "<td><input type='checkbox' id='".$user['id']."referent' checked><label for='".$user['id']."referent'></label> référent</td>";
echo "<td><input data-usr='".$user['id']."' class='check_master' type='checkbox' id='".$user['id']."referent' checked><label for='".$user['id']."referent'></label> référent</td>";
else
echo "<td><input type='checkbox' id='".$user['id']."referent'><label for='".$user['id']."referent'></label> référent</td>";
echo "<td><input data-usr='".$user['id']."' class='check_master' type='checkbox' id='".$user['id']."referent'><label for='".$user['id']."referent'></label> référent</td>";
echo "</tr>";
@ -72,15 +72,14 @@ if( permission('admin') ){
foreach($user['semestreList'] as $semestre){
foreach($semestre['UElist'] as $ue){
foreach($ue['modules'] as $module){
var_dump($module);
array_push($userModulesUID, $module['id']);
echo "<tr>";
echo "<td data-mod='".$module['id']."'>".$module['nom']." - ".$module['libelle']."</td>";
echo "<td>".$module['nom']." - ".$module['libelle']."</td>";
echo "<td>".$ue['nom']." - ".$ue['libelle']."</td>";
echo "<td>".$semestre['formation']." - ".$semestre['nom']."</td>";
echo "<td>";
echo "<input type='checkbox' id='".$user['id']."correcteur".$module['id']."' checked><label for='".$user['id']."correcteur".$module['id']."'></label> correcteur";
echo "<input data-usr='".$user['id']."' data-mccmod='".$module['id_mcc_module']."' class='del_module' type='checkbox' id='".$user['id']."correcteur".$module['id']."' checked><label for='".$user['id']."correcteur".$module['id']."'></label> correcteur";
echo "</td>";
echo "</tr>";
}
@ -94,10 +93,10 @@ if( permission('admin') ){
echo "<tr class='grayscale'>";
echo "<td><select name='modules'>";
foreach($completeModuleList as $module){ if( !in_array($module['id'], $userModulesUID) ){
echo "<option value='".$module['id']."'>".$module['nom']." - ".$module['libelle']."</option>";
echo "<option value='".$module['id_mcc_module']."'>".$module['nom']." - ".$module['libelle']."</option>";
}}
echo "</select></td>";
echo "<td><div class='confirm active set_correcteur'>Définir comme correcteur</div></td>";
echo "<td><div data-usr='".$user['id']."' class='confirm active set_correcteur'>Définir comme correcteur</div></td>";
echo "<td></td>";
echo "<td></td>";
echo "</tr>";