Laravel 5.8 JWT API仅在状态为活动时登录用户

问题描述

我正在尝试执行以下操作:如果您尝试使用他的凭据登录,那次登录系统将检查帐户状态(如果状态为“ ACTIVE”)登录,否则显示错误通知您的帐户已被阻止。

我的数据库名称及其值

account_status

ACTIVEBLOCKED

我在控制器中尝试了此操作,但它不起作用

    <?PHP

namespace App\Http\Controllers\Api;

use App\Http\Controllers\Controller;
use App\Http\Requests\UserLoginRequest;
use App\Http\Resources\User as UserResource;
use App\User;

class LoginController extends Controller
{

    public function login(UserLoginRequest $request)
    {

        if (!$token = auth()->attempt($request->only(['mobile_number','password']))) {
            return response()->json([
                'errors' => [
                    'mobile_number' => ['Sorry we cant find you with those details.'],],422);
        };

        return (new UserResource($request->user()))->additional([
            'Meta' => [
                'token' => $token,]);
    }

    public function logout()
    {
        auth()->logout();
    }

}

解决方法

尝试一下:

use Auth;

if (Auth::attempt(['email' => $email,'password' => $password,'account_status'=>'ACTIVE'])) {
   // Authentication passed...
   return (new UserResource($request->user()))->additional([
        'meta' => [
             'token' => $token,],]);
    }
   return response()->json([
      'errors' => ["email" => "Something wrong"]
   ]);