Fix: Utilisation du wrapper sécurisé pour tous
This commit is contained in:
parent
d701fd8b14
commit
45672460d1
@ -665,21 +665,22 @@ if ($_GET["propalid"])
|
|||||||
print '<table class="border" width="100%">';
|
print '<table class="border" width="100%">';
|
||||||
|
|
||||||
$file = $conf->propal->dir_output . "/$propal->ref/$propal->ref.pdf";
|
$file = $conf->propal->dir_output . "/$propal->ref/$propal->ref.pdf";
|
||||||
|
$relativepath = "$propal->ref/$propal->ref.pdf";
|
||||||
|
|
||||||
|
$var=true;
|
||||||
|
|
||||||
if (file_exists($file))
|
if (file_exists($file))
|
||||||
{
|
{
|
||||||
print "<tr $bc[0]><td>PDF</td>";
|
print "<tr $bc[$var]><td>".$langs->trans("Propal")." PDF</td>";
|
||||||
|
|
||||||
$encfile = urlencode($file);
|
|
||||||
|
|
||||||
print '<td><a href="'.DOL_URL_ROOT . '/document.php?file='.$encfile.'">'.$propal->ref.'.pdf</a></td>';
|
|
||||||
|
|
||||||
|
print '<td><a href="'.DOL_URL_ROOT . '/document.php?modulepart=propal&file='.urlencode($relativepath).'">'.$propal->ref.'.pdf</a></td>';
|
||||||
print '<td align="right">'.filesize($file). ' bytes</td>';
|
print '<td align="right">'.filesize($file). ' bytes</td>';
|
||||||
print '<td align="right">'.strftime("%d %B %Y %H:%M:%S",filemtime($file)).'</td></tr>';
|
print '<td align="right">'.strftime("%d %B %Y %H:%M:%S",filemtime($file)).'</td></tr>';
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($propal->brouillon == 1 && $user->rights->propale->creer)
|
if ($propal->brouillon == 1 && $user->rights->propale->creer)
|
||||||
{
|
{
|
||||||
print "<tr $bc[1]><td>Modèle</td><td align=\"right\">";
|
print "<tr $bc[$var]><td>Modèle</td><td align=\"right\">";
|
||||||
$html = new Form($db);
|
$html = new Form($db);
|
||||||
$modelpdf = new Propal_Model_pdf($db);
|
$modelpdf = new Propal_Model_pdf($db);
|
||||||
$html->select_array("modelpdf",$modelpdf->liste_array(),$propal->modelpdf);
|
$html->select_array("modelpdf",$modelpdf->liste_array(),$propal->modelpdf);
|
||||||
@ -916,7 +917,7 @@ else
|
|||||||
print "<tr $bc[$var]>";
|
print "<tr $bc[$var]>";
|
||||||
print '<td><a href="propal.php?propalid='.$objp->propalid.'">';
|
print '<td><a href="propal.php?propalid='.$objp->propalid.'">';
|
||||||
print img_file();
|
print img_file();
|
||||||
print "</a> <a href=\"propal.php?propalid=$objp->propalid\">$objp->ref</a></TD>\n";
|
print "</a> <a href=\"propal.php?propalid=$objp->propalid\">$objp->ref</a></td>\n";
|
||||||
if ($objp->client == 1)
|
if ($objp->client == 1)
|
||||||
{
|
{
|
||||||
$url = DOL_URL_ROOT.'/comm/fiche.php?socid='.$objp->idp;
|
$url = DOL_URL_ROOT.'/comm/fiche.php?socid='.$objp->idp;
|
||||||
|
|||||||
@ -25,8 +25,7 @@
|
|||||||
/**
|
/**
|
||||||
\file htdocs/document.php
|
\file htdocs/document.php
|
||||||
\brief Wrapper permettant le téléchargement de fichier de données Dolibarr
|
\brief Wrapper permettant le téléchargement de fichier de données Dolibarr
|
||||||
L'appel ancienne méthode (non sécurisée) est document.php?file=pathcompletdufichier
|
L'appel est document.php?file=pathrelatifdufichier&modulepart=repfichierconcerne
|
||||||
L'appel nouvelle méthode (sécurisée) est document.php?file=pathrelatifdufichier&modulepart=typefichier
|
|
||||||
\version $Revision$
|
\version $Revision$
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@ -46,15 +45,8 @@ $accessallowed=0;
|
|||||||
if ($modulepart)
|
if ($modulepart)
|
||||||
{
|
{
|
||||||
// On fait une vérification des droits et on définit le répertoire concerné
|
// On fait une vérification des droits et on définit le répertoire concerné
|
||||||
if ($modulepart == 'facture_paiement')
|
|
||||||
{
|
// Wrapping pour les factures
|
||||||
$user->getrights('facture');
|
|
||||||
if ($user->rights->facture->lire)
|
|
||||||
{
|
|
||||||
$accessallowed=1;
|
|
||||||
}
|
|
||||||
$original_file=$conf->compta->dir_output.'/'.$original_file;
|
|
||||||
}
|
|
||||||
if ($modulepart == 'facture')
|
if ($modulepart == 'facture')
|
||||||
{
|
{
|
||||||
$user->getrights('facture');
|
$user->getrights('facture');
|
||||||
@ -64,16 +56,74 @@ if ($modulepart)
|
|||||||
}
|
}
|
||||||
$original_file=$conf->facture->dir_output.'/'.$original_file;
|
$original_file=$conf->facture->dir_output.'/'.$original_file;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// A terme, on ne doit rien pouvoir télécharger via document.php sans fournir type
|
|
||||||
// car c'est grace au type qu'on vérifie que les droits et qu'on définit le répertoire racine des fichiers
|
|
||||||
|
|
||||||
// \todo Corriger ce trou de sécurité pour ne plus permettre l'utilisation via un nom de fichier complet et sans test de droits
|
// Wrapping pour les fiches intervention
|
||||||
|
if ($modulepart == 'ficheinter')
|
||||||
|
{
|
||||||
|
$user->getrights('ficheinter');
|
||||||
|
if ($user->rights->ficheinter->lire)
|
||||||
|
{
|
||||||
|
$accessallowed=1;
|
||||||
|
}
|
||||||
|
$original_file=$conf->ficheinter->dir_output.'/'.$original_file;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Wrapping pour les prelevements
|
||||||
|
if ($modulepart == 'prelevement')
|
||||||
|
{
|
||||||
|
$user->getrights('prelevement');
|
||||||
|
if ($user->rights->prelevement->lire)
|
||||||
|
{
|
||||||
|
$accessallowed=1;
|
||||||
|
}
|
||||||
|
$original_file=$conf->prelevement->dir_output.'/'.$original_file;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Wrapping pour les propales
|
||||||
|
if ($modulepart == 'propal')
|
||||||
|
{
|
||||||
|
$user->getrights('propale');
|
||||||
|
if ($user->rights->propale->lire)
|
||||||
|
{
|
||||||
|
$accessallowed=1;
|
||||||
|
}
|
||||||
|
$original_file=$conf->propal->dir_output.'/'.$original_file;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Wrapping pour les rapport de paiements
|
||||||
|
if ($modulepart == 'facture_paiement')
|
||||||
|
{
|
||||||
|
$user->getrights('facture');
|
||||||
|
if ($user->rights->facture->lire)
|
||||||
|
{
|
||||||
|
$accessallowed=1;
|
||||||
|
}
|
||||||
|
$original_file=$conf->compta->dir_output.'/'.$original_file;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Wrapping pour les societe
|
||||||
|
if ($modulepart == 'societe')
|
||||||
|
{
|
||||||
|
$user->getrights('societe');
|
||||||
|
if ($user->rights->societe->lire)
|
||||||
|
{
|
||||||
|
$accessallowed=1;
|
||||||
|
}
|
||||||
|
$original_file=$conf->societe->dir_output.'/'.$original_file;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Wrapping pour la telephonie
|
||||||
|
if ($modulepart == 'telephonie')
|
||||||
|
{
|
||||||
|
$user->getrights('telephonie');
|
||||||
|
if ($user->rights->telephonie->lire)
|
||||||
|
{
|
||||||
|
$accessallowed=1;
|
||||||
|
}
|
||||||
|
$original_file=$conf->telephonie->dir_output.'/'.$original_file;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// Pour l'instant, autorise la passage
|
|
||||||
$accessallowed=1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Limite accès si droits non corrects
|
// Limite accès si droits non corrects
|
||||||
|
|||||||
@ -94,11 +94,11 @@ if ($result)
|
|||||||
|
|
||||||
print "<td>".$obj->firstname . " ".$obj->name."</td>\n";
|
print "<td>".$obj->firstname . " ".$obj->name."</td>\n";
|
||||||
print "<td>".$obj->nom."</td>\n";
|
print "<td>".$obj->nom."</td>\n";
|
||||||
$dir = $conf->telephonie->dir_output . "/ligne/commande/";
|
|
||||||
|
|
||||||
$encfile = urlencode($dir.$obj->filename);
|
$dir = $conf->telephonie->dir_output . "/ligne/commande/";
|
||||||
|
$relativepath = urlencode("ligne/commande/".$obj->filename);
|
||||||
|
|
||||||
print '<td><a href="'.DOL_URL_ROOT . '/document.php?file='.$encfile.'&type=application/msexcel">'.$obj->filename.'</a></td>';
|
print '<td><a href="'.DOL_URL_ROOT . '/document.php?modulepart=telephonie&file='.urlencode($relativepath).'&type=application/msexcel">'.$obj->filename.'</a></td>';
|
||||||
|
|
||||||
print "</tr>\n";
|
print "</tr>\n";
|
||||||
$i++;
|
$i++;
|
||||||
@ -108,7 +108,7 @@ if ($result)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
print $db->error() . ' ' . $sql;
|
dolibarr_print_error($db);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ******************************************** */
|
/* ******************************************** */
|
||||||
|
|||||||
@ -469,6 +469,15 @@ class User
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($module == 'prelevement' or $module == '')
|
||||||
|
{
|
||||||
|
if ($obj->fk_id == 151)
|
||||||
|
$this->rights->prelevement->lire = 1;
|
||||||
|
|
||||||
|
if ($obj->fk_id == 152)
|
||||||
|
$this->rights->prelevement->configurer = 1;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
if ($module == 'contrat' or $module == '')
|
if ($module == 'contrat' or $module == '')
|
||||||
{
|
{
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user