Skip to content
Snippets Groups Projects
Commit a713d94e authored by Regis Houssin's avatar Regis Houssin
Browse files

Fix: mise en fonction de la vérification des droits d'accès users, clients et commerciaux

parent b4c399bd
No related branches found
No related tags found
No related merge requests found
...@@ -37,15 +37,10 @@ $langs->load("orders"); ...@@ -37,15 +37,10 @@ $langs->load("orders");
$langs->load("sendings"); $langs->load("sendings");
$langs->load("companies"); $langs->load("companies");
$user->getrights('propale'); $propalid = isset($_GET["propalid"])?$_GET["propalid"]:'';
if (!$user->rights->propale->lire) accessforbidden();
// Scurit accs client // Scurit d'accs client et commerciaux
if ($user->societe_id > 0) $security = restrictedArea($user, 'propale', $propalid, 'propal');
{
$action = '';
$socid = $user->societe_id;
}
/* /*
* Ajout d'un nouveau contact * Ajout d'un nouveau contact
......
...@@ -37,15 +37,10 @@ $langs->load("orders"); ...@@ -37,15 +37,10 @@ $langs->load("orders");
$langs->load("sendings"); $langs->load("sendings");
$langs->load("companies"); $langs->load("companies");
$user->getrights('commande'); $commandeid = isset($_GET["id"])?$_GET["id"]:'';
if (!$user->rights->commande->lire) accessforbidden();
// Sécurité accés client // Sécurité d'accès client et commerciaux
if ($user->societe_id > 0) $security = restrictedArea($user, 'commande', $commandeid);
{
$action = '';
$socid = $user->societe_id;
}
/* /*
* Ajout d'un nouveau contact * Ajout d'un nouveau contact
......
...@@ -33,19 +33,12 @@ require_once(DOL_DOCUMENT_ROOT."/contact.class.php"); ...@@ -33,19 +33,12 @@ require_once(DOL_DOCUMENT_ROOT."/contact.class.php");
require_once(DOL_DOCUMENT_ROOT.'/lib/invoice.lib.php'); require_once(DOL_DOCUMENT_ROOT.'/lib/invoice.lib.php');
$langs->load("facture"); $langs->load("facture");
// $langs->load("orders");
$langs->load("companies"); $langs->load("companies");
$user->getrights('facture'); $facid = isset($_GET["facid"])?$_GET["facid"]:'';
if (!$user->rights->facture->lire) accessforbidden(); // Scurit d'accs client et commerciaux
$security = restrictedArea($user, 'facture', $facid);
// Scurit accs client
if ($user->societe_id > 0)
{
$action = '';
$socid = $user->societe_id;
}
/* /*
* Ajout d'un nouveau contact * Ajout d'un nouveau contact
......
...@@ -34,39 +34,12 @@ require_once(DOL_DOCUMENT_ROOT."/contact.class.php"); ...@@ -34,39 +34,12 @@ require_once(DOL_DOCUMENT_ROOT."/contact.class.php");
$langs->load("contracts"); $langs->load("contracts");
// $langs->load("orders");
$langs->load("companies"); $langs->load("companies");
$user->getrights('contrat');
if (!$user->rights->contrat->lire) accessforbidden();
// Sécurité accés client et commerciaux
$contratid = isset($_GET["id"])?$_GET["id"]:''; $contratid = isset($_GET["id"])?$_GET["id"]:'';
if ($user->societe_id > 0) // Sécurité d'accès client et commerciaux
{ $security = restrictedArea($user, 'contrat', $contratid);
$action = '';
$socid = $user->societe_id;
}
// Protection restriction commercial
if ($contratid && (!$user->rights->commercial->client->voir || $user->societe_id > 0))
{
$sql = "SELECT sc.fk_soc, c.fk_soc";
$sql .= " FROM ".MAIN_DB_PREFIX."societe_commerciaux as sc, ".MAIN_DB_PREFIX."contrat as c";
$sql .= " WHERE c.rowid = ".$contratid;
if (!$user->rights->commercial->client->voir && !$user->societe_id > 0)
{
$sql .= " AND sc.fk_soc = c.fk_soc AND sc.fk_user = ".$user->id;
}
if ($user->societe_id > 0) $sql .= " AND c.fk_soc = ".$socid;
if ( $db->query($sql) )
{
if ( $db->num_rows() == 0) accessforbidden();
}
}
/* /*
* Ajout d'un nouveau contact * Ajout d'un nouveau contact
......
...@@ -1247,6 +1247,57 @@ function dol_loginfunction($notused,$pearstatus) ...@@ -1247,6 +1247,57 @@ function dol_loginfunction($notused,$pearstatus)
print "\n</body>\n</html>"; print "\n</body>\n</html>";
} }
/*
* \brief Vrifie les droits de l'utilisateur
* \param user Utilisateur courant
* \param module Module vrifier
* \param objectid ID du document
* \param dbtable Table de la base correspondant au module (optionnel)
*/
function restrictedArea($user, $modulename, $objectid='' , $dbtablename='')
{
global $db;
$user->getrights($modulename);
$socid = 0;
//si dbtable non dfini, mme nom que le module
if (!$dbtable) $dbtablename = $modulename;
if (!$user->rights->$modulename->lire)
{
accessforbidden();
return -1;
}
if ($user->societe_id > 0)
{
$socid = $user->societe_id;
}
if ($objectid && (!$user->rights->commercial->client->voir || $socid > 0))
{
$sql = "SELECT sc.fk_soc, dbt.fk_soc";
$sql .= " FROM ".MAIN_DB_PREFIX."societe_commerciaux as sc, ".MAIN_DB_PREFIX.$dbtablename." as dbt";
$sql .= " WHERE dbt.rowid = ".$objectid;
if (!$user->rights->commercial->client->voir && !$socid > 0)
{
$sql .= " AND sc.fk_soc = dbt.fk_soc AND sc.fk_user = ".$user->id;
}
if ($socid > 0) $sql .= " AND dbt.fk_soc = ".$socid;
if ($db->query($sql))
{
if ($db->num_rows() == 0)
{
accessforbidden();
return -2;
}
}
}
return 1;
}
/** /**
\brief Affiche message erreur de type acces interdit et arrete le programme \brief Affiche message erreur de type acces interdit et arrete le programme
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment