LaravelでGateが使えないとき
(Laravel5系)
ECサイトにて、
- ユーザー:usersテーブル
- フロント画面
- guardの定義:web
- フロント画面
- 管理者:adminテーブル
- 管理画面
- guardの定義:admin
- 管理画面
といった感じに利用者・画面を分けている。
管理画面内にて、Gate::defineを記載したが、この中のロジックを通過してくれなかった。
Gateはdefaultのguardを参照するのだが、
(変更してなければ)defaultのguardがweb(user)となっているため、
adminをdefaultのguardにしてあげる必要がある。
Auth::shouldUse('admin')
とするとdefaultのguardが上書きされ、管理画面でのGateが使えるようになる