Example #1
0
 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;
 }
Example #2
0
 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;
 }