Если пользователь неактивен, остановите его использование приложения. как я могу достичь этого

Я использую токен Laravel и JWT для разработки внутренних API-интерфейсов для разработчиков внешнего интерфейса. Я помещаю столбец состояния (активный, неактивный) в базу данных. Если статус пользователя неактивен, ограничьте его использование приложения.

часть функции входа в систему, которая дает токен активному пользователю:

 if ($user->status == 'active') {
            return response()->json(
                ['data' => ['token' => $token, 'message' => 'Login successfully.', 'status' => true, 'user' => $user]],
                200               
            );
 }
 if ($user->status == 'inactive') {
             return response()->json(
                ['data' => ['token' => '', 'message' => 'User is inactive.', 'status' => false]],
                 200
            );
 }

мое промежуточное ПО:

public function handle($request, Closure $next)
    {
        try {
            $user = JWTAuth::parseToken()->authenticate();
        } catch (Exception $e) {
            if ($e instanceof \Tymon\JWTAuth\Exceptions\TokenInvalidException) {
                return response()->json(['data' => ['message' => 'Token is Invalid.', 'status' => false]],
                    200);
            } else if ($e instanceof \Tymon\JWTAuth\Exceptions\TokenExpiredException) {
                return response()->json(['data' => ['message' => 'Token is Expired.', 'status' => false]], 200);
            } else {
                return response()->json(['data' => ['message' => 'Authorization Token not found.', 'status' => false]], 200);
            }
        }
        return $next($request);
    }

person ZAIN UL ABIDEEN 152    schedule 05.11.2020    source источник
comment
В конфигурации jwt у вас есть настройка, позволяющая установить, сколько минут должен быть действителен токен. Ставь как хочешь и все.   -  person Svetoslav    schedule 05.11.2020


Ответы (2)


Вам нужно написать другое промежуточное ПО, чтобы проверить, что пользователь активен. Поместите его после промежуточного программного обеспечения auth и верните 403, когда !$user->is_active.

person zlodes    schedule 05.11.2020

Чтобы проверить, активен или неактивен пользователь, лучше проверить его в другом промежуточном программном обеспечении, но если вы хотите проверить, активен или неактивен пользователь в этом промежуточном программном обеспечении. Самый простой способ получить:

public function handle($request, Closure $next)
    {
        try {
            $user = JWTAuth::parseToken()->authenticate();
            if ($user->status == 'inactive') {
                 return response()->json(['data' => ['token' => '', 'message' => 'User is inactive.', 'status' => false]], 403);
            }

        } catch (Exception $e) {
            if ($e instanceof \Tymon\JWTAuth\Exceptions\TokenInvalidException) {
                return response()->json(['data' => ['message' => 'Token is Invalid.', 'status' => false]],
                    200);
            } else if ($e instanceof \Tymon\JWTAuth\Exceptions\TokenExpiredException) {
                return response()->json(['data' => ['message' => 'Token is Expired.', 'status' => false]], 200);
            } else {
                return response()->json(['data' => ['message' => 'Authorization Token not found.', 'status' => false]], 200);
            }
        }
        return $next($request);
    }
person Farid Vatani    schedule 05.11.2020