2016-12-27 9 views
1

私はlaravelを学ぶことに新しいです。現在、私はLaravelポリシーに固執しています。私のプロジェクトにポリシーを追加する方法を教えてくれてありがとうと思いますか?私のlaravelプロジェクトにポリシーを追加するためのいくつかの助けを探しています

私は管理者ユーザーだけがLaravel Policies Rulesを使用して「管理ダッシュボード」を見ることができるようにしたいが、失敗するようにしたいと思う。実際に登録されているすべてのユーザーは、そのエントリーを見ることができます(下の添付写真のように)。

ユーザー名は[email protected]で、パスワードはuuuuuuです。 私のテストウェブサイトhttp://lookoko.com/にアクセスして、ユーザー名とパスワードを記録してください。管理ダッシュボードのリストがドロップダウンリストに表示されます。

enter image description here

+0

のためのあなたのコードを表示します私はこの目的のためにLaravelミドルウェアを使用することをお勧めします。https://laravel.com/docs/5.3/middleware –

+0

私は2日間laravelのドキュメントを読んだが、まだそれを完了できませんでした。私は助けを求める必要がありますこのコミュニティ。ご理解いただきありがとうございます。ありがとうございます。 – Mark

+0

@Amit Guptaはい、私はLaravelミドルウェアを試して成功しましたが、今はポリシーを使用する方法を学びたいので、ポリシーを追加することでその目標を達成できることを願っています。私のプロジェクトにポリシーを追加してもらえますか?私はこのウェブサイトを構築してオープンソースにしています。私のような初心者が学習プロセスの学習曲線を減らし、より多くの時間と空間を覚えていくことを願っているからです。ありがとう – Mark

答えて

0

make:middleware職人コマンドを使用し、新しいミドルウェアを作成するには:

php artisan make:middleware AdminMiddleware 

このコマンドは、あなたのapp/Http/Middlewareディレクトリ内の新しいAdminMiddlewareクラスを配置します。このミドルウェアでは、ログインしているユーザーがadminの場合にのみルートへのアクセスを許可します。それ以外の場合は、ユーザーをhome URIにリダイレクトします。ここで

<?php 

namespace App\Http\Middleware; 

use Closure; 

class AdminMiddleware 
{ 
    /** 
    * Handle an incoming request. 
    * 
    * @param \Illuminate\Http\Request $request 
    * @param \Closure $next 
    * @return mixed 
    */ 
    public function handle($request, Closure $next) 
    { 
     if (! auth()->user()->is_admin) { 
      return redirect()->route('home'); 
     } 

     return $next($request); 
    } 
} 

私はあなたがミドルウェアあなたapp/Http/Kernel.phpファイルのキーを割り当てる必要がありますis_admin

登録ミドルウェア

という名前のユーザーテーブルの列を持っているassummingています。既定では、このクラスの$routeMiddlewareプロパティにはLaravelに含まれるミドルウェアのエントリが含まれています。あなた自身を追加するには、単にこのリストに追加して、あなたの選択したキーを割り当てます。

protected $routeMiddleware = [ 
    'auth' => \Illuminate\Auth\Middleware\Authenticate::class, 
    ... 
    'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, 
    'admin' => \App\Http\Middleware\AdminMiddleware::class, 
]; 

ミドルウェアはHTTPカーネルで定義されていたら、ルートのグループにミドルウェアを割り当てるためにgroupメソッドを使用できます:たとえば

Route::group(['middleware' => ['admin']], function() { 
    // all your admin routes comes here 
}); 

Docs

+0

うわー、ありがとうAmit。あなたの答えは私にとって非常に詳細です。ポリシーを詳細に追加する方法を実装する方法を理解してください。今、私はLaravelポリシーの使い方を習得できることを願っています。私はLaravel 5から学びました。ビューのcanメソッドでもこの目標を達成することができますが、私は何度も成功していないことを試みました。 – Mark

関連する問題