Ejemplo n.º 1
0
 /**
  * Выполним действие
  *
  * @param string $user_name  Имя пользователя
  * @param string $user_email Адрес электронной почты
  *
  * @return array
  *
  * @version 28.11.2016
  * @author Дмитрий Щербаков <*****@*****.**>
  */
 public function run($user_name, $user_email)
 {
     $result = ['error' => true, 'message' => 'Неизвестная ошибка.'];
     // Определим длину пароля
     $length = 10;
     // Создадим временный пароль
     $zxcvbn = new \ZxcvbnPhp\Zxcvbn();
     $password = $this->di->auth->getRandomKey($length);
     while ($zxcvbn->passwordStrength($password)['score'] < intval($this->di->auth->config->password_min_score)) {
         $password = $this->di->auth->getRandomKey($length);
     }
     // Добавим пользователя
     $registerResult = $this->di->auth->register($user_email, $password, $password);
     if ($registerResult['error'] === false) {
         $user_id = $this->di->auth->getUID($user_email);
         if ($user_id !== false) {
             $user_info = \ORM::for_table('users_info')->create();
             $user_info->uid = $user_id;
             $user_info->name = $user_name;
             $user_info->access = 'user';
             $user_info->created_at = Helpers\FormatTime::convert($this->di->cfg->time);
             $user_info->save();
             if (is_object($user_info) and isset($user_info->id)) {
                 // Отправим сообщение на почту
                 $this->di->mail->send($user_email, $user_name . ', добро пожаловать в "' . $this->di->auth->config->site_name . '"', 'USER_REGISTER', ['[[SITE_NAME]]' => $this->di->auth->config->site_name, '[[SITE_URL]]' => $this->di->auth->config->site_url, '[[USER_EMAIL]]' => $user_email, '[[USER_PASSWORD]]' => $password]);
                 // Войдем под этим пользователем
                 $login = new ActionLogin($this->di);
                 $result = $login->run($user_email, $password);
             } else {
                 \ORM::for_table('users')->where_equal('id', $user_id)->delete();
                 $result['message'] = 'Произошла ошибка при добавлении пользователя. Попробуйте ещё раз.';
             }
         } else {
             \ORM::for_table('users')->where_equal('email', $user_email)->delete();
             $result['message'] = 'Пользователь не зарегистрирован. Попробуйте ещё раз.';
         }
     } else {
         $result['message'] = $registerResult['message'];
     }
     return $result;
 }
Ejemplo n.º 2
0
 /**
  * Выполним действие
  *
  * @param string $user_email Адрес электронной почты
  * @param string $user_pass  Пароль пользователя
  *
  * @return array
  *
  * @version 27.07.2016
  * @author Дмитрий Щербаков <*****@*****.**>
  */
 public function run($user_email, $user_pass)
 {
     $result = ['error' => true, 'message' => 'Неизвестная ошибка.'];
     $loginResult = $this->di->auth->login($user_email, $user_pass, false);
     if ($loginResult['error'] === false) {
         $user_id = $this->di->auth->getUID($user_email);
         if ($user_id !== false) {
             $user_info = \ORM::for_table('users_info')->where_equal('uid', $user_id)->find_one();
             if (is_object($user_info)) {
                 $user_info->last_login = Helpers\FormatTime::convert($this->di->cfg->time);
                 $user_info->save();
                 setcookie($this->di->auth->config->cookie_name, $loginResult['hash'], $loginResult['expire'], $this->di->auth->config->cookie_path, $this->di->auth->config->cookie_domain, $this->di->auth->config->cookie_secure, $this->di->auth->config->cookie_http);
                 return ['error' => false, 'message' => 'Добро пожаловать!'];
             } else {
                 $result['message'] = 'Произошла ошибка при изменении данных. Попробуйте войти ещё раз.';
             }
         } else {
             $result['message'] = 'Данные пользователя не найдены. Попробуйте войти ещё раз.';
         }
     } else {
         $result['message'] = $loginResult['message'];
     }
     return $result;
 }