Fix: Utilisation du wrapper scuris pour tous

This commit is contained in:
Laurent Destailleur 2004-12-31 17:03:56 +00:00
parent d701fd8b14
commit 45672460d1
4 changed files with 90 additions and 30 deletions

View File

@ -665,21 +665,22 @@ if ($_GET["propalid"])
print '<table class="border" width="100%">';
$file = $conf->propal->dir_output . "/$propal->ref/$propal->ref.pdf";
$relativepath = "$propal->ref/$propal->ref.pdf";
$var=true;
if (file_exists($file))
{
print "<tr $bc[0]><td>PDF</td>";
$encfile = urlencode($file);
print '<td><a href="'.DOL_URL_ROOT . '/document.php?file='.$encfile.'">'.$propal->ref.'.pdf</a></td>';
print "<tr $bc[$var]><td>".$langs->trans("Propal")." PDF</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">'.strftime("%d %B %Y %H:%M:%S",filemtime($file)).'</td></tr>';
}
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);
$modelpdf = new Propal_Model_pdf($db);
$html->select_array("modelpdf",$modelpdf->liste_array(),$propal->modelpdf);
@ -916,7 +917,7 @@ else
print "<tr $bc[$var]>";
print '<td><a href="propal.php?propalid='.$objp->propalid.'">';
print img_file();
print "</a>&nbsp;<a href=\"propal.php?propalid=$objp->propalid\">$objp->ref</a></TD>\n";
print "</a>&nbsp;<a href=\"propal.php?propalid=$objp->propalid\">$objp->ref</a></td>\n";
if ($objp->client == 1)
{
$url = DOL_URL_ROOT.'/comm/fiche.php?socid='.$objp->idp;

View File

@ -25,8 +25,7 @@
/**
\file htdocs/document.php
\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 nouvelle méthode (sécurisée) est document.php?file=pathrelatifdufichier&modulepart=typefichier
L'appel est document.php?file=pathrelatifdufichier&modulepart=repfichierconcerne
\version $Revision$
*/
@ -46,15 +45,8 @@ $accessallowed=0;
if ($modulepart)
{
// On fait une vérification des droits et on définit le répertoire concerné
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 factures
if ($modulepart == 'facture')
{
$user->getrights('facture');
@ -64,16 +56,74 @@ if ($modulepart)
}
$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

View File

@ -94,11 +94,11 @@ if ($result)
print "<td>".$obj->firstname . " ".$obj->name."</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.'&amp;type=application/msexcel">'.$obj->filename.'</a></td>';
print '<td><a href="'.DOL_URL_ROOT . '/document.php?modulepart=telephonie&amp;file='.urlencode($relativepath).'&amp;type=application/msexcel">'.$obj->filename.'</a></td>';
print "</tr>\n";
$i++;
@ -108,7 +108,7 @@ if ($result)
}
else
{
print $db->error() . ' ' . $sql;
dolibarr_print_error($db);
}
/* ******************************************** */

View File

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