Laravel 5.5で超簡単かつシンプルに権限(Roles)を付与する方法
中小規模のシステムでは 管理者 が複数存在する場面は滅多にない。 あったとしても、同じ 認証 アカウント を使用することが多いので、わざわざデータベースに 権限 用のテーブルを追加してリレーションしたり、新たに 管理者 用のテーブルを追加するほどでもなく、結局追加しても数 アカウント しか使わないのが目に見えている。 一般ユーザーと管理者の2択 先に断っておきますが、この方法は一般ユーザーはそのままで、少数の 管理 アカウント だけに 権限 を付与する方法です。 Laravel には面倒だが比較的簡単に実装できる Multi-Auth ( 複数認証 )や、WordPressのように 権限 ごとに細かく設定できる Policy (ポリシー)を使った 認可 もありますが、今回はそれらを一切使わずに実装します。 アカウントを指定する 管理者 用の アカウント ( メールアドレス )を 設定ファイル に書きます。 .env カンマ区切り で複数指定します。 ADMIN_ROLES=admin@sampledomain.com,example@sampledomain.com ミドルウェアを追加 auth 同様に、 ルート や コントローラー に追加したいので、 ミドルウェア を作成します。 app\Http\Middleware\ChackAdmin.php <?php namespace App\Http\Middleware; use Closure; class CheckAdmin { /** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed */ public function handle($request, Closure $next) { $admin_roles = explode(',', env('ADMIN_ROLES')); if (!in_array(auth()-...