Как поставить условие на токен JWT Auth с типом модуля - используя laravel - PullRequest
0 голосов
/ 29 апреля 2019

Я создал API, который проверяет мой токен JWT Auth и возвращает пользователя с его типом модуля.Но теперь я хочу проверить, что этот токен только для этого модуля, который является Chiro или PT.В настоящее время мой контроллер выглядит следующим образом:

     class AuthenticateUserController extends Controller
 {
      public function getAuthenticatedUser(Request $request)
{
    $modules = DB::table('modules')
        ->join('user_access_modules', 'modules.id', 'user_access_modules.module_id')
        ->where('user_access_modules.user_id', Auth::user()->id)
        ->select('modules.type','modules.id')->first();
    try {

        if (! $user = \Tymon\JWTAuth\Facades\JWTAuth::parseToken()->authenticate()) {
            return response()->json(['user_not_found'], 404);
        }

    } catch (Tymon\JWTAuth\Exceptions\TokenExpiredException $e) {

        return response()->json(['token_expired'], $e->getStatusCode());

    } catch (Tymon\JWTAuth\Exceptions\TokenInvalidException $e) {

        return response()->json(['token_invalid'], $e->getStatusCode());

    } catch (Tymon\JWTAuth\Exceptions\JWTException $e) {

        return response()->json(['token_absent'], $e->getStatusCode());

    }
    $status = true;
    return response()->json(compact('status','user','modules'));
   }
}

Этот API-интерфейс проверяет токен, который я использую почтальоном, и передаю токен на предъявителя в свои заголовки, и мой ответ на этот API-интерфейс ниже.

         {
"status": true,
"user": {
    "id": 10,
    "email": "shahzadshah11323@hotmail.com",
    "status": 0,
    "created_at": "2019-04-29 11:07:46",
    "updated_at": "2019-04-29 11:07:46",
    "created_by": null,
    "updated_by": null,
    "is_super_admin": 0
},
"modules": {
    "type": "Chiro",
    "id": 6
    }
 }

Теперь здесь я хочу проверить, что этот токен предназначен только для типа Chiro, никакой другой модуль не может получить доступ к этому токену, как я могу поставить это условие на свой токен, в настоящее время этот токен можно использовать с любым модулем, но я хочу аутентифицировать токен с определенным модулемвведите.

Я отправляю запрос в теле почтальона следующим образом:

    {
"type": "Chiro"
    }

, чтобы проверить, что этот токен действителен только для этого модуля: Как я могу реализовать этот сценарий и решить эту проблему?Ваша помощь будет оценена.

...