2017-11-29 6 views
0

ログインしている特定のタイプ(leader)のユーザーに、コントローラが扱うすべてのページへのアクセス権を与えたいと考えています。 docsでは、まだログインしていないすべてのユーザーをリダイレクトするコンストラクタ内に$this->middleware('Auth')を使用できることがわかりました。しかし、ユーザーがgateで許可されているかどうかをチェックする代わりに、ユーザーがログインしているかどうかをチェックする代わりに、これを行う方法を見つけられませんでした。 AuthServiceProviderLaravel Authorization:例外の代わりにリダイレクトしますか?

私はこの作品leaderているユーザーについては、次のコンストラクタ

public function __construct() 
{ 
    $this->middleware('auth'); 
    $this->middleware('can:isLeader'); 
} 

を持つコントローラ内部で、次の門

Gate::define('isLeader', function ($user) { 
    return $user->isLeader(); 
}); 

を作成しました。しかし、このコントローラを介してページにアクセスする際leaderが、私はエラーメッセージが表示さThis action is unauthorized.を取得していないユーザーのために:彼がいない場合、私はむしろhomeにユーザーをリダイレクトします

enter image description here

代わりのエラーメッセージを投げますleader。どのように私はこれを達成することができますか?

答えて

0

answer given in laracastsを再投稿するだけです。

あなたは、ユーザーが拒否された場合スローされます)

renderメソッドは、(認可何であるクラスはAuthorizationExceptionをオーバーライドするファイルHandler.php \例外でこれを行うことができます。 renderメソッド内

あなたは何ができる

if($exception instanceof AuthorizationException) { 
//your code 
} 
関連する問題