Gestion des droits viewimage.php

Salut,

J’ai une petite difficulté sur un module que je suis en train de développer.
J’affiche notamment deux choses :

  • Un trombinoscope qui s’appuie sur les photos des adhérents ou des utilisateurs.
  • Une liste des outils avec des images intégrées au module.

Pour cela, j’utilise viewimage.php
Ma difficulté, c’est la gestion des droits autour de ça.

  • Pour les utilisateurs et les adhérents, pour accéder simplement aux images, je suis obligé de donner accès à toute la fiche adhérent, ce qui ne me plait pas beaucoup.
  • Pour les outils, pour le coup, il n’y a pas de droits particuliers, mais ça coince. Les utilisateurs ont bien le droit « read ».

print '<img class="tool" src="'.DOL_URL_ROOT.'/viewimage.php?modulepart=intranet&entity=1&file='.urlencode('/outil/'.$obj->rowid).'.png">';

Auriez-vous quelques pistes à me transmettre ?
Merci !

Bonjour,

J’ai finalement résolu mon problème en créant mon propre custom_viewimage.php que j’ai mis à la racine de mon module.

<?php

require '../../main.inc.php'; // Load $user and permissions
require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php';

// Vérification basique : l'utilisateur doit être connecté
if (empty($_SESSION['dol_login'])) {
    header('HTTP/1.0 403 Forbidden');
    exit;
}

// Récupération des paramètres
$modulepart = GETPOST('modulepart', 'alpha');
$entity = GETPOST('entity', 'int');
$file = GETPOST('file', 'alpha');


if ($modulepart === 'adherent') {
    $filepath = DOL_DATA_ROOT.'/adherent/'.$file;
} else if ($modulepart === 'users') {
    $filepath = DOL_DATA_ROOT.'/users/'.$file;
}

if (file_exists($filepath) && is_readable($filepath)) {
    header('Content-Type: '.dol_mimetype($filepath));
    readfile($filepath);
    exit;
} else {
    dol_syslog('Fichier introuvable ou illisible : '.$filepath, LOG_ERR);
    header('HTTP/1.0 404 Not Found');
    exit;
}

?>

J’ai ensuite fait l’appel suivant dans mes fichiers :

if ($user2adherent) {
    print '<img class="trombine" src="'.DOL_URL_ROOT.'/custom/intranet/custom_viewimage.php?entity=1&modulepart=adherent&file='.urlencode($obj->aref.'/photos/'.$obj->photo).'">';
} else {
    print '<img class="trombine" src="'.DOL_URL_ROOT.'/custom/intranet/custom_viewimage.php?entity=1&modulepart=users&file='.urlencode($obj->uref.'/photos/'.$obj->photo).'">';
}

J’accède ainsi à mes images, sans avoir à donner les droits aux utilisateurs et utilisatrices pour autant.

Je clôture.