You are not logged in.

Announcement

 Téléchargez la dernière version stable de GLPI      -     Et vous, que pouvez vous faire pour le projet GLPI ? :  Contribuer
 Download last stable version of GLPI                      -     What can you do for GLPI ? :  Contribute

#1 2009-03-12 19:23:42

eboniface
Member
Registered: 2008-09-03
Posts: 23
Website

Est ce un bug?

.

Last edited by eboniface (2009-03-13 14:55:36)

Offline

#2 2009-03-13 11:20:25

eboniface
Member
Registered: 2008-09-03
Posts: 23
Website

Re: Est ce un bug?

Bonjour,

j'ai découvert en observant mes journaux un étrange phénomène:

J'ai dans ma configuration GLPI un certain nombre de profil dont:
- Un profil admin qui a accès à presque tout sauf la configuration de GLPI, entre autres, il a accès à la liste des utilisateurs en écriture. Le but étant qu'ils puissent ajouter des utilisateurs sans casser toute la configuration de GLPI...
- Un profil super-admin, qui a accès à tout... (je pense que je n'ai pas besoin de vous le présenter celui la... wink )

Ce matin, un profil admin s'est connecté, a modifié un compte profil super-admin pas utilisé, et s'est connecté sur ce compte... (il a modifié son mot de passe.)

En essayant moi même, j'ai en effet constaté:
-En tant qu'admin, je ne peux pas affecter le profil super-admin à moi même ou à un autre utilisateur. (normal)
-Par contre, toujours en tant qu'admin, on peut parfaitement modifier les informations d'un utilisateur existant possédant le profil super-admin, y compris son mot de passe!

A noter que l'utilisateur qui s'est fait chourrer son compte avait d'autres profils que super-admin.

J'ai patcher le code pour corriger mon problème:

Dans le fichier inc/user.function.php, j'ai ajouter la fonction suivant:

/** Modif Axido: return false if the user have less rigth than the user $ID
* @param $ID user to test ID
*/
function haveUserProfileRigth($ID)    {
    global $DB;
    
    $prof=new Profile();
    
    $query= "SELECT glpi_users_profiles.ID FROM glpi_users_profiles inner join glpi_profiles on glpi_users_profiles.FK_profiles = glpi_profiles.ID ";
    $query.= "WHERE glpi_users_profiles.FK_users='". $ID ."' AND glpi_users_profiles.ID NOT IN (";
    $query.= "SELECT glpi_users_profiles.ID FROM glpi_users_profiles inner join glpi_profiles on glpi_users_profiles.FK_profiles = glpi_profiles.ID ";
    $query.= "WHERE glpi_users_profiles.FK_users='". $ID ."' " .$prof->getUnderProfileRetrictRequest("AND" )." )";

    $res = $DB->query($query);

    return !($DB->numrows($res));

}

Je l'appelle dans la méthode showForm de la classe User (ligne 777 du fichier inc/user.class.php)

$strict_entities=getUserEntities($ID,false);
if (!haveAccessToOneOfEntities($strict_entities)&&!$view_all){
    $canedit=false;
}
$canedit=haveUserProfileRigth($ID); //Modif Axido

Last edited by eboniface (2009-03-13 14:55:26)

Offline

#3 2009-03-13 11:28:40

remi
GLPI-DEV
From: Champagne
Registered: 2007-04-28
Posts: 7,127
Website

Re: Est ce un bug?

Pas évident à limiter....

Je verrais bien une notification à l'utilisateur pour le prévenir (comme si c'est abusif, il peut réagir)

Voir même un bouton "envoyer un nouveau mot de passe à l'utilisateur"

+


Dév. Fedora 29 - PHP 5.6/7.0/7.1/7.2/7.3/7.4 - MariaDB 10.3 - GLPI master
Certifié ITILv3 - RPM pour Fedora, RHEL et CentOS sur https://blog.remirepo.net/

Offline

Board footer

Powered by FluxBB