2016-11-20 3 views
0

ich die Auth Komponente bin mit dem Umleitungen Login gesetzt und Abmelden:CakePHP 3.x redirectUrl() auf diffrent Benutzerrollen

$this->loadComponent('Auth', [ 
      'loginRedirect' => [ 
       'controller' => 'Adresses', 
       'action' => 'index' 
      ], 
      'logoutRedirect' => [ 
       'controller' => 'Pages', 
       'action' => 'display', 
       'home' 
      ], 
       'authenticate' => [ 
        'Form' => [ 
         'fields' => ['username' => 'email'] 
        ] 
       ], 
      'authorize' => 'Controller', 

     ]); 

Jetzt möchte ich die Benutzer auf verschiedenen Seiten nach bekommen umleiten mit ihre Rolle, die bisher gut funktioniert:

if ($this->Auth->user('role') == 'admin') {       
          return $this->redirect([ 
           'controller' => 'adresses', 
           'action' => 'adminindex' 
          ]); 
         } 
        } elseif ($this->Auth->user('role') == 'user') { 
         return $this->redirect([ 
          'controller' => 'adresses', 
          'action' => 'index' 
         ]); 
        } 

Jetzt möchte ich dafür, die verschiedenen Rollen auf die gewünschte links.And umleiten ich verwende:

return $this->redirect($this->Auth->redirectUrl()); 

Das funktioniert nur für Anfrage wie Ansicht und Bearbeitung.Andernfalls Es geht zurück auf die Auth Component Redirect, die ich nicht will.

Wie kann ich erreichen, dass ich meine regulären Fallback in der Auth-Komponente (App Controller) meine Rolle Switcher und auch die Umleitung, wenn Ansichten angefordert werden und der Benutzer/admin nicht angemeldet ist.

Dafür habe ich versucht:

if(!empty($this->Auth->redirectUrl())){ 

} 

Welche working.Any nicht Idee geschätzt würde.

Antwort

2
$this->Auth->redirectUrl() 

ist nur für Umleiten Benutzer nach dem Login

http://book.cakephp.org/3.0/en/controllers/components/authentication.html#redirecting-users-after-login

sehen, wenn Sie auf referer Seiten umleiten müssen, können Sie Controller::referer()

verwenden siehe http://api.cakephp.org/3.3/class-Cake.Controller.Controller.html#_referer

können Sie Überprüfen Sie angemeldete Benutzer mit $this->Auth->user()

+0

Vielen Dank! Funktioniert wie ein Zauber (http://book.cakephp.org/3.0/en/controllers.html#redirecting-to-other-pages) – Isengo

Verwandte Themen