예제 #1
0
 /**
  * 用户登录
  *
  * @param string $userid
  * @param string $password
  * @param int $type $type 1-uid ,2-username 3-email
  * @param string $question
  * @param string $answer
  * @return array
  */
 public function login($userid, $password, $type = 2, $ifcheck = false, $question = '', $answer = '')
 {
     $user = array();
     $ds = $this->_getUserDs();
     switch ($type) {
         case 1:
             $user = $ds->getUserByUid($userid, WindidUser::FETCH_MAIN);
             break;
         case 2:
             $user = $ds->getUserByName($userid, WindidUser::FETCH_MAIN);
             break;
         case 3:
             $user = $ds->getUserByEmail($userid, WindidUser::FETCH_MAIN);
             break;
     }
     if (!$user) {
         return array(WindidError::USER_NOT_EXISTS);
     }
     if ($ifcheck) {
         $safecv = WindidUtility::buildQuestion($question, $answer);
         if ($safecv != $user['safecv']) {
             return array(WindidError::SAFECV_ERROR, $user);
         }
     }
     if (WindidUtility::buildPassword($password, $user['salt']) !== $user['password']) {
         return array(WindidError::PASSWORD_ERROR, $user);
     }
     return array(1, $user);
 }
예제 #2
0
 public static function checkOldPassword($password, $uid)
 {
     $user = self::_getUserService()->getUserByUid($uid, WindidUser::FETCH_MAIN);
     if (WindidUtility::buildPassword($password, $user['salt']) != $user['password']) {
         return new WindidError(WindidError::PASSWORD_ERROR);
     }
     return true;
 }
예제 #3
0
 protected function _beforeUpdate()
 {
     Wind::import("WSRV:user.validator.WindidUserValidator");
     if (!$this->uid) {
         return new WindidError(WindidError::FAIL);
     }
     if (isset($this->_data['username'])) {
         $result = WindidUserValidator::checkName($this->_data['username'], $this->uid);
         if ($result !== true) {
             return $result;
         }
     }
     if (isset($this->_data['email'])) {
         $result = WindidUserValidator::checkEmail($this->_data['email'], $this->uid);
         if ($result !== true) {
             return $result;
         }
     }
     if (isset($this->_data['old_password'])) {
         $result = WindidUserValidator::checkOldPassword($this->_data['old_password'], $this->uid);
         if ($result !== true) {
             return $result;
         }
     }
     if (isset($this->_data['password'])) {
         $this->_data['salt'] = WindUtility::generateRandStr(6);
         $this->_data['password'] = WindidUtility::buildPassword($this->_data['password'], $this->_data['salt']);
     }
     if (isset($this->_data['question']) && isset($this->_data['answer'])) {
         $this->_data['safecv'] = $this->_data['question'] ? substr(md5($this->_data['question'] . $this->_data['answer']), 8, 8) : '';
     }
     return true;
 }
예제 #4
0
 /**
  * 修改用户基本信息
  * Enter description here ...
  * @param int $uid
  * @param string $password
  * @param array $editInfo  array('username', 'password', 'email', 'question', 'answer')
  */
 public function editUser($uid, $password, $editInfo)
 {
     if (!is_array($editInfo)) {
         $editInfo = array($editInfo);
     }
     $user = $this->_getUserDs()->getUserByUid($uid, WindidUser::FETCH_MAIN);
     if (WindidUtility::buildPassword($password, $user['salt']) != $user['password']) {
         return WindidError::PASSWORD_ERROR;
     }
     $allow = array('username', 'password', 'email', 'question', 'answer');
     Wind::import('WINDID:service.user.dm.WindidUserDm');
     $dm = new WindidUserDm($uid);
     foreach ($editInfo as $key => $info) {
         if (!in_array($key, $allow)) {
             continue;
         }
         $fun = 'set' . ucfirst($key);
         $dm->{$fun}($info);
     }
     $result = $this->_getUserDs()->editUser($dm);
     if ($result instanceof WindidError) {
         return $result->getCode();
     }
     $this->_getNotifyClient()->send('editUser', $uid);
     return (int) $result;
 }
예제 #5
0
 public static function updateCheck(WindidUserDm $dm)
 {
     if (!($user = self::_getUserService()->getUserByUid($dm->uid))) {
         return new WindidError(WindidError::USER_NOT_EXISTS);
     }
     $data = $dm->getData();
     if ($result = self::checkName($data['username'], $dm->uid) !== true) {
         return $result;
     }
     if ($result = self::checkEmail($data['email'], $dm->uid) !== true) {
         return $result;
     }
     if (WindidUtility::buildPassword($data['password'], $user['salt']) != $user['password']) {
         return new WindidError(WindidError::PASSWORD_ERROR);
     }
     return true;
 }
예제 #6
0
 protected function _beforeUpdate()
 {
     if (!$this->uid) {
         return new WindidError(WindidError::FAIL);
     }
     if (isset($this->_data['password'])) {
         $this->_data['salt'] = WindUtility::generateRandStr(6);
         $this->_data['password'] = WindidUtility::buildPassword($this->_data['password'], $this->_data['salt']);
     }
     if (isset($this->_data['question']) && isset($this->_data['answer'])) {
         $this->_data['safecv'] = $this->_data['question'] ? substr(md5($this->_data['question'] . $this->_data['answer']), 8, 8) : '';
     }
     if (isset($this->_data['old_password'])) {
         $user = Windid::load('user.WindidUser')->getUserByUid($this->uid, WindidUser::FETCH_MAIN);
         if (WindidUtility::buildPassword($this->_data['old_password'], $user['salt']) != $user['password']) {
             return new WindidError(WindidError::PASSWORD_ERROR);
         }
     }
     return true;
 }