2016-08-22 3 views
0

Entrust, je mis en œuvre comment l'utilisateur sera redirigé vers son propre tableau de bord après la connexion en ajoutant cette méthode dans Authcontroller.phpLaravel 5.2 Entrust: rediriger l'utilisateur s'il ajoute manuellement limité URL

protected function authenticated() 
{ 

    if(\Auth::user()->hasRole(['super_admin',])) { 
     return redirect('/dashboard'); 
    } else if(\Auth::user()->hasRole(['staff_admin'])) { 
     return redirect('/staff/dashboard'); 
    } else if(\Auth::user()->hasRole(['subadmin_admin'])) { 
     return redirect('/subadmin/dashboard'); 
    } 
} 

Quel défi que je suis face à droite est maintenant, par exemple. si le personnel était connecté et redirigé vers son tableau de bord comme

domain.com/staff/dashboard

mais si il supprime manuellement le personnel de l'URL et tente d'accéder au super-administrateur du tableau de bord puis Entrust lance erreur 403, mais je veux rediriger lui à son tableau de bord, avec un message que "Vous n'êtes pas autorisé".

J'ai essayé d'implémenter le même code dans le middleware RedirectIfAuthenticated, mais il a donné l'erreur comme hasRole appelé Null.

Répondre

0

Votre DashboardController ajoute un constructeur.

Exemple de code

class UserController extends Controller 
{ 
     public function __construct() 
     { 
      $this->middleware(['role:super_admin']); 
     } 

     public function index() 
     { 
     return view('dashboard'); 
     } 
} 

Ensuite, le dossier d'erreur ajouter 403.blade.php comme ceci:

<!DOCTYPE html> 
<html> 
    <head> 
     <title>Be right back.</title> 

     <link href="https://fonts.googleapis.com/css?family=Lato:100" rel="stylesheet" type="text/css"> 

     <style> 
      html, body { 
       height: 100%; 
      } 

      body { 
       margin: 0; 
       padding: 0; 
       width: 100%; 
       color: #B0BEC5; 
       display: table; 
       font-weight: 100; 
       font-family: 'Lato', sans-serif; 
      } 

      .container { 
       text-align: center; 
       display: table-cell; 
       vertical-align: middle; 
      } 

      .content { 
       text-align: center; 
       display: inline-block; 
      } 

      .title { 
       font-size: 72px; 
       margin-bottom: 40px; 
      } 
     </style> 
    </head> 
    <body> 
     <div class="container"> 
      <div class="content"> 
       <div class="title">You are not authorized.</div> 
      </div> 
     </div> 
    </body> 
</html> 
+0

Nop! Je ne demande pas d'obtenir la page d'erreur 403. Qu'est-ce que je veux, c'est s'il change manuellement l'URL, puis comment rediriger vers son tableau de bord, plutôt que de montrer la page morte 403. J'espère que je suis clair avec une question. – Tarunn

+0

vous pouvez remplacer à la méthode handle dans le fournisseur/zizaco/entrust/src/Entrust/Middleware/EntrustRole.php –