Lien externe vers dolibarr et erreur avec multicompany

Bonjour,
Je cherche à savoir si il est possible via un lien externe vers dolibarr de spécifier l’entité(la société pour le module multicompany) et ainsi de forcer le changement d’entité à l’ouverture du lien pour éviter ce genre de page d’erreur si on est connecté à une autre entité:

Accès refusé.
Vous essayez d’accéder à une page, région ou fonctionnalité d’un module désactivé, ou sans être dans une session authentifiée, ou avec un utilisateur non autorisé.

Pour contexte:
je développe un petit module freescout(client mail type helpdesk) pour lié ce dernier à dolibarr. les deux logiciels sont installés sur le même serveur.
Rien de très compliqué, il s’agit de créer des liens entre les contact freescout et les tiers dolibarr ainsi que de pouvoir récupérer, afficher et joindre les documents dolibarr directement depuis freescout.
Chacune de ces action nécessitant par ailleurs d’être connecté au dolibarr.

entre autre exemple, j’ajoute un lien vers la page dolibarr pour chaque pièce jointe correspondant à un document dolibarr(freescout utilise laravel 5.6):

/**
 * Return a dolibarr document link from it's reference
 * @return  string   $DocLink
 */
public function retrieveDoliDocLink( $DocRef) {
    $DocRef = str_ireplace('.pdf', '', $DocRef);
    $DocType = mb_substr($DocRef, 0, 2);
    if ($DocType == 'FA') {
        $DocTable = DolibarrTable('facture');
        $DocTypeLink = 'compta/facture/';
    }elseif ($DocType == 'AV') {
        $DocTable = DolibarrTable('facture');
        $DocTypeLink = 'compta/facture/';
    } elseif ($DocType == 'DV' || $DocType == 'PR') {
        $DocTable = DolibarrTable('propal');
        $DocTypeLink = 'comm/propal/';
    } elseif ($DocType == 'PJ') {
        $DocTable = DolibarrTable('projet');
        $DocTypeLink = 'comm/propal/';
    } elseif ($DocType == 'CO') {
        $DocTable = DolibarrTable('commande');
        $DocTypeLink = 'commande/';
    } elseif ($DocType == 'PO') {
        $DocTable = DolibarrTable('commande');
        $DocTypeLink = 'fourn/commande/';
    } else {return false;}
    if($DocRow = DB::table($DocTable)->where('ref', $DocRef)->first()) {
        $DocLink = DolibarrPath() . $DocTypeLink . 'card.php?id=' . $DocRow->rowid . '&entity=' . $DocRow->entity;
        return $DocLink;
    }
    return false;
}

//hook sur chaque piece jointe des conversations
\Eventy::addAction('extended_attachments.sidebar_item_append', function($attachment) {
    $DocHREF = Self::retrieveDoliDocLink($attachment->file_name);
    if($DocHREF) {
        echo '<a href="' . $DocHREF . '" target="_blank"><img style="height:14px; margin-left:2px;" src="https://www.dolibarr.org/favicon.png"></a>';
    }
}, 20, 1);

les liens fonctionnent sans problème et si l’on n’est pas connecté à dolibarr la page de login apparait et nous redirige vers la page voulu ensuite.
mon problème vient avec multicompany, si l’on est connecté à dolibarr mais sur une autre entité/société que celle du document voulu, une page d’erreur s’affiche :

Accès refusé.
Vous essayez d’accéder à une page, région ou fonctionnalité d’un module désactivé, ou sans être dans une session authentifiée, ou avec un utilisateur non autorisé.

et l’ajout de &entity=(id de l’entité) au lien n’a aucun effet.
bref ça rend l’usage de ces liens inutile une fois sur deux.

si vous avez une idée ou une alternative?

merci,
erwan.

Bonjour

Qu’en pense l’éditeur de ce module externe ?

Hello
vu que freescout est en laravel peut-être que ceci pourrait t’intéresser (et y contribuer ?)

bonjour tonio, erics,

je n’ai pas encore eu de retour de inodbox pour l’instant, mais s’agissant d’une requête orientée développement je ne sais pas si j’en aurais une.

merci erics, je vais regardé ça.

erwan.

resolu,
Regis de inodbox, tres efficace, à ajouter une fonction dans la v16 de multicompany qui permet de changer d’entité en ajoutant switchentity=[entityid] au lien.

1 « J'aime »