header('X-API-TOKEN') && ($company_token = CompanyToken::with(['user','company'])->whereRaw("BINARY `token`= ?",[$request->header('X-API-TOKEN')])->first() ) ) { $user = $company_token->user; $error = [ 'message' => 'User inactive', 'errors' => [] ]; //user who once existed, but has been soft deleted if(!$user) return response()->json(json_encode($error, JSON_PRETTY_PRINT) ,403); /* | | Necessary evil here: As we are authenticating on CompanyToken, | we need to link the company to the user manually. This allows | us to decouple a $user and their attached companies completely. | */ $user->setCompany($company_token->company); //user who once existed, but has been soft deleted if($user->user_company()->is_locked){ $error = [ 'message' => 'User access locked', 'errors' => [] ]; return response()->json(json_encode($error, JSON_PRETTY_PRINT) ,403); } //stateless, don't remember the user. auth()->login($user, false); event(new UserLoggedIn($user)); } else { $error = [ 'message' => 'Invalid token', 'errors' => [] ]; return response()->json(json_encode($error, JinvoicelspSON_PRETTY_PRINT) ,403); } return $next($request); } }