E' molto grave perché, se gli vengono abilitati i permessi, l'admin in questione può rimuovere o modificare gruppi e aggiungere utenti a gruppi non a lui assegnati.
La stessa situazione si propone anche durante la sottoscrizione di un Gruppo di utenti ad un corso . In questo caso nonostante appaiano tutti i gruppi disponibili (anche quelli non assegnati all'amministratore) la sottoscrizione del gruppo scelto (all'infuori di quelli assegnati) non va a buon fine e appare un messaggio di errore che riporta "Selezione vuota".
Studiando un po' il codice (per capire quale funzione si occupasse di mostrare i gruppi) sono riuscito a trovare una soluzione per evitare che amministratori "non autorizzati" possano visualizzare e agire su gruppi non a loro assegnati.
Il file da modificare è il seguente appCore/models/GroupmanagementAdm.php
E' necessario sostituire le righe che vanno dalla 63 alla 65 con la seguente porzione di codice:
Code: Select all
$idstLogged = Docebo::user()->getIdSt();
$user_level = Docebo::user()->getUserLevelId();
if ($user_level == ADMIN_GROUP_ADMIN){
$query = "SELECT g.idst, g.groupid, g.description, COUNT(*) as usercount "
." FROM %adm_group as g LEFT JOIN (%adm_group_members AS gm ) ON (gm.idst = g.idst) "
." LEFT JOIN %adm_admin_tree AS tree ON (g.idst=tree.idst) "
." WHERE tree.idstAdmin='".$idstLogged."' AND g.hidden = 'false' ".($learning_filter === 'none' ? "AND g.type <> 'course' " : '');
}
else{
$query = "SELECT g.idst, g.groupid, g.description, COUNT(*) as usercount "
." FROM %adm_group as g LEFT JOIN (%adm_group_members AS gm ) ON (gm.idst = g.idst) "
." WHERE g.hidden = 'false' ".($learning_filter === 'none' ? "AND g.type <> 'course' " : '');
}