私はLaravelのミドルウェアに関するいくつかの問題に取り組んできました。複数の役割を持つLaravelミドルウェア
- 学生(デフォルト):インデックス 'にアクセスすることができ、サイト上の
登録ユーザーは、4つの役割の一つがあります: 私はあなたに私が達成しようとしているものの基本的な考え方を教えてみましょう'と' ショーの見解
- 承認者:以前にアクセスし、プラスすることができます ':CA「、 '更新'
- エディタを概要 n個前のアクセスに加え、 'を作成'、 '編集' と '店'
- 管理者は:すべて
アクセスすることができます参考: '概要' は、インデックスビューの一種です、承認者の役割以上の場合のみ
これを行う最善の方法は何ですか?これは私がこれまで行ってきたものですが、動作していないよう:
Kernel.php
protected $middlewareGroups = [
...
'approver+' => [
\App\Http\Middleware\Approver::class,
\App\Http\Middleware\Editor::class,
\App\Http\Middleware\Admin::class,
],
];
protected $routeMiddleware = [
...
'student' => \App\Http\Middleware\Student::class,
'approver' => \App\Http\Middleware\Approver::class,
'editor' => \App\Http\Middleware\Editor::class,
'admin' => \App\Http\Middleware\Admin::class,
];
のHttp \ミドルウェア\ Admin.phpは
public function handle($request, Closure $next)
{
if (Auth::check())
{
if(Auth::user()->isAdmin())
{
return $next($request);
}
}
return redirect('login');
}
「ユーザー」Eloquentモデル:
public function isAdmin()
{
if($this->role_id === 4)
{
return true;
}
else
{
return false;
}
}
私はApproverとEditorのミドルウェアファイルで全く同じことを行い、UserモデルのisApprover関数とisEditor関数では、if文のチェック値をそれぞれ2と3に編集しました。
最後に、ここではウェブファイルは\私は私のルートで行われてきたものだ:
Route::get('scholen', '[email protected]');
Route::get('admin/scholen/overzicht', '[email protected]')->middleware('approver+');
Route::get('admin/scholen/maken', '[email protected]')->middleware('approver+');
Route::post('scholen', '[email protected]')->middleware('approver+');
Route::get('scholen/{id}', '[email protected]');
Route::get('admin/scholen/{id}/bewerken', '[email protected]')->middleware('admin');
Route::patch('admin/scholen/{id}', '[email protected]')->middleware('admin');
Route::delete('admin/scholen/{id}', '[email protected]')->middleware('admin');
それはまだ正確にポイントですべてではありませんが、私は、私は承認者を持つユーザーとしてログインしたとき以来、捕まってしまいました権利を取得し、学校の概要にアクセスしようとすると、私はホームページにリダイレクトされます。
一般に、私はあまりにも混乱していて、まったく正しくないように感じています。もっと効率的に行う方法についてアドバイスをいただけますか?
ありがとうございます!
私は、私はそれ正常に動作するようですあまりにも複雑:)作っていた考え出しどうもありがとうございました! – Jesse