PHP: public function getIsAdminAttribute() { return $this->role === 1; //return $this->role === "admin"; }
Для этого и придумали middleware. PHP: class AdminOnlyMiddleware { public function handle($request, Closure $next) { $user = Auth::user(); if ($user->role !== "admin") { abort(403); } return $next($request); } } И вешаешь его на роуты, которые доступны только админу. Только отлаживай сам, я о твоей структуре БД cужу только по твоим странным фрагментам кода. --- Добавлено --- Ты в доке что-то кроме примеров кода читаешь?
Еще можно в AppServiceProvider создать директивы чтобы использовать в шаблонах blade PHP: Blade::if('admin', function () { return auth()->check() && auth()->user()->isAdmin(); }); и уже в шаблонах писать HTML: @admin Видит только админ @endadmin
Это вопрос к @MouseZver почему то enum использовать не принято. Немного медленнее немного менее маштабируемо PHP: @if($user->isAdmin) <span>@lang("admin")</span> @endif
@nospiou Код (Text): syntax error, unexpected '<' (View: Код (Text): <?php echo e(<?php if($user->isAdmin): ?>); ?>
@Dimon2x, ты смешиваешь разные задачи. Что тебе конкретно надо, ограничить доступ неадминов к роутам, или не выводить не админам какой-то контент?
@nospiou это я знаю что повторяется, это из-за этого кода PHP: @if($user->isAdmin) <span>@lang("admin")</span> @endif
@lang("app.admin") + файл перевода. Зря им не пользуешься. Ну а на счет вопроса к @mkramer если у тебя мидлвера и страница доступна только админу то ты без проверок уже можешь писать админ.
PHP: public function getRoleNameAttribute() { if($this->role === "admin") return trans("admin"); elseif($this->role === "user") return trans("user"); else return trans("UFO"); } // blade <span>{{$user->role_name}}</span>