/** * 用户登录 * * @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); }
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; }
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; }
/** * 修改用户基本信息 * 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; }
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; }
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; }