header('X-API-TOKEN') && ($company_token = MultiDB::getCompanyToken($request->header('X-API-TOKEN')))) { } elseif ($request->header('X-API-TOKEN') && ($company_token = CompanyToken::with([ 'user.account', 'company', 'account', 'cu', ])->where('token', $request->header('X-API-TOKEN'))->first())) { } else { return response()->json(['message' => 'Invalid token'], 403); } $user = $company_token->user; $error = [ 'message' => 'User inactive', 'errors' => new stdClass(), ]; //user who once existed, but has been soft deleted if (! $user) { return response()->json($error, 403); } if (Ninja::isHosted() && $company_token->is_system == 0 && ! $user->account->isPaid()) { $error = [ 'message' => 'Feature not available with free / unpaid account.', 'errors' => new stdClass(), ]; return response()->json($error, 403); } app('queue')->createPayloadUsing(function () use ($company_token) { return ['db' => $company_token->company->db]; }); //user who once existed, but has been soft deleted if ($company_token->cu->is_locked) { $error = [ 'message' => 'User access locked', 'errors' => new stdClass(), ]; return response()->json($error, 403); } //stateless, don't remember the user. auth()->login($user, false); auth()->user()->setCompany($company_token->company); auth()->user()->setContext($company_token->company, $company_token); // Alternative: Bind context to service container for request duration app()->instance('current.company', $company_token->company); app()->instance('current.company_user', $company_token->cu); app()->instance('current.company_token', $company_token); return $next($request); } }