示例#1
0
 public function check()
 {
     $param = explode('?', $_SERVER['REQUEST_URI']);
     parse_str($param[1], $datas);
     if (isset($datas['user_name']) && joosString::trim($datas['user_name']) != '') {
         $user = new modelUsers();
         $user->user_name = $datas['user_name'];
         $ret = $user->find() ? 0 : 1;
         $ret = preg_match(JUSER_NAME_REGEX, $datas['user_name']) ? $ret : false;
         echo $ret ? 'true' : 'false';
         exit;
     }
     if (isset($datas['email']) && joosString::trim($datas['email']) != '') {
         $user = new modelUsers();
         $user->email = $datas['email'];
         echo $user->find() ? 'false' : 'true';
         exit;
     }
 }
示例#2
0
 /**
  * @static
  * @param $user_name
  * @param  bool   $password
  * @param  array  $params
  * @return string
  *
  * @todo требуется рефакторинг, модуль должен возвращать true или false
  */
 public function login($user_name, $password = false, array $params = array())
 {
     $params += array('redirect' => true);
     $return = (string) joosRequest::param('return');
     if ($return && !(strpos($return, 'com_registration') || strpos($return, 'com_login'))) {
         //$return = $return;
     } elseif (isset($_SERVER['HTTP_REFERER'])) {
         $return = $_SERVER['HTTP_REFERER'];
     } else {
         $return = JPATH_SITE;
     }
     $user = new modelUsers();
     $user->user_name = $user_name;
     $user->find();
     // если акаунт заблокирован
     if (!$user->id) {
         if (isset($params['return'])) {
             return json_encode(array('error' => 'Такого пользователя нет'));
         } else {
             joosRoute::redirect($return, 'Такого пользователя нет');
         }
     }
     // если акаунт заблокирован
     if ($user->state == 0) {
         if (isset($params['return'])) {
             return json_encode(array('error' => _LOGIN_BLOCKED));
         } else {
             joosRoute::redirect($return, _LOGIN_BLOCKED);
         }
     }
     //Проверям пароль
     if (!self::check_password($password, $user->password)) {
         if (isset($params['return'])) {
             return json_encode(array('error' => _LOGIN_INCORRECT));
         } else {
             joosRoute::redirect($return, _LOGIN_INCORRECT);
         }
     }
     // пароль проверили, теперь можно заводить сессиию и ставить куки авторизации
     $session = new modelUsersSession();
     $session->time = time();
     $session->guest = 0;
     $session->user_name = $user->user_name;
     $session->user_id = $user->id;
     $session->is_admin = 0;
     // сгенерием уникальный ID, захеширем его через sessionCookieValue и запишем в базу
     $session->generate_id();
     // записываем в базу данные о авторизованном пользователе и его сессии
     $session->store();
     // формируем и устанавливаем пользователю куку что он автоизован
     $sessionCookieName = joosSession::session_cookie_name();
     // в значении куки - НЕ хешированное session_id из базы
     setcookie($sessionCookieName, $session->get_cookie(), false, '/', JPATH_COOKIE);
     // очищаем базу от всех прежних сессий вновь авторизовавшегося пользователя
     $query = "DELETE FROM #__users_session WHERE  is_admin=0 AND session_id != " . $session->_db->get_quoted($session->session_id) . " AND user_id = " . (int) $user->id;
     joosDatabase::instance()->set_query($query)->query();
     // обновляем дату последнего визита авторизованного пользователя
     $user->lastvisit_date = JCURRENT_SERVER_TIME;
     $user->store();
     $token = new modelUsersTokens();
     $token->generate_token($user->id);
     if (isset($params['return'])) {
         return json_encode(array('user' => $user));
     } else {
         joosRoute::redirect($return);
     }
 }