public function recommendAction() { if ($resp = $this->checkUserInput(null, self::GET)) { $resp->flush(); return false; } // find last login success users, limit 30, and return $list = []; if ($uidList = LoginLogManager::getInstance()->getLatestSuccessUser(0, 20)) { $userManager = UserManager::getInstance(); foreach ($uidList as $uid) { $user = new User(); $user->id = $uid; if (!$userManager->getUser($user)) { $row = $user->toArray(); unset($row['token']); $list[] = $row; } } } (new ApiResponse(Code::SUCCESS, $list))->flush(); return false; }
public function login(User $model) { if (TextUtil::isEmptyString($model->password)) { return new ApiResponse(Code::FAIL_EMPTY_PASSWORD, null); } $dbModel = clone $model; if ($resp = $this->getUser($dbModel)) { return $resp; } $loginFailedMax = 5; $count = LoginLogManager::getInstance()->getStatusCount($dbModel->id, time() - 1200, LoginLog::STATUS_FAILED); if (false === $count || $count >= $loginFailedMax) { return new ApiResponse(Code::FAIL_LOGIN_FAILED, ['next_time' => 1200, 'retry_number' => 0]); } if (!$this->auth($dbModel, $model)) { $loginLog = new LoginLog($dbModel->id, LoginLog::STATUS_FAILED); if ($resp = LoginLogManager::getInstance()->addLog($loginLog)) { return $resp; } return new ApiResponse(Code::FAIL_LOGIN_FAILED, ['next_time' => 0, 'retry_number' => $loginFailedMax - $count - 1]); } else { $loginLog = new LoginLog($dbModel->id, LoginLog::STATUS_SUCCESS); if ($resp = LoginLogManager::getInstance()->addLog($loginLog)) { return $resp; } } $this->updateUserToken($dbModel); $this->setAuthorizedUser($dbModel); return null; }