Logo Prestashop

Vous pouvez être amenés à créer différents rôles pour gérer les opérations côté backoffice de votre site e-commerce Prestashop. Au-delà des rôles par défaut, vous pouvez créer les vôtres sur mesure ou par le biais de modules.

Pour certains clients, j’ai par exemple été amené à utiliser le module Chargé de Clientèle, qui permet de désigner des responsables achats en B2B, qui ont une vue des utilisateurs qui leur sont liés (commandes, adresses, coordonnées, etc).

Dans ce contexte, il est parfois utile de modifier la page d’accueil de certains admin, en fonction de leur rôle, pour qu’ils soient redirigés après connexion vers la page que vous avez choisie.

Dans mon exemple, la version de Prestashop est 1.7.6, il peut y avoir de légères différences avec votre version.

Le Controller AdminLoginController

Dans Paramètres avancés > Equipe > Profils, commencez par repérer l’identifiant (numéro) de profil des employés dont vous souhaitez modifier la page d’accueil en BO (1: SuperAdmin, 2: Gérant, etc). Dans mon exemple, j’utilise les ID 6 et 7 pour rediriger ces deux groupes d’admin.

Ensuite, identifiez le controller lié à la page vers laquelle vous souhaitez rediriger vos admin après connexion. Par exemple, s’il s’agit de la page ‘Transporteur’, son URL est la suivante: /adminXXXXXXX/index.php?controller=AdminCarriers, votre controller est donc AdminCarriers.

Tout se joue ensuite au niveau du controller AdminLoginController, qui contrôle le comportement de votre site à la connexion d’un admin.

Téléchargez ce fichier depuis le dossier /controllers/admin.

On va réaliser un override, pour ne pas modifier ce fichier directement mais créer un comportement qui s’appliquera en priorité.

Le plus simple est de partir du fichier d’origine, qu’on va modifier.

  1. Ouvrez votre copie en local du fichier AdminLoginController.php.
  2. Au niveau de la class (ligne 26 pour moi), remplacer par class AdminLoginController extends AdminLoginControllerCore
  3. Ne gardez que la fonction public function processLogin(), des lignes 177 à 247 pour moi
  4. Repérez la ligne suivante: $tab = new Tab((int) $this->context->employee->default_tab);
  5. Ajoutez après cette ligne les lignes suivantes:
    $tabs = $tab->class_name;
    if( $this->context->employee->id_profile == 7 || $this->context->employee->id_profile == 6 ){
    $tabs = ‘AdminCarriers’;
    }
  6. Uploadez ce fichier dans le dossier /override/controllers/admin/ et le tour est joué !

Contactez-moi pour toute question

Dans la même catégorie