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(); } }
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'); } }