// выполняем вход if ($_COOKIE['remh'] === $user->cookieUserHash($arrData)) { $user->authorizeUser($arrData['email'], $arrData['password'], false, true); die('<script type="text/javascript">window.location="' . chpu::createChpuUrl(CONF_SCRIPT_URL . 'index.php?ut=' . $_SESSION['sd_user'][DB_PREFIX . 'conf']['user_type']) . '";</script>'); } else { cookies::deleteAccessCookie(); } } else { cookies::deleteAccessCookie(); } } else { cookies::deleteAccessCookie(); } if (!isset($_SESSION['sd_' . DB_PREFIX . 'codex'])) { // записываем в сессию права пользователя $_SESSION['sd_' . DB_PREFIX . 'codex'] = $group->setUserRights('guest', 'guest'); } // определяем тип пользователя, по умолчанию $_SESSION['sd_user'][DB_PREFIX . 'conf']['user_type'] = !isset($_GET['ut']) ? 'competitor' : ('competitor' !== $_GET['ut'] && 'employer' !== $_GET['ut'] ? 'competitor' : $_GET['ut']); $smarty->assign('user_email', false); $smarty->assign('user_type', $_SESSION['sd_user'][DB_PREFIX . 'conf']['user_type']); $smarty->assign('codex', $_SESSION['sd_' . DB_PREFIX . 'codex']); // значения, возвращаемые в форму } /** * обработка страниц */ if (isset($_GET['do'])) { // выход из пользовательской части if ('logout' === $_GET['do']) { // очищаем куки и сессию пользователя
/** * protected функция производит обновление данных пользователя, * в соответствии с выбранным типом учетной записи * данные обновляются и в БД и в Сессии * * @param (array) $arrData - массив содержащий данные пользователя для обновления array('first_name', 'last_name', 'phone', 'user_type') * @param (array) $arrPayments - массив платных услуг (определенных администратором) * * @return string (состояние moderate, active или payment) or false */ protected function selectUserType($arrData, &$arrPayments) { // определяем группу для типа пользователя $user_group = constant('CONF_' . strtoupper($arrData['user_type']) . '_REGISTER_DEFAULT_GROUP'); // определяем состояние учетной записи пользователя $group = new group(); $arrRights = $group->setUserRights($arrData['user_type'], $user_group); // определяем токен учетной записи, в соответствии с обязанностями $token = $arrRights['resp']['moder_account'] ? 'moderate' : ($arrPayments['register_' . strtolower($arrData['user_type'])] ? 'payment' : 'active'); // если пользователь выбрал платный тип, устанавливаем дату действия токена 'payment' === $token ? $this->arrServiceFields['token_datetime'] = terms::calcDateTimeOfTerm(CONF_USER_PAYMENT_DELETE) : null; // обновляем данные пользователя if ($this->updateUser(array('first_name' => $arrData['first_name'], 'last_name' => $arrData['last_name'], 'phone' => $arrData['phone'], 'token_datetime' => $this->arrServiceFields['token_datetime']), "id IN (" . secure::escQuoteData($_SESSION['sd_user']['data']['id']) . ")")) { // изменяем рабочую таблицу $this->changeTable('conf_users'); // обновляем таблицу настроек пользователя if ($this->updateUser(array('user_type' => $arrData['user_type'], 'user_group' => $user_group, 'token' => $token), "id IN (" . secure::escQuoteData($_SESSION['sd_user']['data']['id']) . ")")) { // изменяем рабочую таблицу $this->changeTable('users', USR_PREFIX); // обновляем токен пользователя в сессии if ('active' === $token) { $_SESSION['sd_user']['data']['first_name'] = $arrData['first_name']; $_SESSION['sd_user']['data']['last_name'] = $arrData['last_name']; $_SESSION['sd_user']['data']['phone'] = $arrData['phone']; $_SESSION['sd_user'][DB_PREFIX . 'conf']['user_type'] = $arrData['user_type']; $_SESSION['sd_user'][DB_PREFIX . 'conf']['user_group'] = $user_group; $_SESSION['sd_user'][DB_PREFIX . 'conf']['token'] = $token; $_SESSION['sd_' . DB_PREFIX . 'codex'] = $arrRights; } return $token; } else { // изменяем рабочую таблицу $this->changeTable('users', USR_PREFIX); return false; } } else { return false; } }