[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Dolibarr-dev] Ajout : Droits sur les commerciaux
From: |
Rodolphe Quiedeville |
Subject: |
Re: [Dolibarr-dev] Ajout : Droits sur les commerciaux |
Date: |
Mon, 29 Jan 2007 16:33:17 +0100 |
User-agent: |
IceDove 1.5.0.9 (X11/20061220) |
Le 26.01.2007 19:52, Laurent Destailleur (Eldy) a ecrit :
> Franky Van Liedekerke a écrit :
>> On Fri, 26 Jan 2007 16:59:41 +0100 (CET)
>> Régis Houssin <address@hidden> wrote:
>>
>>
>>> j'ai ajouté ceci en test sur /comm/propal.php afin de sécuriser
>>> l'accès aux fiches propal envers les commerciaux qui sont restreint
>>> au niveau visualisation des sociétés, est-ce que ca convient ? si oui
>>> on le reporte sur les factures et autres :
>>>
>>> // Protection restriction commercial
>>> if (!$user->rights->commercial->client->voir)
>>> {
>>> $sql = "SELECT sc.fk_soc";
>>> $sql .= " FROM ".MAIN_DB_PREFIX."societe_commerciaux as sc";
>>> $sql .= " WHERE sc.fk_soc = ".$propal->socid." AND sc.fk_user =
>>> ".$user->id;
>>> if ( $db->query($sql) )
>>> {
>>> if ( $db->num_rows() == 0) accessforbidden();
>>> }
>>> }
>>> //fin de Protection restriction commercial
>>>
> On y ait presque mais ce code empêche un utilisateur externe de voir ces
> propres propal.
>
> J'ai donc apporté une modification et j'ai réessayé les tests dans les 4
> combinaisons possibles et la règle suivante est bien respectée:
> Utilisateur interne socid=0 + Droits voir tous clients => Voit
> toute société
> Utilisateur interne socid=0 + Pas de droits voir tous clients => Ne voit
> que les sociétés où il est liée comme commercial
> Utilisateur externe socid=x + Droits voir tous clients => Ne voit
> que lui meme
> Utilisateur externe socid=x + Pas de droits voir tous clients => Ne voit
> que lui meme
>
> Je te laisse regarder Régis et si ok, on l'applique aux autres entités.
> Par contre pour des raisons de lisibilité je remplacerais le code sql
> par une méthode sur l'objet user
>
> if (! $user->isCommercialOf($propal->socid)) access_forbidden();
>
> Cela simplifiera aussi la recopie du code dans les autres entités.
Je pensais à déplacer aussi ces vérifications de permissions, pourquoi
ne pas plutôt mettre cela dans l'objet qui est demandé par l'utilisateur ?
Quand on fait un Propale::Fetch par exemple on passe l'utilisateur
courant et on vérifie avant de retourner les données ?
A++
--
Rodolphe Quiedeville - Artisan Logiciel Libre
http://rodolphe.quiedeville.org/
Travaillons Libre - http://fr.lolix.org/