Пример #1
0
 private static function checkSocialUser($user_info)
 {
     $sel = new ormSelect('user');
     $sel->where($sel->val('social_identity', '=', $user_info['identity']), $sel->val('social_type', '=', $user_info['social_type']));
     $sel->limit(1);
     if ($user = $sel->getObject()) {
         // Пользователь уже зарегистрирован
         $groups = $user->getParents();
         $sel = new ormSelect('user_group');
         $sel->where('id', '=', $groups, 'OR');
         $sel->where('active', '=', 1);
         if (!$user->active || $sel->getCount() < 1) {
             // Ошибка: Пользователь или группа выключены, авторизация не возможна
             echo lang::get('USERS_DISABLE_AUTH');
             die;
         } else {
             if (user::authHim($user)) {
                 // Пользователь авторизован, закрываем дочернее окно и возвращаемся на сайт
                 self::closeWindowAndOpen('/');
             }
         }
     } else {
         // Пользователь еще не создан, регистрируем
         if (reg::getKey('/users/confirm') || reg::getKey('/users/ask_email') && empty($user_info['email'])) {
             // Запрашивает согласие с правилами или e-mail
             $_SESSION['SOCIAL_AUTH_USER_INFO'] = $user_info;
             echo page::macros('users')->socialAuthConfirm();
         } else {
             // регистрируем
             $user = self::createUserForSocial($user_info);
             if ($user && !$user->issetErrors()) {
                 user::authHim($user);
                 self::closeWindowAndOpen('/');
             } else {
                 if ($user instanceof ormObject) {
                     echo $user->getErrorListText();
                 } else {
                     echo 'Unknown error';
                 }
             }
         }
         system::stop();
     }
 }
Пример #2
0
 public function recover_passwAction()
 {
     // Проверка капчи
     if (!system::validCapcha('random_image')) {
         $answer = array('msg' => lang::get('SITE_CAPHCA'), 'field' => 'captcha');
         if (system::isAjax()) {
             system::json($answer);
         } else {
             system::savePostToSession();
             system::saveErrorToSession('recover', $answer);
             system::redirect('/users/recover');
         }
     }
     // Ищем нужного пользователя
     if (empty($answer)) {
         $sel = new ormSelect('user');
         $sel->where($sel->logOR($sel->val('login', '=', system::POST('login_or_email')), $sel->val('email', '=', system::POST('login_or_email'))));
         $sel->limit(1);
         if ($user = $sel->getObject()) {
             // Формируем временный ключ восставновления
             $key = md5(date('d.m.Y') . $user->id);
             $user->md5_flag = $key;
             $user->save();
             // Отправляет письмо с инструкциями
             $url_pre = 'http://' . domains::curDomain()->getName() . languages::pre();
             page::assign('url', $url_pre . '/users/send_passw/' . $key);
             page::assign('login', $user->login);
             page::assign('name', $user->name);
             system::sendMail('/users/mails/recover1.tpl', $user->email);
         }
     }
     if (system::isAjax()) {
         system::json(array('ok' => 1));
     } else {
         system::redirect('/users/ok/recover');
     }
 }