Мне интересно, есть ли лучший способ обработки того, как у меня есть мои аутентифицированные пользователи в отношении разных типов пользователей.
У меня есть основной пользователь и пользователь-администратор. Основной пользователь, очевидно, будет иметь доступ только к базовым страницам, и пользователь-администратор должен иметь доступ к другим страницам, к которым у основного пользователя нет доступа.
То, что я делаю, это: я создал столбец super_user в своей таблице и добавил:
if(Auth::user()->super_user == 0) { return Redirect::to('/')->with('error', 'You do not have permission to access this page'); }
на каждую страницу, к которой я не хочу, чтобы базовый пользователь мог получить доступ. Теперь это сработало, но я начинаю переносить свои приложения на Laravel 5, и я думаю, что я могу по-другому справиться с этим.
Лучший способ справиться с ролью пользователя в вашем случае – использовать Middleware .
namespace App\Http\Middleware; use Closure; use Illuminate\Contracts\Auth\Guard; class Admin { /** * The Guard implementation. * * @var Guard */ protected $auth; /** * Create a new filter instance. * * @param Guard $auth * @return void */ public function __construct(Guard $auth) { $this->auth = $auth; } /** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed */ public function handle($request, Closure $next) { if (!$this->auth->getUser()->super_user) { return redirect->to('/') ->with('error', 'You do not have permission to access this page'); } } return $next($request); } }
app\Http\Kernel.php
: protected $routeMiddleware = [ 'admin' => 'App\Http\Middleware\Admin', ];
Route::group(['middleware' => ['admin']], function() { // your route });