2017-03-20 12 views
-1

idadmin_typenameなどのようないくつかの列を持つadminsテーブルがあります。admin_typeの2種類があります.1つはadminでもう1つはhodです。laravelで特定のユーザーのURLを無効にする方法はありますか?

ここでは、(admin_type == "admin")でログインしている管理者がすべての管理者のURLにアクセスできるようにしたいのですが、admin_type == "hod"ユーザーがアクセスできるURLを制限したい場合があります。

私はLaravel 5.2を使用しています。誰も私がこの問題を解決するのを助けることができますか?例えば

admin_type=="hod"を持つユーザーは、これらのリンク

www.example.com/admin/add-user 
www.example.com/admin/edit-user 
www.example.com/admin/add-customer 
www.example.com/admin/edit-customer 

と、より多くのURLにアクセスした場合、私はここで**You have no rights to access this link **

のようないくつかのメッセージが私のデータベース構造で表示する:

enter image description here

+0

あなたは何を試してみましたか? [ビルトイン認証サービス](https://laravel.com/docs/5.2/authorization)の何が問題ですか? –

+0

また、ここで適切に書式を設定する方法については、[the markdown help](http://stackoverflow.com/editing-help)を参照してください。 –

+0

@EdCottrellあなたが送信するリンクは、laravelの提供する認証コンポーネントに基づいていますが、ログインはコアコードで行いました – kunal

答えて

1

このような使用例についてはMiddlewareを実装しました。 Laravelの作業ディレクトリにphp artisan make:midldeware yourNameHereを実行するだけで、職人が対応するミドルウェアクラスを生成します。

次に、このようなコードが必要です。ユーザーが管理者でない場合は、403のアボートを伴う単純なif条件です。

class AdminMiddleware 
{ 
    /** 
    * Handle an incoming request. 
    * 
    * @param \Illuminate\Http\Request $request 
    * @param \Closure $next 
    * @return mixed 
    */ 
    public function handle($request, Closure $next) 
    { 
     if ($request->user()->admin_type != 'admin') { 
      return abort(403, "No access here, sorry!"); 
     } 

     return $next($request); 
    } 
} 

あなたのroutesファイル(ルート/ web.php):

... 
Route::group(["middleware" => 'admin'], function() { 
     //Your admin routes should be declared here 
}); 
... 
+1

あなたは1つのことを逃しました。あなたはエイリアスとしてkernel.phpのadminを定義していません – kunal

関連する問題