From 2341e994dbc03c9f0788d8d9542d72516c5fdef6 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 27 Jun 2004 17:51:30 +0000 Subject: [PATCH] =?UTF-8?q?New:=20Utilisation=20de=20niveaux=20plus=20fin?= =?UTF-8?q?=20des=20droits=20de=20compta=20sur=20le=20m=EAme=20mod=E8les?= =?UTF-8?q?=20que=20les=20autres=20modules=20(Lire,=20Modifier...).=20Opti?= =?UTF-8?q?m:=20La=20fonction=20de=20chargement=20des=20droits=20n'est=20r?= =?UTF-8?q?=E9alis=E9e=20qu'une=20fois=20m=EAme=20si=20appel=E9=20plusieur?= =?UTF-8?q?s=20fois.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- htdocs/compta/resultat/bilan.php | 2 +- htdocs/compta/resultat/caisse.php | 2 +- htdocs/compta/resultat/clientfourn.php | 2 +- htdocs/compta/resultat/compteres.php | 2 +- htdocs/includes/menus/barre_top/default.php | 14 ++++--- htdocs/includes/modules/modBanque.class.php | 7 ++-- .../modules/modComptabilite.class.php | 8 +++- htdocs/theme/eldy/eldy.css | 14 +++---- htdocs/user.class.php | 41 +++++++++++-------- htdocs/user/index.php | 32 +++++++++++---- 10 files changed, 75 insertions(+), 49 deletions(-) diff --git a/htdocs/compta/resultat/bilan.php b/htdocs/compta/resultat/bilan.php index 1dac2239caa..41cea751153 100644 --- a/htdocs/compta/resultat/bilan.php +++ b/htdocs/compta/resultat/bilan.php @@ -27,7 +27,7 @@ require("../../chargesociales.class.php"); * */ $user->getrights('compta'); -if (!$user->rights->compta->resultat) +if (!$user->rights->compta->resultat->lire) accessforbidden(); llxHeader(); diff --git a/htdocs/compta/resultat/caisse.php b/htdocs/compta/resultat/caisse.php index c4cdb785181..c43d46cefcc 100644 --- a/htdocs/compta/resultat/caisse.php +++ b/htdocs/compta/resultat/caisse.php @@ -26,7 +26,7 @@ require("./pre.inc.php"); */ $user->getrights('compta'); -if (!$user->rights->compta->resultat) +if (!$user->rights->compta->resultat->lire) accessforbidden(); llxHeader(); diff --git a/htdocs/compta/resultat/clientfourn.php b/htdocs/compta/resultat/clientfourn.php index 220dcb91b0f..89b87c052e5 100644 --- a/htdocs/compta/resultat/clientfourn.php +++ b/htdocs/compta/resultat/clientfourn.php @@ -28,7 +28,7 @@ require("../../chargesociales.class.php"); * */ $user->getrights('compta'); -if (!$user->rights->compta->resultat) +if (!$user->rights->compta->resultat->lire) accessforbidden(); llxHeader(); diff --git a/htdocs/compta/resultat/compteres.php b/htdocs/compta/resultat/compteres.php index 8214078b161..1f56a588a8d 100644 --- a/htdocs/compta/resultat/compteres.php +++ b/htdocs/compta/resultat/compteres.php @@ -27,7 +27,7 @@ require("../../chargesociales.class.php"); * */ $user->getrights('compta'); -if (!$user->rights->compta->resultat) +if (!$user->rights->compta->resultat->lire) accessforbidden(); llxHeader(); diff --git a/htdocs/includes/menus/barre_top/default.php b/htdocs/includes/menus/barre_top/default.php index a19bd891113..c9a327b0228 100644 --- a/htdocs/includes/menus/barre_top/default.php +++ b/htdocs/includes/menus/barre_top/default.php @@ -23,6 +23,7 @@ global $PHP_SELF; + $nbofentries=0; if ($conf->commercial->enabled) $nbofentries++; if ($conf->adherent->enabled) $nbofentries++; @@ -45,7 +46,7 @@ else { if ($_SESSION["topmenu"] && $_SESSION["topmenu"] == "commercial") { $class="menusel"; } elseif (ereg("^".DOL_URL_ROOT."\/comm\/",$PHP_SELF)) { $class="menusel"; } print ''; - print 'Commercial'; + print 'Commercial'; print ''; } @@ -55,7 +56,7 @@ else { if ($_SESSION["topmenu"] && $_SESSION["topmenu"] == "adherent") { $class="menusel"; } elseif (ereg("^".DOL_URL_ROOT."\/adherents\/",$PHP_SELF)) { $class="menusel"; } print ''; - print 'Adhérents'; + print 'Adhérents'; print ''; } @@ -65,7 +66,7 @@ else { if ($_SESSION["topmenu"] && $_SESSION["topmenu"] == "compta") { $class="menusel"; } elseif (ereg("^".DOL_URL_ROOT."\/compta\/",$PHP_SELF)) { $class="menusel"; } print ''; - print 'Compta'; + print 'Compta'; print ''; } @@ -79,7 +80,7 @@ else { if ($conf->produit->enabled && $conf->service->enabled) { $chaine.="/"; } if ($conf->service->enabled) { $chaine.="Services"; } print ''; - print ''.$chaine.''; + print ''.$chaine.''; print ''; } @@ -87,9 +88,10 @@ else { { $class=""; if ($_SESSION["topmenu"] && $_SESSION["topmenu"] == "webcalendar") { $class="menusel"; } - elseif (ereg("^".DOL_URL_ROOT."\/webcalendar\/",$PHP_SELF)) { $class="menusel"; } + elseif (ereg("^".DOL_URL_ROOT."\/projet\/",$PHP_SELF) || ereg("^".DOL_URL_ROOT."\/webcalendar\/",$PHP_SELF)) { $class="menusel"; } print ''; - print 'Calendrier'; +// print 'Calendrier'; + print 'Calendrier'; print ''; }; diff --git a/htdocs/includes/modules/modBanque.class.php b/htdocs/includes/modules/modBanque.class.php index 9d8513a7cf8..baec8b45775 100644 --- a/htdocs/includes/modules/modBanque.class.php +++ b/htdocs/includes/modules/modBanque.class.php @@ -61,9 +61,10 @@ class modBanque extends DolibarrModules * Permissions */ $sql = array( - "insert into ".MAIN_DB_PREFIX."rights_def values (111,'Lire les comptes','banque','a',1);", - "insert into ".MAIN_DB_PREFIX."rights_def values (112,'Modifier les comptes','banque','a',0);", - "insert into ".MAIN_DB_PREFIX."rights_def values (113,'Configurer les comptes','banque','a',0);", + "insert into ".MAIN_DB_PREFIX."rights_def values (110,'Tous les droits sur les comptes bancaires','banque','a',0);", + "insert into ".MAIN_DB_PREFIX."rights_def values (111,'Lire les comptes','banque','r',1);", + "insert into ".MAIN_DB_PREFIX."rights_def values (112,'Créer modifier rapprocher écritures','banque','w',0);", + "insert into ".MAIN_DB_PREFIX."rights_def values (113,'Configurer les comptes (créer, gérer catégories)','banque','w',0);", ); return $this->_init($sql); diff --git a/htdocs/includes/modules/modComptabilite.class.php b/htdocs/includes/modules/modComptabilite.class.php index 83e7ed02a2e..d73499d4e18 100644 --- a/htdocs/includes/modules/modComptabilite.class.php +++ b/htdocs/includes/modules/modComptabilite.class.php @@ -64,8 +64,12 @@ class modComptabilite extends DolibarrModules * Permissions */ $sql = array( - "insert into ".MAIN_DB_PREFIX."rights_def values (92,'Gestion charges','compta','a',1);", - "insert into ".MAIN_DB_PREFIX."rights_def values (93,'Gestion resultat','compta','a',1);", + "insert into ".MAIN_DB_PREFIX."rights_def values (90,'Tous les droits sur la compta','compta','a',0);", + "insert into ".MAIN_DB_PREFIX."rights_def values (91,'Lire les charges','compta','r',1);", + "insert into ".MAIN_DB_PREFIX."rights_def values (92,'Créer modifier les charges','compta','w',0);", + "insert into ".MAIN_DB_PREFIX."rights_def values (93,'Supprimer les charges','compta','d',0);", + + "insert into ".MAIN_DB_PREFIX."rights_def values (95,'Lire CA, bilans, résultats','compta','r',1);", ); return $this->_init($sql); diff --git a/htdocs/theme/eldy/eldy.css b/htdocs/theme/eldy/eldy.css index ddaf1984deb..c0dc9688c78 100644 --- a/htdocs/theme/eldy/eldy.css +++ b/htdocs/theme/eldy/eldy.css @@ -63,21 +63,21 @@ border-right: 1px solid #000000; border-bottom: 1px solid #000000; } td.menusel { -border-left: 1px solid #FFFFFF; +border-left: 1px solid #333344; border-right: 1px solid #FFFFFF; -border-top: 1px solid #FFFFFF; +border-top: 1px solid #333344; border-bottom: 1px solid #FFFFFF; } .menu { background: #b3c5cc; - font-size: 12px; font-weight: bold; + font-size: 12px; color: #000000; text-decoration: none; } .menusel { - background: #96B9C9; + background: #a8bdc0; font-size: 12px; font-weight: bold; color: #000000; text-decoration: none; @@ -259,7 +259,7 @@ font: helvetica, verdana, arial, sans-serif; tr.box_titre { background: #7699A9; color: #334444; -font: helvetica, verdana, arial, sans-serif; +font: 12px helvetica, verdana, arial, sans-serif; font-weight: bold; border-left: 1px solid #FFFFFF; border-right: 1px solid #FFFFFF; @@ -270,12 +270,12 @@ white-space: nowrap; tr.box_impair { background: #e2ebed; -font: helvetica, verdana, arial, sans-serif; +font: 12px helvetica, verdana, arial, sans-serif; } tr.box_pair { background: #c0d5dd; -font: helvetica, verdana, arial, sans-serif; +font: 12px helvetica, verdana, arial, sans-serif; } tr.fiche { diff --git a/htdocs/user.class.php b/htdocs/user.class.php index dbfb38709b3..040c1ff153a 100644 --- a/htdocs/user.class.php +++ b/htdocs/user.class.php @@ -49,15 +49,8 @@ class User $this->compta = 1; $this->limite_liste = 0; - $this->rights->facture->lire = 0; - $this->rights->facture->creer = 0; - $this->rights->facture->modifier = 0; - $this->rights->facture->supprimer = 0; + $this->permissions_are_loaded = 0; - $this->rights->produit->lire = 0; - $this->rights->produit->creer = 0; - $this->rights->produit->modifier = 0; - $this->rights->produit->supprimer = 0; return 1; } /* @@ -192,13 +185,15 @@ class User */ Function getrights($module='') { + if ($this->permissions_are_loaded) { + // Si les permissions ont déja été chargé pour ce user, on quitte + // Cela évite de faire n fois le select quand la fonction est appelée plusieurs fois + // pour charger les droits de différents modules. On les charges tous la + // première fois, puis on ne fait plus rien. + return; + } + $sql = "SELECT fk_user, fk_id FROM ".MAIN_DB_PREFIX."user_rights WHERE fk_user= $this->id"; - /* - if ($module) - { - $sql .= " AND module = '$module'"; - } - */ if ($this->db->query($sql)) { $rr=array(); @@ -339,12 +334,20 @@ class User if ($module == 'compta' or $module == '') { + if ($obj->fk_id == 91) + $this->rights->compta->charges->lire = 1; + if ($obj->fk_id == 92) - $this->rights->compta->charges = 1; + $this->rights->compta->charges->creer = 1; if ($obj->fk_id == 93) - $this->rights->compta->resultat = 1; + $this->rights->compta->charges->supprimer = 1; + + if ($obj->fk_id == 95) + $this->rights->compta->resultat->lire = 1; + } + if ($module == 'banque' or $module == '') { if ($obj->fk_id == 111) @@ -359,7 +362,10 @@ class User } $i++; } - // $this->db->free(); + + $this->db->free(); + + $this->permissions_are_loaded=1; } else { @@ -452,7 +458,6 @@ class User */ Function delete() { - if ($this->contact_id) { diff --git a/htdocs/user/index.php b/htdocs/user/index.php index 93c7e6635fc..06f077c39c8 100644 --- a/htdocs/user/index.php +++ b/htdocs/user/index.php @@ -27,7 +27,9 @@ print_titre("Liste des utilisateurs"); $sql = "SELECT u.rowid, u.name, u.firstname, u.code, u.login, u.module_comm, u.module_compta"; $sql .= " FROM ".MAIN_DB_PREFIX."user as u"; -$sql .= " ORDER BY u.name"; +$sql .= " ORDER BY "; +if ($sortfield) { $sql.="$sortfield $sortorder"; } +else { $sql.="u.name"; } $result = $db->query($sql); if ($result) @@ -35,12 +37,20 @@ if ($result) $num = $db->num_rows(); $i = 0; - print "

"; + print "

"; print ''; - print ""; - print ""; - print ''; - print ""; + print ""; + print ""; + print ""; + print ""; print "\n"; $var=True; while ($i < $num) @@ -49,9 +59,13 @@ if ($result) $var=!$var; print ""; - print ''; - print ''; - print ''; + print ''; + print ''; + if ($obj->login) { + print ''; + } else { + print ''; + } print ''; print "\n"; $i++;
PrenomNomlogincode"; + print_liste_field_titre("Nom",$PHP_SELF,"name"); + print ""; + print_liste_field_titre("Prénom",$PHP_SELF,"firstname"); + print ""; + print_liste_field_titre("Login",$PHP_SELF,"login"); + print ""; + print_liste_field_titre("Code",$PHP_SELF,"code"); + print "
'.$obj->firstname.''.$obj->name.''.$obj->login.''.ucfirst($obj->name).''.ucfirst($obj->firstname).''.$obj->login.'Inactif'.$obj->code.'