Как разграничить права токенов Laravel Sanctum
В моем приложении Laravel 10 я использую пакет Spatie для ролей и Sanctum для авторизации.
Во время авторизации я создаю токен доступа с помощью Sanctum, передавая параметру abilities
массив ролей, созданных Spatie во время регистрации:
$user->createToken($user->name, [
$user->getRoleNames()->toArray()
])->plainTextToken;
По умолчанию у пользователей могут быть только две роли: user
или admin
.
При попытке обновить информацию другого пользователя (не того, которому был выдан токен доступа) Я получаю исключение AuthenticationException
даже на уровне маршрута, прежде чем добраться до контроллеров.
Мои роуты выглядят так:
Route::middleware('auth:sanctum')->group(function () {
Route::apiResource('users', UserController::class);
});
Где и как можно (нужно) правильно настроить разрешения, чтобы пользователи с ролью user
имели доступ только к получению информации и редактированию самих себя, а пользователи с ролью admin
также имели доступ и к редактированию всех пользователей?