В 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",
Спасибо!