如何仅检查(状态)活动用户才能登录- JWT Auth -Laravel

How to check only (status)active user can able to login- JWT Auth -Laravel

我已经借助这个 https://www.avyatech.com/rest-api-with-laravel-8-using-jwt-token/

实现了 JWT 令牌身份验证

第 11 步。准备 api 控制器操作 -> authenticate()

现在,系统管理员允许用户记录标记为 active/Inactive(状态)并且 不活动 用户不应该能够登录系统

登录逻辑:

        public function authenticate(UserRequest $request)
     {
    $credentials = $request->only('email', 'password');
    $request->validated();

    //Request is validated
    try {
        if (!$token = JWTAuth::attempt($credentials)) {
            $message = 'Login credentials are invalid.';
            $data = [];
            return response()->failed($message, $data);
        }
    } catch (JWTException $e) {
        return $credentials;
        return response()->json([
            'status' => false,
            'message' => 'Could not create token.',
            'error' => $e
        ], 500);
    }
    //Token created, return with success response and jwt token
    $message = 'Successfully login.';
    $data = [
        'token' => $token
    ];
    return response()->success($message, $data);
}

Table:

User
---------------
-id
-username
-email
-password
-status // active/inactive

我需要包括什么步骤来实现这个逻辑?非活动用户不得登录系统

非常感谢!

获取用户并在返回响应之前抛出错误:

public function authenticate(UserRequest $request)
{
    // ...

    $user = User::where('email', $credentials['email'])->first();

    if($user === null || $user->status !== 'active') {
        $message = 'Your account is not active.';
        $data = [];
    
        return response()->failed($message, $data);
    }

    $message = 'Successfully login.';
    $data = [
        'token' => $token
    ];

    return response()->success($message, $data);

}