/** * Проверка авторизации и установка ошибки или URL для перехода * * @param type $data * @return boolean */ public function isValid($data) { if ($valid = parent::isValid($data)) { $data = $this->getValues(); $autologin = isset($data['autologin']) && $data['autologin'] == 1; $pwd = users::hashPasswd($data['passwd']); $uid = login($data['login'], $pwd, $autologin); switch ($uid) { case self::UID_FAIL: $valid = false; $this->getElement('login')->addError(self::FAIL_LOGIN_MSG); break; case self::UID_BANNED: $_SESSION['rand'] = csrf_token(); $this->redirect_to = sprintf(self::REDIRECT_URL_BANNED, $data['login'], $_SESSION['rand']); break; case self::UID_INNACTIVE: $this->redirect_to = self::REDIRECT_URL_INACTIVE; break; case self::UID_DENYIP: $this->redirect_to = sprintf(self::REDIRECT_URL_DENYIP, $data['login']); break; case users::AUTH_STATUS_2FA: $this->redirect_to = self::REDIRECT_URL_2FA; break; default: //Успешная авторизация if ($uid > 0) { $default_location = is_emp() ? '/tu/' : '/projects/'; $ref_uri = isset($_SESSION['ref_uri']) ? urldecode($_SESSION['ref_uri']) : null; $ref_uri = !$ref_uri ? $default_location : $ref_uri; $location = HTTP_PFX . $_SERVER['HTTP_HOST'] . $ref_uri; // #0012501 $location = preg_replace("/\\/router\\.php\\?pg=/", "", $location); // #0011589 if (strpos($location, '/remind/') || strpos($location, 'inactive.php') || strpos($location, 'checkpass.php') || strpos($location, '/registration/') || strpos($location, 'fbd.php')) { $location = $default_location; } session_write_close(); //Отправляем в очередь событие об успешной авторизации require_once ABS_PATH . '/classes/statistic/StatisticFactory.php'; require_once ABS_PATH . '/classes/users.php'; $ga = StatisticFactory::getInstance('GA'); $ga->queue('event', array('uid' => $uid, 'cid' => users::getCid(), 'category' => is_emp() ? 'customer' : 'freelancer', 'action' => 'authorization_passed', 'label' => 'email')); $this->redirect_to = $location; } } } return $valid; }
} elseif (strlen($pwd) < 6) { $error = 'Слишком короткий пароль (минимум — 6 символов)'; } elseif (strlen($pwd) > 24) { $error = 'Слишком длинный пароль (максимум — 24 символа)'; } if (!$error && $codes->user_id) { require_once ABS_PATH . '/classes/users.php'; $user = new users(); $user->passwd = $pwd; $err = $user->Update($codes->user_id, $res); $u_id = $codes->user_id; $codes->DelByUT($codes->user_id, 1); if (!$err) { $info = 'Изменения внесены'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/smail.php'; $smail = new smail(); $smail->ChangePwd($codes->user_id, $pwd); // Пишем в лог смены паролей require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/restorepass_log.php'; restorepass_log::SaveToLog($codes->user_id, getRemoteIP(), 1); $pwd = users::hashPasswd(trim(stripslashes($pwd))); $user->getUserByUID($u_id); login($user->login, $pwd); session_write_close(); header('Location: /'); exit; } } } $content = 'changepwd_inner.php'; include 'template3.php';
/** * авторизация в мастере */ public function authorization(&$login) { $alert = array(); $login = __paramInit('string', null, 'auth_login'); $user = new users(); $role = $user->GetRole($login, $error); if ($error || !$role) { $alert['login'] = '******'; return $alert; } // проверяем совпадают ли роли в мастере и у пользователя $role = $role == '000000' ? 2 : 1; // 2 - фрилансер, 1 - работодатель - роль зарегистрированного пользователя $wr = new wizard_registration(); $masterRole = (int) $wr->getRole(); // роль в мастере if ($role !== $masterRole) { if ($masterRole === 1) { $alert['login'] = '******'; } else { $alert['login'] = '******'; } return $alert; } // хэш пароля $passwd = users::hashPasswd(trim($_POST['auth_password'])); $id = login($login, $passwd, 0, true); if (!$id) { $alert['password'] = '******'; return $alert; } // запоминаем в куках что авторизовались setcookie('master_auth', true, time() + 1800, '/'); $this->parent->saveActionWizard($this, step_wizard::STATUS_COMPLITED); $this->parent->bindUserIDReg($id); $this->parent->setNextStep($this->parent->getPosition() + 1); header("Location: /wizard/registration/"); exit; }
} $autologin = __paramInit('bool', NULL, 'autologin'); $is_ajax = $_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest'; if ($action == 'switch') { if (!($uid = get_uid()) || !$_SESSION['anti_uid']) { break; } $s_login = $_SESSION['anti_login']; $location = str_replace("/users/{$_SESSION['login']}/setup/", "/users/{$s_login}/setup/", $location); $user_class = is_emp() ? 'freelancer' : 'employer'; $user = new $user_class(); $pwd = $user->GetField($_SESSION['anti_uid'], $error, "passwd"); logout(); } else { $s_login = strip_tags(trim($_POST['login'])); $pwd = users::hashPasswd(trim(stripslashes($_POST['passwd']))); } //Если пусто то даже непробуем авторизоваться $is_log = 0; if (!empty($s_login) && !empty($pwd)) { $is_log = login($s_login, $pwd, $autologin); } unset($pwd); if ($_redirect) { $_SESSION['ref_uri'] = trim($_redirect); } $default_location = is_emp() ? '/' : '/projects/'; if (!$ref_uri || $ref_uri == '/') { $ref_uri = $default_location; } $location = HTTP_PFX . $_SERVER['HTTP_HOST'] . $ref_uri . $anchor;
public function autoRegistationAndLogin($data = array()) { $uid = $data['uid'] ? intval($data['uid']) : 0; $role = $data['role']; if ($uid > 0) { $class_name = $role == 0 ? 'freelancer' : 'employer'; $user = new $class_name(); $user->GetUserByUID($uid); } else { unset($data['uid']); $user = $this->autoRegistation($data); } if (!$user || !$user->uid) { return FALSE; } $pwd = $uid > 0 ? @current(users::GetUserSoltCookie($user->uid)) : users::hashPasswd(trim(stripslashes($user->passwd))); $ret = login($user->login, $pwd, 1, $uid > 0); return array('ret' => $ret, 'user' => $user); }
echo json_encode($res); exit(0); } if ($email) { $user = new users(); $user = $user->getUserBySocialEmail($email); if (empty($user['login'])) { $action = ''; } else { $login = $user['login']; } } if ($login) { $user = new users(); if ($action == 'info') { $user->GetUserByLoginPasswd($login, $user->hashPasswd($pass)); } else { $user->GetUser($login); } if (empty($user->login)) { $action = ''; } } switch ($action) { case 'role': $result = array('result' => 'ok', 'role' => is_emp($user->role) ? 1 : 2); break; case 'info': $sbr = sbr_meta::getUserReqvs($user->uid); $result = array('result' => 'ok', 'user' => array('login' => $user->login, 'email' => $user->email, 'phone' => $sbr[$sbr['form_type']]['mob_phone'] != '' ? $sbr[$sbr['form_type']]['mob_phone'] : '', 'firstname' => $user->uname ? iconv('CP1251', 'UTF-8', $user->uname) : '', 'lastname' => $user->usurname ? iconv('CP1251', 'UTF-8', $user->usurname) : '', 'role' => is_emp($user->role) ? 1 : 2, 'avatar' => $user->photo != '' ? WDCPREFIX . '/users/' . $user->login . '/foto/' . $user->photo : '')); break;
$opauthModel = new OpauthModel(); $status = __paramInit('string', null, 'status'); if ($status == 'off') { $opauthModel->removeMultilevel($uid); header_location_exit("/users/{$_SESSION['login']}/setup/safety/"); } else { $provider_type = __paramInit('string', null, 'type'); $password = __paramInit('string', null, 'oldpwd'); $error_flag = 0; if (!$provider_type) { $error_flag = 1; $alert[4] = "Вы не указали соцсеть"; } $user = new users(); // Проверям правильность пароля if (users::hashPasswd($password) != $user->GetField($uid, $ee, 'passwd')) { $error_flag = 1; $alert[5] = "Вы ввели неправильный пароль"; } if (!$error_flag) { $info_msg = "Изменения внесены"; $_SESSION['info_msg'] = $info_msg; $opauthModel->addMultilevel($uid, $provider_type); header_location_exit('/users/' . $_SESSION['login'] . '/setup/safety/'); } else { $_SESSION['alert'] = $alert; } } break; case "tabs_change": $portf = trim($_POST['portf']);
<?php require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/stdf.php"; require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/freelancer.php"; function getName($is_array = false) { $first = array('Абрам', 'Аваз', 'Аввакум', 'Август', 'Августин', 'Авдей', 'Авенир', 'Аверьян', 'Авксентий', 'Автандил', 'Агап', 'Агафон', 'Агей', 'Адам', 'Адильхан', 'Адис', 'Адольф', 'Адриан', 'Азад', 'Азамат', 'Азар', 'Азарий', 'Азиз', 'Акакий', 'Аким', 'Алан', 'Александр', 'Алексей', 'Али', 'Алим', 'Алискер', 'Алихан', 'Алоис', 'Алферий', 'Альберт', 'Альбин', 'Альфред', 'Алянур', 'Амадей', 'Амадеус', 'Амаяк', 'Амвросий', 'Анастас', 'Анатолий', 'Анвар', 'Ангел', 'Андоим', 'Андрей', 'Андрон', 'Андроп', 'Анжей', 'Аникита', 'Анисим', 'Антип', 'Антон', 'Ануфрий', 'Анфим', 'Аполлон', 'Арам', 'Ардалион', 'Арий', 'Аристарх', 'Аристон', 'Аркадий', 'Арно', 'Арнольд', 'Арон', 'Арсен', 'Арслан', 'Арулан', 'Арье', 'Артамон', 'Артем', 'Артемий', 'Артур', 'Архип', 'Аршак', 'Аршиддин', 'Аскар', 'Аскольд', 'Атанас', 'Афанасий', 'Афиноген', 'Африкан', 'Ахмет', 'Ашот', 'Бадри', 'Базан', 'Байракдар', 'Бари', 'Барузда', 'Батыр'); $second = array('Иванов', 'Петров', 'Сидоров', 'Воська', 'Семаченкуй', 'Барыжников', 'Сурок', 'Белый', 'Федософ-Ледовских', 'Онянов-Зенина', 'Казаков'); return $is_array ? array($first[array_rand($first)], $second[array_rand($second)]) : $first[array_rand($first)] . ' ' . $second[array_rand($second)]; } $nums = 50000; $role = 0; $last_id = $DB->val("SELECT uid FROM users ORDER BY uid DESC LIMIT 1"); $city_ids = $DB->col("SELECT id FROM city WHERE country_id = 1"); $user = new users(); $rolesize = $GLOBALS['rolesize']; for ($i = 0; $i < $nums; $i++) { $last_id++; $fullname = explode(' ', getName()); $ip = rand(1, 255) . '.' . rand(1, 255) . '.' . rand(1, 255) . '.' . rand(1, 255); $prefix = $role == 0 ? 'freelancer' : 'employer'; $login = $prefix . $last_id; if ($DB->val('SELECT uid FROM users WHERE login = ?', $login)) { continue; } $sql = $DB->parse("INSERT INTO users\n (login, uname, usurname, passwd, email, role, reg_date, reg_ip, last_time, last_ip, sex, active, self_deleted, country, city, icq, skype, is_pro, jabber, phone, ljuser, site, is_verify) \n VALUES \n (?, ?, ?, ?, lower(?), B'{$role}'::bit({$rolesize}),current_date, ?, now(), ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);\n\n SELECT currval('users_uid_seq');", $login, $fullname[0], $fullname[1], $user->hashPasswd('123456'), $login . '@test.lo', $ip, $ip, (bool) rand(0, 1), TRUE, FALSE, 1, $city_ids[array_rand($city_ids)], '123456789', $login, (bool) rand(0, 1), '123456789', "911-911-911", $login, 'http://google.com', (bool) rand(0, 1)); $last_id = $DB->val($sql); } echo $last_id;
/** * Меняет хеш пароля, в котором по версии пользователя должны были быть теги, * но они были обрезаны функцией strip_tags при регистрации. * http://beta.free-lance.ru/mantis/view.php?id=9807 * * Временная мера. * После глобальноый ) смены паролей этот метод потеряет актуальность. * * @global DB $DB * @param <type> $login * @return <type> */ function FixPassword($sql, $login) { global $DB; $pwd = trim($_POST['passwd']); $pwd2 = strip_tags($pwd); if ($_POST['action'] != 'login' || !$pwd || $pwd == $pwd2) { return NULL; } if ($res = $DB->row($sql, strtolower($login), users::hashPasswd(stripslashes($pwd2)))) { $DB->update('users', array('passwd' => users::hashPasswd(stripslashes($pwd))), 'uid = ?i', $res['uid']); } return $res; }
/** * Проверяет соотвествие пары логин/пароль. * * @param string $login логин пользователя. * @param string $passwd пароль пользователя в md5. * @return int 0:все ок; N:код ошибки. */ protected final function x____checkAuth($args) { list($login, $passwd) = $args; if (!isset($passwd) || !isset($login)) { $this->error(EXTERNAL_ERR_INVALID_METHOD_ARG, 'Use checkAuth(string login, string passwd)'); } require_once ABS_PATH . '/classes/users.php'; $user = new users(); $user->GetUserByLoginPasswd($login, users::hashPasswd($this->_decriptPasswd($passwd), 1)); return $this->_authDenied($user); }
/** * Авторизация * * @param array $aParams массив входящих данных * @return array $aResult ответ */ protected function x____users_signin($aParams = array()) { global $DB; $this->_validDevice($aParams); $aResult = array(); require_once ABS_PATH . '/classes/users.php'; $sLogin = strip_tags(trim($aParams['username'])); $sPasswd = users::hashPasswd(trim(stripslashes($aParams['password'])), 1); if (empty($sLogin)) { $this->error(EXTERNAL_ERR_EMPTY_USERNAME); } elseif (empty($sPasswd)) { $this->error(EXTERNAL_ERR_EMPTY_PASSWORD); } else { $nResult = login($sLogin, $sPasswd, 0, false); switch ($nResult) { case 0: $this->error(EXTERNAL_ERR_WRONG_AUTH); break; case -1: $this->error(EXTERNAL_ERR_USER_BANNED); break; case -2: $this->error(EXTERNAL_ERR_USER_NOTACTIVE); break; case -3: $this->error(EXTERNAL_ERR_USER_DENYIP); break; default: $sClassName = is_emp($_SESSION['role']) ? 'employer' : 'freelancer'; require_once ABS_PATH . '/classes/' . $sClassName . '.php'; $aData = array(); $aClassVars = array_keys(get_class_vars($sClassName)); $oUser = new $sClassName(); $oUser->GetUserByUID($nResult); users::regVisit(); foreach ($aClassVars as $sVar) { $aData[$sVar] = $oUser->{$sVar}; } $aResult = $this->_getUserData($aData, true); session_write_close(); if ($this->_sPlatform == 'ios' || $this->_sPlatform == 'android') { if ($this->_sPlatform == 'ios') { $sql = "UPDATE external_m_devices SET user_id = ?i WHERE device_id = ?"; $DB->query($sql, $aData['uid'], $this->_sUdid); } $sql = "SELECT id FROM external_m_push_settings WHERE device_id = ? AND device_type = ? AND user_id = ?i"; $settings_id = $DB->val($sql, $this->_sUdid, $this->_sPlatform, $aData['uid']); if (!$settings_id) { $sql = "INSERT INTO external_m_push_settings (\n device_id, \n device_type, \n user_id, \n message_new, \n project_response_new, \n project_select_candidate, \n project_select_performer, \n project_select_reject\n ) VALUES (\n ?,\n ?,\n ?i,\n 't',\n 't',\n 't',\n 't',\n 't'\n )"; $DB->query($sql, $this->_sUdid, $this->_sPlatform, $aData['uid']); } } break; } } return $aResult; }