В Laravel/Passport есть несколько способов записи роли пользователя в JWT. Один из них - использование встроенной функции hasRole
для проверки наличия роли у пользователей.
Для начала у вас должна быть реализована аутентификация пользователей с использованием Passport. После этого вам нужно будет расширить User
модель, чтобы добавить метод hasRole
для проверки роли пользователя.
1. Создайте новый метод hasRole
в User
модели Laravel. Можете использовать следующий код:
public function hasRole($role) { return $this->role === $role; }
2. Теперь вам нужно обновить метод createToken
в аутентификационном контроллере для добавления роли в JWT. Расширьте метод createToken
следующим образом:
public function createToken(Request $request) { $user = User::where('email', $request->email)->first(); if ($user && password_verify($request->password, $user->password)) { $token = $user->createToken('MyApp', [$user->role])->accessToken; return response()->json(['token' => $token]); } else { return response()->json(['error' => 'Invalid credentials'], 401); } }
3. Теперь, когда пользователь успешно идентифицирован и токен JWT создан, вы можете получить доступ к роли пользователя через поле $user->role
в JWT. Пример использования:
public function someProtectedRoute(Request $request) { $user = $request->user(); if ($user->hasRole('admin')) { // Действия, доступные только администраторам } else { // Действия для других ролей } }
Теперь роль пользователя будет записана в JWT и вы можете использовать ее для проверки прав доступа к защищенным маршрутам.