Можно ли с помощью spatie / laravel -пределить ограничение доступа в конструкторе для всех действий? - PullRequest
0 голосов
/ 25 января 2020

В Laravel 6 Я использую разрешение spatie / laravel, и оно работает, если я проверяю действия элемента управления, например:

$loggedUser      = Auth::guard('api')->user();
if ( !$loggedUser->can(PERMISSION_APP_ADMIN) ) {
    return response()->json(['error' => 'Unauthorized'], \App\MyApp::HTTP_RESPONSE_NOT_UNAUTHORIZED);
}

Но так как все действия элемента управления имеют те же правила, которые я пытался переместите этот код в конструктор, например:

use Spatie\Permission\Models\Permission;
use Spatie\Permission\Models\Role;


class UserController extends Controller
{
    private $requestData;

    public function __construct()
    {
        $this->middleware('auth:api', ['except' => []]);
        $request           = request();
        if ( !$loggedUser->can(PERMISSION_APP_ADMIN) ) {
            return response()->json(['error' => 'Unauthorized'], HTTP_RESPONSE_NOT_UNAUTHORIZED);
        }
    }

Но неавторизованная ошибка не вызвана и страница доступна. Какой путь правильный?

"php": "^7.2",
"laravel/framework": "^6.2",
"laravel/passport": "^8.1",
"spatie/laravel-permission": "^3.5",

Спасибо!

...