2017-09-05 2 views
0

Am en utilisant cakephp3 et plugin cakedc. J'ai deux groupes d'utilisateurs, 1 est un utilisateur normal et d'autres est super utilisateur
ce que je suis à la recherche essentiellement pour réglage est-il différent URL auth pour différents utilisateurs à la fois comme groupe d'utilisateurs ont différents dashbaord. J'ai essayé de brancher UsersAuthComponent::EVENT_AFTER_LOGIN .C'est mon code dans eventListener
comment définir différentes URL de redirection auth pour différents groupes d'utilisateurs dans le plugin cakedc cakephp3

$helper = new AppView(); 
$adminDashBoard = $helper->Url->build([ 
        'prefix' => 'admin', 
        'controller' =>'users', 
        'action' => 'dashboard', 
        'plugin' => null 
       ]); 

     $customerDashBoard = $helper->Url->build([ 
        'prefix' => 'customer', 
        'controller' =>'customers', 
        'action' => 'dashboard', 
        'plugin' => null 
       ]); 

     $result = array(); 
     if($entity['is_superuser'] == 1) 
      $result[] = $adminDashBoard; 
     else 
      $result[] = $customerDashBoard; 

     return $result; 

je devais créer un objet de APPVIEW comme constructeur Url était pas disponible dans EventLister. Au-dessus de code fonctionne bien, mais l'URL que j'ai joint dans l'objet de résultat se joint en annexe dans l'URL en cours et il devient comme

domain.com/<user's dashboard url in urlencoded format> 

mais je veux qu'il rediriger vers l'URL du tableau de bord de l'utilisateur que j'avais mis en eventListner toute aide sera appréciée

+0

Au lieu d'utiliser l'assistant, vous devriez être en mesure d'appeler '\ Cake \ Routing \ Router url ([...])'. Oui –

+0

après question l'affichage j'avais changé l'aide pour appeler la méthode url – newbie

Répondre

0

Je peux penser à 2 options:

  • Remplacer EVENT_AFTER_LOGIN (plus complexes)
  • Créez une action de tableau de bord et 2 vues différentes 1 de chaque rôle. Puis, dans l'action du tableau de bord, vous pouvez faire quelque chose comme

    if ($role === ROLE_ADMIN) { $this->render('dashboard_admin'); } else { $this->render('dashboard_user'); }

Je pense que l'option 2 est assez simple à utiliser, vous pouvez extraire le balisage commun des vues sur un élément et le réutiliser dans les deux .

+0

je suis en utilisant le thème admin lte .. Avez-vous une idée de changer modèle en elle? – newbie

+0

s'il vous plaît commencer une autre question, semble que le commentaire n'est pas lié. serait également agréable de définir la réponse comme résolue si elle était la voie à suivre pour vous ... merci – steinkel

+0

bien oui, il m'a guidé vers le Anwer. Cependant, mon problème n'est toujours pas résolu. – newbie