2017-09-05 7 views
0

setzt, benutze cakephp3 und cakedc plugin. Ich habe zwei Benutzergruppen, 1 ist normaler Benutzer und anderer ist Superbenutzer
, was ich im Grunde suche, ist das Einstellen der unterschiedlichen Authentifizierungsurl für unterschiedliche Benutzer, da beide Benutzergruppe unterschiedliches dashbaord haben. Ich habe versucht, UsersAuthComponent::EVENT_AFTER_LOGIN .Dieses Haken ist mein Code in eventListener
wie man verschiedene auth redirect URL für unterschiedliche Benutzergruppe im cakedc plugin 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; 

Ich hatte Aufgabe AppView zu erstellen, wie URL-Builder in EventLister nicht verfügbar war. Oberhalb Code funktioniert gut, aber die URL, die ich in Folge Objekt angehängt haben wird in der aktuellen URL angehängt und es wird wie

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

aber ich es Benutzer-Dashboard URL umleiten möchten, die ich in eventListner gesetzt hatte jede Hilfe wird

geschätzt werden
+0

Anstatt den Helfer zu verwenden, sollten Sie '\ Cake \ Routing \ Router :: url ([...])' aufrufen können. –

+0

Ja, nachdem ich die Frage gestellt hatte, hatte ich den Helfer geändert, um die URL-Methode – newbie

Antwort

0

ich denken kann, 2 Möglichkeiten:

  • Aufschalten EVENT_AFTER_LOGIN (komplexere)
  • Erstellen Sie eine Dashboard-Aktion und 2 verschiedene Ansichten 1 für jede Rolle. Dann im Armaturenbrett Aktion können Sie so etwas wie

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

glaube ich Option 2 einfach genug ist, es zu benutzen, können Sie die gemeinsame Markup aus den Ansichten in ein Element extrahieren und sie in beide wiederverwenden .

+0

aufzurufen. Ich benutze Admin-LTE-Thema. Hast du irgendeine Idee, wie man die Vorlage darin ändert? – newbie

+0

Bitte starten Sie eine andere Frage, sieht aus wie der Kommentar nicht verwandt ist. Auch wäre schön, die Antwort als gelöst zu definieren, wenn es der Weg für dich war ... danke – steinkel

+0

na ja, es hat mich zur Anwer geführt. Mein Problem ist jedoch immer noch nicht behoben. – newbie

Verwandte Themen