New: Utilisation de niveaux plus fin des droits de compta sur le mme modles que les autres modules (Lire, Modifier...).

Optim: La fonction de chargement des droits n'est ralise qu'une fois mme si appel plusieurs fois.
This commit is contained in:
Laurent Destailleur 2004-06-27 17:51:30 +00:00
parent e4e996518f
commit 2341e994db
10 changed files with 75 additions and 49 deletions

View File

@ -27,7 +27,7 @@ require("../../chargesociales.class.php");
*
*/
$user->getrights('compta');
if (!$user->rights->compta->resultat)
if (!$user->rights->compta->resultat->lire)
accessforbidden();
llxHeader();

View File

@ -26,7 +26,7 @@ require("./pre.inc.php");
*/
$user->getrights('compta');
if (!$user->rights->compta->resultat)
if (!$user->rights->compta->resultat->lire)
accessforbidden();
llxHeader();

View File

@ -28,7 +28,7 @@ require("../../chargesociales.class.php");
*
*/
$user->getrights('compta');
if (!$user->rights->compta->resultat)
if (!$user->rights->compta->resultat->lire)
accessforbidden();
llxHeader();

View File

@ -27,7 +27,7 @@ require("../../chargesociales.class.php");
*
*/
$user->getrights('compta');
if (!$user->rights->compta->resultat)
if (!$user->rights->compta->resultat->lire)
accessforbidden();
llxHeader();

View File

@ -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 '<td class="'.$class.'" width="'.$widthtd.'%" align=center>';
print '<a class="'.$class.'" href="'.DOL_URL_ROOT.'/comm/index.php">Commercial</A>';
print '<a class="'.$class.'" href="'.DOL_URL_ROOT.'/comm/index.php"'.($target?" target=$target":"").'>Commercial</A>';
print '</td>';
}
@ -55,7 +56,7 @@ else {
if ($_SESSION["topmenu"] && $_SESSION["topmenu"] == "adherent") { $class="menusel"; }
elseif (ereg("^".DOL_URL_ROOT."\/adherents\/",$PHP_SELF)) { $class="menusel"; }
print '<td class="'.$class.'" width="'.$widthtd.'%" align=center>';
print '<a class="'.$class.'" href="'.DOL_URL_ROOT.'/adherents/index.php">Adhérents</A>';
print '<a class="'.$class.'" href="'.DOL_URL_ROOT.'/adherents/index.php"'.($target?" target=$target":"").'>Adhérents</A>';
print '</td>';
}
@ -65,7 +66,7 @@ else {
if ($_SESSION["topmenu"] && $_SESSION["topmenu"] == "compta") { $class="menusel"; }
elseif (ereg("^".DOL_URL_ROOT."\/compta\/",$PHP_SELF)) { $class="menusel"; }
print '<td class="'.$class.'" width="'.$widthtd.'%" align=center>';
print '<a class="'.$class.'" href="'.DOL_URL_ROOT.'/compta/index.php">Compta</A>';
print '<a class="'.$class.'" href="'.DOL_URL_ROOT.'/compta/index.php"'.($target?" target=$target":"").'>Compta</A>';
print '</td>';
}
@ -79,7 +80,7 @@ else {
if ($conf->produit->enabled && $conf->service->enabled) { $chaine.="/"; }
if ($conf->service->enabled) { $chaine.="Services"; }
print '<td class="'.$class.'" width="'.$widthtd.'%" align=center>';
print '<a class="'.$class.'" href="'.DOL_URL_ROOT.'/product/?type=0">'.$chaine.'</a>';
print '<a class="'.$class.'" href="'.DOL_URL_ROOT.'/product/?type=0"'.($target?" target=$target":"").'>'.$chaine.'</a>';
print '</td>';
}
@ -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 '<td class="'.$class.'" width="'.$widthtd.'%" align=center>';
print '<a class="'.$class.'" href="'. PHPWEBCALENDAR_URL .'">Calendrier</a>';
// print '<a class="'.$class.'" href="'. PHPWEBCALENDAR_URL .'">Calendrier</a>';
print '<a class="'.$class.'" href="'.DOL_URL_ROOT.'/projet/webcal.php"'.($target?" target=$target":"").'>Calendrier</a>';
print '</td>';
};

View File

@ -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);

View File

@ -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);

View File

@ -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 {

View File

@ -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)
{

View File

@ -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 "<p><TABLE border=\"0\" width=\"100%\" cellspacing=\"0\" cellpadding=\"4\">";
print "<p><TABLE border=\"0\" width=\"100%\" cellspacing=\"0\" cellpadding=\"2\">";
print '<TR class="liste_titre">';
print "<TD>Prenom</TD>";
print "<TD>Nom</TD>";
print '<TD>login</TD>';
print "<TD>code</TD>";
print "<TD>";
print_liste_field_titre("Nom",$PHP_SELF,"name");
print "</TD>";
print "<TD>";
print_liste_field_titre("Prénom",$PHP_SELF,"firstname");
print "</TD>";
print "<TD>";
print_liste_field_titre("Login",$PHP_SELF,"login");
print "</TD>";
print "<TD>";
print_liste_field_titre("Code",$PHP_SELF,"code");
print "</TD>";
print "</TR>\n";
$var=True;
while ($i < $num)
@ -49,9 +59,13 @@ if ($result)
$var=!$var;
print "<TR $bc[$var]>";
print '<TD><a href="fiche.php?id='.$obj->rowid.'">'.$obj->firstname.'</a></td>';
print '<TD>'.$obj->name.'</TD>';
print '<TD><a href="fiche.php?id='.$obj->rowid.'">'.$obj->login.'</a></TD>';
print '<TD>'.ucfirst($obj->name).'</TD>';
print '<TD>'.ucfirst($obj->firstname).'</td>';
if ($obj->login) {
print '<TD><a href="fiche.php?id='.$obj->rowid.'">'.$obj->login.'</a></TD>';
} else {
print '<TD><a class="impayee" href="fiche.php?id='.$obj->rowid.'">Inactif</a></TD>';
}
print '<TD>'.$obj->code.'</TD>';
print "</TR>\n";
$i++;