예제 #1
0
 /**
  * Проверка авторизации и установка ошибки или 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;
 }
예제 #2
0
    } 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;
 }
예제 #4
0
파일: index.php 프로젝트: upovod/fl-ru-damp
 }
 $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;
예제 #5
0
 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);
 }
예제 #6
0
    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;
예제 #7
0
     $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']);
예제 #8
0
<?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;
예제 #9
0
 /**
  * Меняет хеш пароля, в котором по версии пользователя должны были быть теги,
  * но они были обрезаны функцией 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;
 }
예제 #10
0
파일: api.php 프로젝트: Nikitian/fl-ru-damp
 /**
  * Проверяет соотвествие пары логин/пароль.
  *
  * @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);
 }
예제 #11
0
 /**
  * Авторизация
  * 
  * @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;
 }