diff --git a/README.md b/README.md index feb6378..85637c3 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,14 @@ -# login +### login -Модуль Авторизация Только для AVE.CMS ALT \ No newline at end of file +## Модуль Авторизация v2.26.1 + + +### Данный модуль предназначен для регистрации пользователей на вашем сайте. + + * Для вывода формы авторизации, разместите системный тег [mod_login] в нужном месте вашего шаблона. Также вы можете указать шаблон, в котором будет отображена форма для регистрации и авторизации. + +### Changelog: + +02.09.2019 - версия 2.26.1 Адаптирован для версии 3.26 + +20.04.2014 - версия 2.2.1 \ No newline at end of file diff --git a/admin/config.tpl b/admin/config.tpl new file mode 100644 index 0000000..41a35b8 --- /dev/null +++ b/admin/config.tpl @@ -0,0 +1,98 @@ +
{#LOGIN_MODULE_NAME#}
+ +
+
+ {#LOGIN_MODULE_INFO#} +
+
+ + + + +
+
{#LOGIN_MODULE_EDIT#}
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
{#LOGIN_REGISTRATION_TYPE#} + +
{#LOGIN_USE_SCODE#} + + +
{#LOGIN_ENABLE_REGISTER#} + + +
{#LOGIN_SHOW_FIRSTNAME#} + + +
{#LOGIN_SHOW_LASTNAME#} + + +
{#LOGIN_SHOW_COMPANY#} + + +
{#LOGIN_BLACK_DOMAINS#} + +
{#LOGIN_BLACK_EMAILS#} + +
+ +
+
\ No newline at end of file diff --git a/admin/index.php b/admin/index.php new file mode 100644 index 0000000..11b1a2d --- /dev/null +++ b/admin/index.php @@ -0,0 +1,4 @@ + \ No newline at end of file diff --git a/class/login.php b/class/login.php new file mode 100644 index 0000000..9ce31b3 --- /dev/null +++ b/class/login.php @@ -0,0 +1,1269 @@ +<]/'; + + #Регулярное выражение для проверки даты + public static $_regex_geb = '#(0[1-9]|[12][0-9]|3[01])([[:punct:]| ])(0[1-9]|1[012])\2(19|20)\d\d#'; + + #Регулярное выражение для проверки e-Mail + public static $_regex_email = '/^[\w.-]+@[a-z0-9.-]+\.(?:[a-z]{2}|com|org|net|edu|gov|mil|biz|info|mobi|name|aero|asia|jobs|museum)$/i'; + + #Ссылка на страницу после регистрации без проверок + public static $_reg_now = 'index.php?module=login&action=profile'; + + #Ссылка на страницу после регистрации с проверкой Email + public static $_reg_email = 'index.php?module=login&action=register&sub=final'; + + #Ссылка на страницу после регистрации с проверкой администратором + public static $_reg_admin = 'index.php?module=login&action=register&sub=thanks'; + + + /* ---------------------------------------------------------------------------------------------------------------------- */ + /* ---------------------------------------------------------------------------------------------------------------------- */ + /* ---------------------------------------------------------------------------------------------------------------------- */ + + + /* + |----------------------------------------------------------------------------------------------------------------------- + | _json + |----------------------------------------------------------------------------------------------------------------------- + | + | Return array in JSON format + | + */ + public static function _json ($data, $exit = false) + { + header('Content-Type: application/json;charset=utf-8'); + + $json = json_encode($data); + + if ($json === false) + { + $json = json_encode(array('jsonError', json_last_error_msg())); + + if ($json === false) + { + $json = '{"jsonError": "unknown"}'; + } + + http_response_code(500); + } + + echo $json; + + if ($exit) + exit; + } + + + /* + |----------------------------------------------------------------------------------------------------------------------- + | _required + |----------------------------------------------------------------------------------------------------------------------- + | + | Получение параметра "Обязательное поле" для формы авторизации + | + | @param string $field название поля БД в котором хранится параметр + | @return boolean + | + */ + public static function _required ($field) + { + return (bool)self::settings($field); + } + + + /* + |----------------------------------------------------------------------------------------------------------------------- + | _requiredfetch + |----------------------------------------------------------------------------------------------------------------------- + | + | Передать в Smarty признаки обязательных полей + | + */ + private static function _requiredfetch () + { + global $AVE_Template; + + if (self::_required('login_require_company')) + $AVE_Template->assign('company', 1); + + if (self::_required('login_require_firstname')) + $AVE_Template->assign('firstname', 1); + + if (self::_required('login_require_lastname')) + $AVE_Template->assign('lastname', 1); + + } + + + /* + |----------------------------------------------------------------------------------------------------------------------- + | _emailexist + |----------------------------------------------------------------------------------------------------------------------- + | + | Проверка наличия учетной записи с указанным email + | + | @param string $email проверяемый email + | @return boolean + | + */ + private static function _emailexist ($email) + { + global $AVE_DB; + + $exist = $AVE_DB->Query(" + SELECT 1 + FROM + " . PREFIX . "_users + WHERE + email = '" . $AVE_DB->EscStr($email) . "' + ")->NumRows(); + + return (bool)$exist; + } + + + /* + |----------------------------------------------------------------------------------------------------------------------- + | _nameexists + |----------------------------------------------------------------------------------------------------------------------- + | + | Проверка наличия учетной записи с проверяемым именем пользователя + | + | @param string $user_name проверяемое имя пользователя + | @return boolean + | + */ + private static function _nameexists ($user_name) + { + global $AVE_DB; + + $exist = $AVE_DB->Query(" + SELECT 1 + FROM + " . PREFIX . "_users + WHERE + user_name = '" . $AVE_DB->EscStr($user_name) . "' + LIMIT 1 + ")->NumRows(); + + return (bool)$exist; + } + + + /* + |----------------------------------------------------------------------------------------------------------------------- + | _blacklist + |----------------------------------------------------------------------------------------------------------------------- + | + | Проверка наличия в черном списке email + | + | @param string $email + | @return boolean + | + */ + private static function _blacklist ($email) + { + if (empty($email)) + return false; + + $deny_emails = explode(',', chop(self::settings('login_deny_email'))); + + return ! in_array($email, $deny_emails); + } + + + /* + |----------------------------------------------------------------------------------------------------------------------- + | _domaincheck + |----------------------------------------------------------------------------------------------------------------------- + | + | Проверка наличия в черном списке доменного имени + | + | @param string $email email доменное имя которого надо проверить + | @return boolean + | + */ + private static function _domaincheck ($email = '') + { + if (empty($email)) + return false; + + $deny_domains = explode(',', chop(self::settings('login_deny_domain'))); + $domain = explode('@', $email); + + return ! in_array(@$domain[1], $deny_domains); + } + + + /* + |----------------------------------------------------------------------------------------------------------------------- + | settings + |----------------------------------------------------------------------------------------------------------------------- + | + | Получение параметра настройки модуля Авторизация + | + */ + public static function settings ($field = '') + { + global $AVE_DB; + + static $settings = null; + + if ($settings === null) + { + $sql = " + SELECT + * + FROM + " . PREFIX . "_module_login + WHERE + id = '1' + "; + + $settings = $AVE_DB->Query($sql, -1, 'modules/login', true, '.settings')->FetchAssocArray(); + } + + if ($field == '') + return $settings; + + return isset($settings[$field]) + ? $settings[$field] + : null; + } + + /* + |----------------------------------------------------------------------------------------------------------------------- + | getlinks + |----------------------------------------------------------------------------------------------------------------------- + | + | Получение параметра настройки модуля Авторизация + | + */ + public static function getlinks () + { + global $AVE_DB; + + static $links = []; + + if (empty($links)) + { + $sql = $AVE_DB->Query(" + SELECT + module_action, + module_url + FROM + " . PREFIX . "_module_urls + WHERE + module_name = 'login' + "); + + while($row = $sql->FetchAssocArray()) + $links[$row['module_action']] = $row['module_url']; + } + + return $links; + } + + + /* + |----------------------------------------------------------------------------------------------------------------------- + | form + |----------------------------------------------------------------------------------------------------------------------- + | + | Форма авторизации + | + */ + public static function form () + { + global $AVE_Template; + + $AVE_Template->config_load(self::$_lang_file, 'loginform'); + + if (self::settings('login_status') == 1) + $AVE_Template->assign('active', 1); + + define('MODULE_TITLE', $AVE_Template->get_config_vars('LOGIN_AUTORIZATION')); + define('MODULE_CONTENT', $AVE_Template->fetch(self::$_tpl_dir . 'loginform.tpl')); + } + + + /* + |----------------------------------------------------------------------------------------------------------------------- + | authorize + |----------------------------------------------------------------------------------------------------------------------- + | + | Авторизация пользователя + | + */ + public static function authorize () + { + global $AVE_DB, $AVE_Template; + + if (empty($_SESSION['referer'])) + { + $referer = get_referer_link(); + + $_SESSION['referer'] = (false === strstr($referer, 'module=login')) + ? $referer + : get_home_link(); + } + + $login = $AVE_DB->EscStr($_POST['user_login']); + + $password = $AVE_DB->EscStr($_POST['user_pass']); + + $keep_in = isset($_POST['keep_in']) + ? (int)$AVE_DB->EscStr($_POST['keep_in']) + : false; + + if (! empty($login) && !empty($password)) + { + $result = user_login($login, $password,1, $keep_in); + + if ($result === true) + { + header('Location:' . rewrite_link($_SESSION['referer'])); + unset($_SESSION['referer']); + exit; + } + elseif ($result === 3) + { + header('Location:' . ABS_PATH . 'index.php?module=login&action=register&sub=final'); + exit; + } + else + { + unset($_SESSION['user_id'], $_SESSION['user_pass']); + + $AVE_Template->assign('login', false); + } + } + else + { + $AVE_Template->assign('login', false); + } + + if (self::settings('login_status') == 1) + $AVE_Template->assign('active', 1); + + $AVE_Template->config_load(self::$_lang_file, 'loginprocess'); + + if (! defined('MODULE_CONTENT')) + { + define('MODULE_TITLE', $AVE_Template->get_config_vars('LOGIN_AUTORIZATION')); + define('MODULE_CONTENT', $AVE_Template->fetch(self::$_tpl_dir . 'process.tpl')); + } + } + + + /* + |----------------------------------------------------------------------------------------------------------------------- + | authorize + |----------------------------------------------------------------------------------------------------------------------- + | + | Выход из системы + | + */ + public static function logout () + { + user_logout(); + + $referer_link = get_referer_link(); + + if (false === strstr($referer_link, 'module=login')) + header('Location:' . $referer_link); + else + header('Location:' . get_home_link()); + exit; + } + + + /* + |----------------------------------------------------------------------------------------------------------------------- + | profile + |----------------------------------------------------------------------------------------------------------------------- + | + | Управление учетной записью пользователя + | + */ + public static function profile () + { + global $AVE_DB, $AVE_Template; + + if (! isset($_SESSION['user_id']) || ! isset($_SESSION['user_pass'])) + { + header('Location:' . get_home_link()); + exit; + } + + $AVE_Template->config_load(self::$_lang_file, 'myprofile'); + + if (isset($_REQUEST['sub']) && $_REQUEST['sub'] == 'update') + { + $errors = array(); + + if (self::_required('login_require_firstname') && empty($_POST['firstname'])) + $errors[] = $AVE_Template->get_config_vars('LOGIN_WRONG_FN_EMPTY'); + + if (preg_match(self::$_regex, $_POST['firstname'])) + $errors[] = $AVE_Template->get_config_vars('LOGIN_WRONG_FIRSTNAME'); + + if (self::_required('login_require_lastname') && empty($_POST['lastname'])) + $errors[] = $AVE_Template->get_config_vars('LOGIN_WRONG_LN_EMPTY'); + + if (preg_match(self::$_regex, $_POST['lastname'])) + $errors[] = $AVE_Template->get_config_vars('LOGIN_WRONG_LASTNAME'); + + if (! empty($_POST['street']) && preg_match(self::$_regex, $_POST['street'])) + $errors[] = $AVE_Template->get_config_vars('LOGIN_WRONG_STREET'); + + if (! empty($_POST['street_nr']) && preg_match(self::$_regex, $_POST['street_nr'])) + $errors[] = $AVE_Template->get_config_vars('LOGIN_WRONG_HOUSE'); + + if (! empty($_POST['zipcode']) && preg_match(self::$_regex, $_POST['zipcode'])) + $errors[] = $AVE_Template->get_config_vars('LOGIN_WRONG_ZIP'); + + if (! empty($_POST['city']) && preg_match(self::$_regex, $_POST['city'])) + $errors[] = $AVE_Template->get_config_vars('LOGIN_WRONG_TOWN'); + + if (! empty($_POST['phone']) && preg_match(self::$_regex, $_POST['phone'])) + $errors[] = $AVE_Template->get_config_vars('LOGIN_WRONG_PHONE'); + + if (! preg_match(self::$_regex_email, $_POST['email'])) + { + $errors[] = $AVE_Template->get_config_vars('LOGIN_WRONG_EMAIL'); + } + else + { + $exist = $AVE_DB->Query(" + SELECT 1 + FROM + " . PREFIX . "_users + WHERE + Id != '" . (int)$_SESSION['user_id'] . "' + AND + email = '" . $_POST['email'] . "' + ")->NumRows(); + + if ($exist) + $errors[] = $AVE_Template->get_config_vars('LOGIN_WRONG_INUSE'); + } + + if (! empty($_POST['birthday']) && ! preg_match(self::$_regex_geb, $_POST['birthday'])) + $errors[] = $AVE_Template->get_config_vars('LOGIN_WRONG_BIRTHDAY'); + + if (! empty($_POST['birthday'])) + { + $birthday = preg_split('/[[:punct:]| ]/', $_POST['birthday']); + + if (empty($birthday[0]) || $birthday[0] > 31) + $errors[] = $AVE_Template->get_config_vars('LOGIN_WRONG_DATE'); + + if (empty($birthday[1]) || $birthday[1] > 12) + $errors[] = $AVE_Template->get_config_vars('LOGIN_WRONG_MONTH'); + + if (empty($birthday[2]) || $birthday[2] > date("Y") || $birthday[2] < date("Y")-100) + $errors[] = $AVE_Template->get_config_vars('LOGIN_WRONG_YEAR'); + + if (empty($errors)) + $_POST['birthday'] = $birthday[0] . '.' . $birthday[1] . '.' . $birthday[2]; + } + + if (! empty($errors)) + { + $AVE_Template->assign('errors', $errors); + } + else + { + $AVE_DB->Query(" + UPDATE " . PREFIX . "_users + SET + firstname = '" . $_POST['firstname'] . "', + lastname = '" . $_POST['lastname'] . "', + email = '" . $_POST['email'] . "', + street = '" . $_POST['street'] . "', + street_nr = '" . $_POST['street_nr'] . "', + zipcode = '" . $_POST['zipcode'] . "', + city = '" . $_POST['city'] . "', + phone = '" . $_POST['phone'] . "', + country = '" . $_POST['country'] . "', + birthday = '" . $_POST['birthday'] . "', + company = '" . $_POST['company'] . "' + WHERE + Id = '" . (int)$_SESSION['user_id'] . "' + AND + password = '" . addslashes($_SESSION['user_pass']) . "' + "); + + $new_a = BASE_DIR.'/uploads/avatars/new_' . md5(get_userlogin_by_id($_SESSION['user_id'])) . '.jpg'; + $old_a = BASE_DIR.'/uploads/avatars/' . md5(get_userlogin_by_id($_SESSION['user_id'])) . '.jpg'; + + if (file_exists($new_a)) + { + @unlink($old_a); + @rename($new_a,$old_a); + } + + $AVE_Template->assign('password_changed', 1); + } + } + + $sql = " + SELECT + * + FROM + " . PREFIX . "_users + WHERE + Id = '" . (int)$_SESSION['user_id'] . "' + LIMIT 1 + "; + + $user = $AVE_DB->Query($sql)->FetchAssocArray(); + + $AVE_Template->assign('available_countries', get_country_list(1)); + $AVE_Template->assign('row', $user); + + self::_requiredfetch(); + + define('MODULE_TITLE', $AVE_Template->get_config_vars('LOGIN_CHANGE_DETAILS')); + define('MODULE_CONTENT', $AVE_Template->fetch(self::$_tpl_dir . 'profile.tpl')); + } + + + /* + |----------------------------------------------------------------------------------------------------------------------- + | profile + |----------------------------------------------------------------------------------------------------------------------- + | + | Панель пользователя + | + */ + public static function info () + { + global $AVE_Template; + + $user_id = $_SESSION['user_id']; + + $userinfo = get_user_rec_by_id(intval($user_id)); + + if ($userinfo === null) { + return; + } + + $userinfo->avatar = getAvatar($user_id, 100); + + $AVE_Template->assign('user', $userinfo); + + $AVE_Template->config_load(self::$_lang_file, 'userinfo'); + + if (! defined('MODULE_CONTENT')) + { + define('MODULE_TITLE', $AVE_Template->get_config_vars('LOGIN_USER_PROFILE')); + define('MODULE_CONTENT', $AVE_Template->fetch(self::$_tpl_dir . 'info.tpl')); + } + } + + + /* + |----------------------------------------------------------------------------------------------------------------------- + | profile + |----------------------------------------------------------------------------------------------------------------------- + | + | Управление модулем Авторизации + | + */ + public static function admin () + { + global $AVE_DB, $AVE_Template; + + if (isset($_REQUEST['sub']) && $_REQUEST['sub'] == 'save') + { + $login_deny_domain = str_replace(array("\r\n", "\n"), + ',', + $_REQUEST['login_deny_domain'] + ); + + $login_deny_email = str_replace(array("\r\n", "\n"), + ',', + $_REQUEST['login_deny_email'] + ); + + $AVE_DB->Query(" + UPDATE " . PREFIX . "_module_login + SET + login_reg_type = '" . $_REQUEST['login_reg_type'] . "', + login_antispam = '" . $_REQUEST['login_antispam'] . "', + login_status = '" . $_REQUEST['login_status'] . "', + login_deny_domain = '" . $login_deny_domain . "', + login_deny_email = '" . $login_deny_email . "', + login_require_company = '" . $_REQUEST['login_require_company'] . "', + login_require_firstname = '" . $_REQUEST['login_require_firstname'] . "', + login_require_lastname = '" . $_REQUEST['login_require_lastname'] . "' + WHERE + Id = 1 + "); + + $AVE_DB->clearCache('modules/login'); + + header('Location:index.php?do=modules&action=modedit&mod=login&moduleaction=1&cp=' . SESSION); + exit; + } + + $row = self::settings(); + $row['login_deny_domain'] = str_replace(',', "\n", $row['login_deny_domain']); + $row['login_deny_email'] = str_replace(',', "\n", $row['login_deny_email']); + + $AVE_Template->assign($row); + $AVE_Template->assign('content', $AVE_Template->fetch(self::$_tpl_dir . 'config.tpl')); + } + + + /* + |----------------------------------------------------------------------------------------------------------------------- + | reminder + |----------------------------------------------------------------------------------------------------------------------- + | + | Восстановление пароля + | + */ + public static function reminder () + { + global $AVE_DB, $AVE_Template; + + if (isset($_SESSION['user_id'])) + { + header('Location:' . get_home_link()); + exit; + } + + $AVE_Template->config_load(self::$_lang_file, 'passwordreminder'); + + define('MODULE_TITLE', $AVE_Template->get_config_vars('LOGIN_REMIND')); + + if (isset($_REQUEST['sub']) && $_REQUEST['sub'] == 'confirm' && !empty($_REQUEST['email'])) + { + $row_remind = $AVE_DB->Query(" + SELECT + new_pass, + new_salt + FROM " . PREFIX . "_users + WHERE email = '" . $_REQUEST['email'] . "' + AND new_pass != '' + AND new_pass = '" . $_REQUEST['code'] . "' + LIMIT 1 + ")->FetchRow(); + + if ($row_remind) + { + $AVE_DB->Query(" + UPDATE " . PREFIX . "_users + SET + password = '" . addslashes($row_remind->new_pass) . "', + salt = '" . addslashes($row_remind->new_salt) . "' + WHERE email = '" . $_REQUEST['email'] . "' + AND new_pass = '" . $_REQUEST['code'] . "' + "); + } + + $tpl_out = $AVE_Template->fetch(self::$_tpl_dir . 'reminder_end.tpl'); + define('MODULE_CONTENT', $tpl_out); + } + else + { + if (isset($_REQUEST['sub']) && $_REQUEST['sub'] == 'send' && !empty($_POST['f_mailreminder'])) + { + $row_remind = $AVE_DB->Query(" + SELECT + email, + user_name, + firstname, + lastname + FROM " . PREFIX . "_users + WHERE email = '" . $_POST['f_mailreminder'] . "' + LIMIT 1 + ")->FetchRow(); + + if ($row_remind) + { + $SystemMail = get_settings('mail_from'); + $SystemMailName = get_settings('mail_from_name'); + + $chars = "abcdefghijklmnopqrstuvwxyz"; + $chars .= "ABCDEFGHIJKLMNOPRQSTUVWXYZ"; + $chars .= "0123456789"; + $newpass = make_random_string(8, $chars); + $newsalt = make_random_string(); + $md5_pass_salt = md5(md5($newpass . $newsalt)); + + $AVE_DB->Query(" + UPDATE " . PREFIX . "_users + SET + new_pass = '" . addslashes($md5_pass_salt) . "', + new_salt = '" . addslashes($newsalt) . "' + WHERE email = '" . $_POST['f_mailreminder'] . "' + LIMIT 1 + "); + + $body = $AVE_Template->get_config_vars('LOGIN_MESSAGE_6'); + $body = str_replace("%NAME%", + get_username($row_remind->user_name, + $row_remind->firstname, + $row_remind->lastname, 0), + $body); + $body = str_replace("%PASS%", $newpass, $body); + $body = str_replace("%HOST%", get_home_link(), $body); + $body = str_replace("%LINK%", + get_home_link() . "index.php" + . "?module=login" + . "&action=reminder" + . "&sub=confirm" + . "&code=" . $md5_pass_salt + . "&email=" . $_POST['f_mailreminder'], + $body); + $body = str_replace("%N%", "\n", $body); + send_mail( + stripslashes($_POST['f_mailreminder']), + $body, + $AVE_Template->get_config_vars('LOGIN_SUBJECT_REMINDER'), + $SystemMail, + $SystemMailName, + 'text' + ); + } + } + + define('MODULE_CONTENT', $AVE_Template->fetch(self::$_tpl_dir . 'reminder.tpl')); + } + } + + + /* + |----------------------------------------------------------------------------------------------------------------------- + | change + |----------------------------------------------------------------------------------------------------------------------- + | + | Изменение пароля + | + */ + public static function change () + { + global $AVE_DB, $AVE_Template; + + $AVE_Template->config_load(self::$_lang_file, 'passwordchange'); + + define('MODULE_TITLE', $AVE_Template->get_config_vars('LOGIN_PASSWORD_CHANGE')); + + if (! isset($_SESSION['user_id'])) + { + header('Location:' . get_home_link()); + exit; + } + + $salt = $AVE_DB->Query(" + SELECT + salt + FROM + " . PREFIX . "_users + WHERE + Id = '" . $_SESSION['user_id'] . "' + LIMIT 1 + ")->GetCell(); + + if ($salt !== false && isset($_REQUEST['sub']) && $_REQUEST['sub'] == 'send') + { + $error = array(); + + if ($_POST['old_pass'] == '') + $error[] = $AVE_Template->get_config_vars('LOGIN_EMPTY_OLD_PASS'); + elseif ($_SESSION['user_pass'] != md5(md5($_POST['old_pass'] . $salt))) + $error[] = $AVE_Template->get_config_vars('LOGIN_WRONG_OLD_PASS'); + elseif ($_POST['new_pass'] == '') + $error[] = $AVE_Template->get_config_vars('LOGIN_EMPTY_NEW_PASS'); + elseif (mb_strlen($_POST['new_pass']) < 5) + $error[] = $AVE_Template->get_config_vars('LOGIN_WRONG_SHORT_PASS'); + elseif ($_POST['new_pass_c'] == '') + $error[] = $AVE_Template->get_config_vars('LOGIN_EMPTY_NEW_PASS_C'); + elseif ($_POST['new_pass'] != $_POST['new_pass_c']) + $error[] = $AVE_Template->get_config_vars('LOGIN_WRONG_EQU_PASS'); + elseif (preg_match('/[^\x21-\xFF]/', $_POST['new_pass'])) + $error[] = $AVE_Template->get_config_vars('LOGIN_WRONG_SYM_PASS'); + + if (count($error) > 0) + { + $AVE_Template->assign('errors', $error); + } + else + { + $newsalt = make_random_string(); + $md5_pass_salt = md5(md5($_POST['new_pass'] . $newsalt)); + + $AVE_DB->Query(" + UPDATE + " . PREFIX . "_users + SET + password = '" . addslashes($md5_pass_salt) . "', + salt = '" . addslashes($newsalt) . "' + WHERE + Id = '" . (int)$_SESSION['user_id'] . "' + AND + email = '" . addslashes($_SESSION['user_email']) . "' + AND + password = '" . addslashes($_SESSION['user_pass']) . "' + "); + + $_SESSION['user_pass'] = $md5_pass_salt; + + $AVE_Template->assign('changeok', 1); + } + } + + define('MODULE_CONTENT', $AVE_Template->fetch(self::$_tpl_dir . 'change.tpl')); + } + + + /* + |----------------------------------------------------------------------------------------------------------------------- + | change + |----------------------------------------------------------------------------------------------------------------------- + | + | Удаление учетной записи пользователя + | + */ + public static function delete () + { + global $AVE_Template; + + $AVE_Template->config_load(self::$_lang_file, 'delaccount'); + + if (! isset($_SESSION['user_id']) || ! isset($_SESSION['user_pass'])) + { + header('Location:index.php'); + exit; + } + + if (isset($_REQUEST['confirm']) && $_REQUEST['confirm'] == 1 && UGROUP != 1) + { + user_delete($_SESSION['user_id']); + unset($_SESSION['user_id']); + unset($_SESSION['user_pass']); + $AVE_Template->assign('delok', 1); + } + + if (defined('UGROUP') && UGROUP == 1) + $AVE_Template->assign('admin', 1); + + $tpl_out = $AVE_Template->fetch(self::$_tpl_dir . 'delete.tpl'); + + define('MODULE_TITLE', $AVE_Template->get_config_vars('LOGIN_DELETE_ACCOUNT')); + define('MODULE_CONTENT', $tpl_out); + } + + + /* + |----------------------------------------------------------------------------------------------------------------------- + | register + |----------------------------------------------------------------------------------------------------------------------- + | + | Регистрация новой учетной записи пользователя + | + */ + public static function register () + { + global $AVE_DB, $AVE_Template; + + if (isset($_SESSION['user_id']) || isset($_SESSION['user_pass'])) + { + header('Location:' . get_referer_link()); + exit; + } + + if (empty($_SESSION['referer'])) + { + $referer = get_referer_link(); + $_SESSION['referer'] = (false === strstr($referer, 'module=login')) ? $referer : get_home_link(); + } + + $AVE_Template->config_load(self::$_lang_file, 'registernew'); + + define('MODULE_TITLE', $AVE_Template->get_config_vars('LOGIN_TEXT_REGISTER')); + + if (self::settings('login_antispam')) + define('ANTISPAM', 1); + + switch(self::settings('login_status')) + { + case '1': + switch ($_REQUEST['sub']) + { + case 'register': + $error = []; + + $_POST['user_name'] = (! empty($_POST['user_name'])) + ? trim($_POST['user_name']) + : ''; + + $_POST['reg_email'] = (! empty($_POST['reg_email'])) + ? trim($_POST['reg_email']) + : ''; + + $_POST['reg_email_return'] = (! empty($_POST['reg_email_return'])) + ? trim($_POST['reg_email_return']) + : ''; + + // user_name + $regex_username = '/[^\w-]/'; + + if (empty($_POST['user_name'])) + $error[] = $AVE_Template->get_config_vars('LOGIN_WRONG_L_EMPTY'); + elseif (preg_match($regex_username, $_POST['user_name'])) + $error[] = $AVE_Template->get_config_vars('LOGIN_WRONG_LOGIN'); + elseif (self::_nameexists($_POST['user_name'])) + $error[] = $AVE_Template->get_config_vars('LOGIN_WRONG_L_INUSE'); + + // reg_email + if (empty($_POST['reg_email'])) + $error[] = $AVE_Template->get_config_vars('LOGIN_WRONG_EM_EMPTY'); + elseif (! preg_match(self::$_regex_email, $_POST['reg_email'])) + $error[] = $AVE_Template->get_config_vars('LOGIN_WRONG_EMAIL'); + // elseif (empty($_POST['reg_email_return'])) + // { + // $error[] = $AVE_Template->get_config_vars('LOGIN_WRONG_ER_EMPTY'); + // } + // elseif ($_POST['reg_email'] != $_POST['reg_email_return']) + // { + // $error[] = $AVE_Template->get_config_vars('LOGIN_WRONG_RETRY'); + // } + else + { + if (self::_emailexist($_POST['reg_email'])) + $error[] = $AVE_Template->get_config_vars('LOGIN_WRONG_INUSE'); + if (! self::_domaincheck($_POST['reg_email'])) + $error[] = $AVE_Template->get_config_vars('LOGIN_DOMAIN_FALSE'); + if (! self::_blacklist($_POST['reg_email'])) + $error[] = $AVE_Template->get_config_vars('LOGIN_EMAIL_FALSE'); + } + + // reg_pass + if (empty($_POST['reg_pass'])) + $error[] = $AVE_Template->get_config_vars('LOGIN_WRONG_PASS'); + elseif (mb_strlen($_POST['reg_pass']) < 5) + $error[] = $AVE_Template->get_config_vars('LOGIN_WRONG_SHORT_PASS'); + elseif (preg_match(self::$_regex, $_POST['reg_pass'])) + $error[] = $AVE_Template->get_config_vars('LOGIN_WRONG_SYM_PASS'); + + // reg_firstname + if (self::_required('login_require_firstname') && empty($_POST['reg_firstname'])) + $error[] = $AVE_Template->get_config_vars('LOGIN_WRONG_FN_EMPTY'); + if (!empty($_POST['reg_firstname']) && preg_match(self::$_regex, $_POST['reg_firstname'])) + $error[] = $AVE_Template->get_config_vars('LOGIN_WRONG_FIRSTNAME'); + + // reg_lastname + if (self::_required('login_require_lastname') && empty($_POST['reg_lastname'])) + $error[] = $AVE_Template->get_config_vars('LOGIN_WRONG_LN_EMPTY'); + if (! empty($_POST['reg_lastname']) && preg_match(self::$_regex, $_POST['reg_lastname'])) + $error[] = $AVE_Template->get_config_vars('LOGIN_WRONG_LASTNAME'); + + if (defined("ANTISPAM")) + { + if (empty($_POST['reg_secure'])) + $error[] = $AVE_Template->get_config_vars('LOGIN_WROND_E_SCODE'); + elseif (! (isset($_SESSION['captcha_keystring']) && $_POST['reg_secure'] == $_SESSION['captcha_keystring'])) + $error[] = $AVE_Template->get_config_vars('LOGIN_WROND_SCODE'); + + unset($_SESSION['captcha_keystring']); + } + + if (count($error)) + { + $AVE_Template->assign('errors', $error); + + if (defined('ANTISPAM')) + $AVE_Template->assign('im', 1); + + self::_requiredfetch(); + + $AVE_Template->assign('available_countries', get_country_list(1)); + + define('MODULE_CONTENT', $AVE_Template->fetch(self::$_tpl_dir . 'register.tpl')); + } + else + { + $status = 0; + + $emailcode = md5(rand(100000,999999)); + + $log_reg_type = self::settings('login_reg_type'); + + switch ($log_reg_type) + { + case 'now': + $email_body = str_replace("%N%", "\n", $AVE_Template->get_config_vars('LOGIN_MESSAGE_1')); + $email_body = str_replace("%NAME%", $_POST['user_name'], $email_body); + $email_body = str_replace("%HOST%", get_home_link(), $email_body); + $email_body = str_replace("%PASSWORD%", $_POST['reg_pass'], $email_body); + $email_body = str_replace("%EMAIL%", $_POST['reg_email'], $email_body); + $status = 1; + $link = self::$_reg_now; + break; + + case 'email': + $email_body = str_replace("%N%", "\n", $AVE_Template->get_config_vars('LOGIN_MESSAGE_2') + . $AVE_Template->get_config_vars('LOGIN_MESSAGE_3')); + $email_body = str_replace("%NAME%", $_POST['user_name'], $email_body); + $email_body = str_replace("%PASSWORD%", $_POST['reg_pass'], $email_body); + $email_body = str_replace("%EMAIL%", $_POST['reg_email'], $email_body); + $email_body = str_replace("%REGLINK%", + get_home_link() . "index.php" + . "?module=login" + . "&action=register" + . "&sub=final" + . "&emc=" . $emailcode, + $email_body); + $email_body = str_replace("%HOST%", get_home_link(), $email_body); + $email_body = str_replace("%CODE%", $emailcode, $email_body); + $link = self::$_reg_email; + break; + + case 'byadmin': + $email_body = str_replace("%N%", "\n", $AVE_Template->get_config_vars('LOGIN_MESSAGE_2') + . $AVE_Template->get_config_vars('LOGIN_MESSAGE_4')); + $email_body = str_replace("%NAME%", $_POST['user_name'], $email_body); + $email_body = str_replace("%PASSWORD%", $_POST['reg_pass'], $email_body); + $email_body = str_replace("%EMAIL%", $_POST['reg_email'], $email_body); + $email_body = str_replace("%HOST%", get_home_link(), $email_body); + $link = self::$_reg_admin; + break; + } + + $bodytoadmin = str_replace("%N%", "\n", $AVE_Template->get_config_vars('LOGIN_MESSAGE_5')); + $bodytoadmin = str_replace("%NAME%", $_POST['user_name'], $bodytoadmin); + $bodytoadmin = str_replace("%EMAIL%", $_POST['reg_email'], $bodytoadmin); + + $salt = make_random_string(); + + $md5_pass_salt = md5(md5($_POST['reg_pass'] . $salt)); + + $q = " + INSERT INTO + " . PREFIX . "_users + SET + Id = '', + user_name = '" . $_POST['user_name'] . "', + password = '" . addslashes($md5_pass_salt) . "', + firstname = '" . $_POST['reg_firstname'] . "', + lastname = '" . $_POST['reg_lastname'] . "', + user_group = '" . self::$_newuser_group . "', + reg_time = '" . time() . "', + status = '" . $status . "', + email = '" . $_POST['reg_email'] . "', + emc = '" . addslashes($emailcode) . "', + country = '" . strtoupper($_POST['country']) . "', + reg_ip = '" . addslashes($_SERVER['REMOTE_ADDR']) . "', + taxpay = '1', + company = '" . @$_POST['company'] . "', + salt = '" . addslashes($salt) . "' + "; + + $AVE_DB->Query($q); + + if ($status == 1) + { + $_SESSION['user_id'] = $AVE_DB->InsertId(); + + $_SESSION['user_name'] = get_username( + stripslashes($_POST['user_name']), + stripslashes($_POST['reg_firstname']), + stripslashes($_POST['reg_lastname']) + ); + + $_SESSION['user_email'] = $_POST['reg_email']; + $_SESSION['user_pass'] = $md5_pass_salt; + $_SESSION['user_group'] = self::$_newuser_group; + $_SESSION['user_country'] = strtoupper($_POST['country']); + $_SESSION['user_ip'] = addslashes($_SERVER['REMOTE_ADDR']); + + $user_group_permissions = $AVE_DB->Query("SELECT user_group_permission FROM ".PREFIX."_user_groups WHERE user_group=". self::$_newuser_group)->GetCell(); + $user_group_permissions = explode('|', preg_replace('/\s+/', '', $user_group_permissions)); + + foreach ($user_group_permissions as $user_group_permission) + $_SESSION[$user_group_permission] = 1; + } + + $SystemMail = get_settings('mail_from'); + $SystemMailName = get_settings('mail_from_name'); + + send_mail( + $SystemMail, + $bodytoadmin, + $AVE_Template->get_config_vars('LOGIN_SUBJECT_ADMIN'), + $SystemMail, + $SystemMailName, + 'text' + ); + + if ($_SESSION['loginza_auth'] != 1) + send_mail( + $_POST['reg_email'], + $email_body, + $AVE_Template->get_config_vars('LOGIN_SUBJECT_USER'), + $SystemMail, + $SystemMailName, + 'text' + ); + + header('Location:' . $link); + exit; + } + break; + + case 'thanks': + $AVE_Template->config_load(self::$_lang_file); + + define('MODULE_CONTENT', $AVE_Template->fetch(self::$_tpl_dir . 'register_thankyou.tpl')); + break; + + case 'final': + if (isset($_REQUEST['emc']) && $_REQUEST['emc'] != '') + { + $row = $AVE_DB->Query(" + SELECT * + FROM " . PREFIX . "_users + WHERE emc = '" . $_REQUEST['emc'] . "' + ")->FetchRow(); + + if ($row) + { + // $AVE_Template->assign('reg_type', $reg_type); + $AVE_Template->assign('final', 'ok'); + + $AVE_DB->Query(" + UPDATE " . PREFIX . "_users + SET status = '1' + WHERE emc = '" . $_REQUEST['emc'] . "' + "); + + $_SESSION['user_id'] = $AVE_DB->InsertId(); + $_SESSION['user_name'] = get_username( + stripslashes($_POST['user_name']), + stripslashes($_POST['reg_firstname']), + stripslashes($_POST['reg_lastname']) + ); + $_SESSION['user_email'] = $_POST['reg_email']; + $_SESSION['user_pass'] = $md5_pass_salt; + $_SESSION['user_group'] = self::$_newuser_group; + $_SESSION['user_country'] = strtoupper($_POST['country']); + $_SESSION['user_ip'] = addslashes($_SERVER['REMOTE_ADDR']); + $user_group_permissions=$AVE_DB->Query("SELECT user_group_permission FROM ".PREFIX."_user_groups WHERE user_group=".self::$_newuser_group)->GetCell(); + $user_group_permissions = explode('|', preg_replace('/\s+/', '', $user_group_permissions)); + foreach ($user_group_permissions as $user_group_permission) $_SESSION[$user_group_permission] = 1; + } + } + + define('MODULE_CONTENT', $AVE_Template->fetch(self::$_tpl_dir . 'register_final.tpl')); + break; + + case 'admin': + $AVE_Template->config_load(self::$_lang_file); + + define('MODULE_CONTENT', $AVE_Template->fetch(self::$_tpl_dir . 'register_admin.tpl')); + break; + + case '': + default : + if (defined('ANTISPAM')) + $AVE_Template->assign('im', 1); + + self::_requiredfetch(); + + $AVE_Template->assign('available_countries', get_country_list(1)); + + define('MODULE_CONTENT', $AVE_Template->fetch(self::$_tpl_dir . 'register.tpl')); + break; + } + break; + + case '0': + define('MODULE_CONTENT', $AVE_Template->get_config_vars('LOGIN_NOT_ACTIVE')); + break; + } + } + + + /* + |----------------------------------------------------------------------------------------------------------------------- + | checkusername + |----------------------------------------------------------------------------------------------------------------------- + | + | + | + */ + public static function checkusername () + { + global $AVE_DB, $AVE_Template; + + $errors = []; + + $AVE_Template->config_load(self::$_lang_file, 'registernew'); + + $user_name = $AVE_DB->EscStr($_POST['user_name']); + + if (empty($user_name)) + $errors[] = $AVE_Template->get_config_vars('LOGIN_WRONG_L_EMPTY'); + elseif (! ctype_alnum($user_name)) + $errors[] = $AVE_Template->get_config_vars('LOGIN_WRONG_LOGIN'); + elseif (self::_emailexist($user_name)) + $errors[] = $AVE_Template->get_config_vars('LOGIN_WRONG_L_INUSE'); + + if (! empty($errors)) + self::_json($errors, true); + } + + + /* + |----------------------------------------------------------------------------------------------------------------------- + | checkemail + |----------------------------------------------------------------------------------------------------------------------- + | + | + | + */ + public static function checkemail () + { + global $AVE_DB, $AVE_Template; + + $errors = array(); + + $AVE_Template->config_load(self::$_lang_file, 'registernew'); + + $email = $AVE_DB->EscStr($_POST['email']); + + if (empty($email)) + $errors[] = $AVE_Template->get_config_vars('LOGIN_WRONG_EM_EMPTY'); + elseif (! preg_match(self::$_regex_email, $email)) + $errors[] = $AVE_Template->get_config_vars('LOGIN_WRONG_EMAIL'); + else + if (self::_emailexist($email)) + $errors[] = $AVE_Template->get_config_vars('LOGIN_WRONG_INUSE'); + if (! self::_domaincheck($email)) + $errors[] = $AVE_Template->get_config_vars('LOGIN_DOMAIN_FALSE'); + if (!self::_blacklist($email)) + $errors[] = $AVE_Template->get_config_vars('LOGIN_EMAIL_FALSE'); + + if (! empty($errors)) + self::_json($errors, true); + } + } +?> \ No newline at end of file diff --git a/index.php b/index.php new file mode 100644 index 0000000..4ca25aa --- /dev/null +++ b/index.php @@ -0,0 +1,4 @@ + \ No newline at end of file diff --git a/info.php b/info.php new file mode 100644 index 0000000..2f6c1df --- /dev/null +++ b/info.php @@ -0,0 +1,20 @@ + 'login', + 'ModuleVersion' => '2.26.1', + 'ModuleAutor' => 'AVE.cms Team', + 'ModuleCopyright' => '© 2007-' . date('Y') . ' AVE.cms', + 'ModuleStatus' => 1, + 'ModuleIsFunction' => 1, + 'ModuleTemplate' => 1, + 'ModuleAdminEdit' => 1, + 'ModuleFunction' => 'mod_login', + 'ModuleTag' => '[mod_login]', + 'ModuleTagLink' => null, + 'ModuleAveTag' => '#\\\[mod_login]#', + 'ModulePHPTag' => '' + ); +?> \ No newline at end of file diff --git a/lang/index.php b/lang/index.php new file mode 100644 index 0000000..4ca25aa --- /dev/null +++ b/lang/index.php @@ -0,0 +1,4 @@ + \ No newline at end of file diff --git a/lang/ru.txt b/lang/ru.txt new file mode 100644 index 0000000..38cd130 --- /dev/null +++ b/lang/ru.txt @@ -0,0 +1,208 @@ +[name] +MODULE_NAME = "Авторизация" +MODULE_DESCRIPTION = "Данный модуль предназначен для регистрации пользователей на вашем сайте. Для вывода формы авторизации, разместите системный тег [mod_login] в нужном месте вашего шаблона. Также вы можете указать шаблон, в котором будет отображена форма для регистрации и авторизации." + +[loginform] +LOGIN_NEW_REGISTER = "Регистрация" +LOGIN_PASSWORD_REMIND = "Забыли пароль?" +LOGIN_PLEASE_LOGON = "Пожалуйста, авторизуйтесь, для доступа к расширенным возможностям." +LOGIN_REGISTER_INFO = "Регистрация на сайте позволит Вам получить доступ к разделам, которые разрешены для просмотра только зарегистрированным пользователям. Данная процедура не займет у Вас много времени." +LOGIN_REMINDER_INFO = "Если Вы забыли свой пароль, введите E-mail адрес, который был указан Вами при регистрации и мы в кротчайшие сроки вышлем новый пароль." +LOGIN_SAVE_COOKIE = "Запомнить меня" +LOGIN_SAVE_INFO = "Установите флажок, если Вы хотите, чтобы система автоматически осуществляла вход на основании ваших регистрационных данных." +LOGIN_YOUR_EMAIL = "Логин:" +LOGIN_YOUR_PASSWORD = "Пароль:" +LOGIN_LOGIN_PANEL = "Панель авторизации" +LOGIN_BUTTON_LOGIN = "Войти" +LOGIN_AUTORIZATION = "Авторизация" + +[displaypanel] +LOGIN_ADMIN_LINK = "Панель управления" +LOGIN_CHANGE_DETAILS = "Настройки профиля" +LOGIN_CHANGE_LINK = "Сменить пароль" +LOGIN_DELETE_LINK = "Удалить аккаунт" +LOGIN_LOGOUT_LINK = "Выйти" +LOGIN_WELCOME_TEXT = "Здравствуйте " +LOGIN_WYSIWYG_OFF = "Выключить редактор" +LOGIN_WYSIWYG_ON = "Включить редактор" +LOGIN_USER_PANEL = "Панель пользователя" +LOGIN_USER_PROFILE = "Посмотреть профиль" + +[userinfo] +LOGIN_YOUR_BIRTHDAY = "Дата рождения:" +LOGIN_YOUR_COMPANY = "Название организации:" +LOGIN_YOUR_COUNTRY = "Страна проживания:" +LOGIN_YOUR_FAX = "Факс:" +LOGIN_YOUR_FIRSTNAME = "Имя:" +LOGIN_YOUR_HOUSE = "Номер дома:" +LOGIN_YOUR_LASTNAME = "Фамилия:" +LOGIN_YOUR_MAIL = "E-mail:" +LOGIN_YOUR_PHONE = "Контактный телефон:" +LOGIN_YOUR_STREET = "Улица " +LOGIN_YOUR_TOWN = "Город:" +LOGIN_YOUR_ZIP = "Почтовый индекс" + +[loginprocess] +LOGIN_BUTTON_ENTER = "Войти" +LOGIN_NEW_REGISTER = "Регистрация" +LOGIN_PASSWORD = "Пароль:" +LOGIN_PASSWORD_REMIND = "Забыли пароль?" +LOGIN_PLEASE_LOGON = "Пожалуйста, авторизуйтесь, используя Ваши E-Mail и Пароль" +LOGIN_REGISTER_INFO = "Регистрация на сайте позволит Вам получить доступ к разделам, которые разрешены для просмотра только зарегистрированным пользователям. Данная процедура не займет у Вас много времени." +LOGIN_REMINDER_INFO = "Если Вы забыли свой пароль, введите E-mail адрес, который был указан Вами при регистрации и мы в кротчайшие сроки вышлем новый пароль." +LOGIN_SAVE_COOKIE = "Запомнить меня" +LOGIN_SAVE_INFO = "Установите флажок, если Вы хотите, чтобы система автоматически осуществляла вход на основании ваших регистрационных данных." +LOGIN_TEXT_FALSE_INFO = "Вы указали неверные данные при авторизации. Пожалуйста, попробуйте еще раз." +LOGIN_TEXT_TRUE_INFO = "Спасибо. Вы успешно прошли авторизацию." +LOGIN_YOUR_MAIL = "Логин:" +LOGIN_AUTORIZATION = "Авторизация" +LOGIN_BUTTON_LOGIN = "Войти" + +[registernew] +LOGIN_BUTTON_FINAL = "Завершить регистрацию" +LOGIN_BUTTON_SUBMIT = "Продолжить регистрацию" +LOGIN_CODE_FROM_MAIL = "Код активации:" +LOGIN_DOMAIN_FALSE = "Указанный E-mail-домен заблокирован для регистрации." +LOGIN_EMAIL_FALSE = "Указанный E-mail адрес заблокирован для регистрации." +LOGIN_MAIL_CONFIRM = "Повторите E-mail:" +LOGIN_MESSAGE_1 = "Здравствуйте %NAME%,%N%Ваш аккаунт успешно создан.%N%%N%Вы можете произвести авторизацию на сайте %HOST%, со следующими данными:%N%%N%Логин: %NAME% %N%Пароль: %PASSWORD% %N%" +LOGIN_MESSAGE_2 = "Здравствуйте %NAME%.%N%Поздравляем Вас с успешной регистрацией.%N%%N%Вы можете произвести авторизацию на сайте %HOST%, со следующими данными:%N%%N%Логин: %NAME% %N%Пароль: %PASSWORD% %N%" +LOGIN_MESSAGE_3 = "%N%Обратите внимание! Прежде чем осуществлять авторизацию, Вам необходимо подтвердить Вашу регистрацию и Ваш E-mail-адрес. Пожалуйста, перейдите по ссылке, указанной ниже:%N%%REGLINK% %N%Код, для активации аккаунта вручную: %CODE%" +LOGIN_MESSAGE_4 = "%N%Обратите внимание! Ваш аккаунт будет доступен, только после проверки и активации Администрацией сайта. После активации Вы получите уведомление на E-mail адрес.%N%%N%%HOST%" +LOGIN_MESSAGE_5 = "Здравствуйте.%N%На сайте зарегистрировался новый пользователь со следующими регистрационными данными.%N%%N%Имя: %NAME%%N%E-mail: %EMAIL%" +LOGIN_MESSAGE_7 = "Обратите внимание! Ваш аккаунт будет доступен, только после проверки и активации Администрацией сайта. После активации Вы получите уведомление на E-mail адрес." +LOGIN_MESSAGE_OK = "Регистрация завершена! Теперь система попытается осуществить автоматический вход. Если вход не осуществлён, Вы можете самостоятельно войти с вашим Логином и паролем." +LOGIN_MESSAGE_TEXT = "Процесс регистрации почти закончен. Для активации Вашего аккаунта, пожалуйста, укажите код активации, который был выслан Вам в E-mail сообщении." +LOGIN_NOT_ACTIVE = "В настоящий момент регистрация пользователей временно отключена." +LOGIN_PASSWORD = "Пароль:" +LOGIN_REGISTER_OK = "Регистрация успешно завершена" +LOGIN_SECURITY_CODE = "Защитный код:" +LOGIN_SECURITY_CODER = "Введите код:" +LOGIN_SUBJECT_ADMIN = "Регистрация нового пользователя" +LOGIN_SUBJECT_USER = "Регистрационные данные" +LOGIN_TEXT_REGISTER = "Регистрация нового пользователя" +LOGIN_THANKYOU_TEXT = "Спасибо за регистрацию! На Ваш E-mail отправлено сообщение, содержащее информацию об активации Вашего аккаунта." +LOGIN_WROND_E_SCODE = "Поле Защитный код не заполнено." +LOGIN_WROND_SCODE = "Указанный защитный код неверен." +LOGIN_WRONG_EMAIL = "Поле E-mail указано в неверном формате." +LOGIN_WRONG_EM_EMPTY = "Поле E-mail не заполнено." +LOGIN_WRONG_ER_EMPTY = "Поле E-mail (подтверждающее) не заполнено." +LOGIN_WRONG_FN_EMPTY = "Поле Имя не заполнено." +LOGIN_WRONG_FIRSTNAME = "Поле Имя содержит недопустимые символы." +LOGIN_WRONG_INUSE = "Указанный E-mail адрес уже зарегистрирован." +LOGIN_WRONG_LN_EMPTY = "Поле Фамилия не заполнено." +LOGIN_WRONG_LASTNAME = "Поле Фамилия содержит недопустимые символы." +LOGIN_WRONG_L_EMPTY = "Поле Логин не заполнено." +LOGIN_WRONG_LOGIN = "Поле Логин содержит недопустимые символы." +LOGIN_WRONG_L_INUSE = "Указанный Логин уже используется." +LOGIN_WRONG_PASS = "Поле Пароль не заполнено." +LOGIN_WRONG_RETRY = "Указанные E-mail адреса не совпадают." +LOGIN_WRONG_SHORT_PASS = "Длина пароля менее 5 символов." +LOGIN_WRONG_SYM_PASS = "Пароль содержит недопустимые символы." +LOGIN_YOUR_COMPANY = "Организация:" +LOGIN_YOUR_COUNTRY = "Страна проживания:" +LOGIN_YOUR_FIRSTNAME = "Имя:" +LOGIN_YOUR_LASTNAME = "Фамилия:" +LOGIN_YOUR_LOGIN = "Логин:" +LOGIN_YOUR_MAIL = "E-mail:" +LOGIN_TEXT_AUTHORIZATION = "Информация для авторизации" +LOGIN_TEXT_USER_INFO = "Персональная информация" + +[passwordreminder] +LOGIN_BUTTON_NEWPASS = "Выслать пароль" +LOGIN_YOUR_MAIL = "E-mail:" +LOGIN_ENTER_EMAIL = "Пожалуйста, укажите Ваш E-mail." +LOGIN_MESSAGE_6 = "Здравствуйте %NAME%.%N%Вы запросили изменения Вашего пароля на сайте %HOST%.%N%%N%Ваш новый пароль: %PASS%%N%%N%Пожалуйста, перейдите по ссылке указанной ниже, чтобы подтвердить смену пароля:%N%%LINK%%N%%N%Если Вы не запрашивали изменение пароля и данное сообщение сообщение попало к Вам по ошибке, удалите его. " +LOGIN_PASSWORD_RESTOR = "Ваш пароль успешно изменён." +LOGIN_REMIND = "Восстановление пароля" +LOGIN_REMINDER_INFO2 = "Пожалуйста, укажите E-mail адрес, который был использован при регистрации. На указанный E-mail будет выслан новый пароль." +LOGIN_REMINDER_INFO4 = "Пожалуйста, укажите E-mail адрес" +LOGIN_REMINDER_INFO3 = "Новый пароль выслан на указанный E-mail адрес." +LOGIN_SUBJECT_REMINDER = "Ваш новый пароль" + +[passwordchange] +LOGIN_CHANGE_PASSWORD = "Изменить пароль" +LOGIN_EMPTY_NEW_PASS = "Вы не указали новый пароль" +LOGIN_EMPTY_NEW_PASS_C = "Вы не указали подтверждающее значение для нового пароля" +LOGIN_EMPTY_OLD_PASS = "Вы не указали текущий пароль" +LOGIN_FOUND_ERROR = "В процессе изменения пароля возникли следующие ошибки:" +LOGIN_NEW_PASSC = "Ошибка! Вы не указали подтверждающее значение пароля." +LOGIN_NEW_PASSWORD = "Новый пароль:" +LOGIN_NEW_PASSWORD_C = "Повторите пароль:" +LOGIN_NEW_PASS_EMPTY = "Ошибка! Вы не указали новый пароль." +LOGIN_OLD_PASSWORD = "Текущий пароль:" +LOGIN_OLD_PASS_EMPTY = "Ошибка! Вы не указали текущий пароль. Пожалуйста, правильность ввода." +LOGIN_PASSWORDS_NOEQU = "Введенные пароли не совпадают. Пожалуйста, проверьте правильность ввода." +LOGIN_PASSWORD_CHANGE = "Смена текущего пароля" +LOGIN_PASSWORD_INFO = "Пожалуйста, укажите новый пароль, который Вы хотите использовать. Пароль должн быть не менее 5 символов." +LOGIN_PASSWORD_OK = "Пароль успешно изменён!" +LOGIN_WRONG_EQU_PASS = "Значение нового пароля и подтверждающего не совпадают" +LOGIN_WRONG_OLD_PASS = "Текущий пароль указан неверно." +LOGIN_WRONG_SHORT_PASS = "Длина пароля менее 5 символов." +LOGIN_WRONG_SYM_PASS = "Пароль содержит недопустимые символы." + +[delaccount] +LOGIN_ADMIN_ACCOUNT = "Извините, но Вы не можете удалить свой аккаунт, так как Вы являетесь Администратором. Пожалуйста, обратитесь к Главному Администратору сайта." +LOGIN_DELETE_ACCOUNT = "Удаление Вашего аккаунта" +LOGIN_DELETE_BUTTON = "Удалить" +LOGIN_DELETE_CONFIRM = "Да, я согласен" +LOGIN_DELETE_INFO = "Все готово для окончательного удаления Вашего аккаунта из системы. Помните, что удалив свой аккаунт, Вы потеряете доступ к разделам сайта, разрешенным для просмотра только зарегистрированным пользователям. Вы уверены, что хотите удалить свой аккаунт?" +LOGIN_DELETE_OK = "Ваш аккаунт успешно удалён." +LOGIN_DELETE_WARNING = "Внимание!" + +[myprofile] +LOGIN_BUTTON_CHANGE = "Сохранить изменения" +LOGIN_CHANGED_OK = "Параметры профиля успешно сохранены" +LOGIN_CHANGE_DETAILS = "Персональная информация" +LOGIN_DATE_FORMAT = "(дд.мм.гггг)" +LOGIN_DETAILS_INFO = "Настройки профиля позволяют управлять Вашими личными данными. Пожалуйста, заполните поля, указав соответствующую информацию." +LOGIN_ERRORS = "В процессе регистрации возникли следующие ошибки:" +LOGIN_WRONG_BIRTHDAY = "Поле Дата рождения указано в неверном формате." +LOGIN_WRONG_DATE = "Неверно указан День Вашего рождения (ДД.ММ.ГГГГ)" +LOGIN_WRONG_EMAIL = "Поле E-mail указано в неверном формате." +LOGIN_WRONG_FAX = "Поле Факс дома не заполнено, либо содержит недопустимые симовлы." +LOGIN_WRONG_FN_EMPTY = "Поле Имя не заполнено." +LOGIN_WRONG_FIRSTNAME = "Поле Имя содержит недопустимые символы." +LOGIN_WRONG_HOUSE = "Поле Номер дома не заполнено, либо содержит недопустимые симовлы." +LOGIN_WRONG_INUSE = "Указанный E-mail адрес уже используется в системе." +LOGIN_WRONG_LN_EMPTY = "Поле Фамилия не заполнено." +LOGIN_WRONG_LASTNAME = "Поле Фамилия содержит недопустимые символы." +LOGIN_WRONG_MONTH = "Неверно указан Месяц Вашего рождения (ДД.ММ.ГГГГ)" +LOGIN_WRONG_PHONE = "Поле Номер телефона не заполнено, либо содержит недопустимые симовлы." +LOGIN_WRONG_STREET = "Поле Улица не заполнено, либо содержит недопустимые символы." +LOGIN_WRONG_TOWN = "Поле Город не заполнено, либо содержит недопустимые симовлы." +LOGIN_WRONG_YEAR = "Неверно указан Год Вашего рождения (ДД.ММ.ГГГГ)" +LOGIN_WRONG_ZIP = "Поле Почтовый индекс не заполнено, либо содержит недопустимые симовлы." +LOGIN_YOUR_BIRTHDAY = "Дата рождения:" +LOGIN_YOUR_COMPANY = "Название организации:" +LOGIN_YOUR_COUNTRY = "Страна проживания:" +LOGIN_YOUR_FAX = "Факс:" +LOGIN_YOUR_FIRSTNAME = "Имя:" +LOGIN_YOUR_HOUSE = "Номер дома:" +LOGIN_YOUR_LASTNAME = "Фамилия:" +LOGIN_YOUR_MAIL = "E-mail:" +LOGIN_YOUR_PHONE = "Контактный телефон:" +LOGIN_YOUR_STREET = "Улица " +LOGIN_YOUR_TOWN = "Город:" +LOGIN_YOUR_ZIP = "Почтовый индекс" + +[showconfig] +LOGIN_BLACK_DOMAINS = "Чёрный список доменов:
Укажите домены, с которых запрещена регистрация. Один домен на одну строку." +LOGIN_BLACK_EMAILS = "Чёрный список E-mail:
Укажите E-mail адреса, с которых запрещена регистрация. Один E-mail адрес на строку!" +LOGIN_BUTTON_SAVE = "Сохранить изменения" +LOGIN_ENABLE_REGISTER = "Разрешить регистрацию?" +LOGIN_MODULE_EDIT = "Настройка модуля" +LOGIN_MODULE_INFO = "В данном разделе Вы можете выполнить настройку модуля в соответствии с требуемыми параметрами, а так же определить списки доменных имен и e-mail адресов, которые будут запрещены при регистрации на сайте." +LOGIN_MODULE_NAME = "Авторизация" +LOGIN_MODULE = "Управление модулем" +LOGIN_NO = "Нет" +LOGIN_REGISTRATION_TYPE = "Тип регистрации:" +LOGIN_SHOW_COMPANY = "Показывать поле Организация?" +LOGIN_SHOW_FIRSTNAME = "Показывать поле Имя?" +LOGIN_SHOW_LASTNAME = "Показывать поле Фамилия?" +LOGIN_TYPE_BYADMIN = "После подтверждения Aдминистратором" +LOGIN_TYPE_BYEMAIL = "После подтвержения через E-mail" +LOGIN_TYPE_NOW = "Сразу же, после регистрации" +LOGIN_USE_SCODE = "Использовать защитный код?" +LOGIN_YES = "Да" +LOGIN_SETTING_EXIT = "Выйти из настроек" diff --git a/module.php b/module.php new file mode 100644 index 0000000..038c9d6 --- /dev/null +++ b/module.php @@ -0,0 +1,132 @@ +assign('avatar', $avatar); + $AVE_Template->config_load($lang_file, 'displaypanel'); + $AVE_Template->display($tpl_dir . 'panel.tpl'); + } + else + { + $active = Login::settings('login_status'); + + $AVE_Template->config_load($lang_file, 'loginform'); + $AVE_Template->assign('active', $active); + $AVE_Template->display($tpl_dir . 'form.tpl'); + } + + return true; + } + + + //======================================================= + // Public functions + //======================================================= + if (! defined('ACP') && isset($_REQUEST['module']) && $_REQUEST['module'] == 'login' && ! empty($_REQUEST['action'])) + { + require_once(BASE_DIR . '/modules/login/class/login.php'); + + new Login; + + Login::$_tpl_dir = BASE_DIR . '/modules/login/public/'; + + Login::$_lang_file = BASE_DIR . '/modules/login/lang/' . $_SESSION['user_language'] . '.txt'; + + switch ($_REQUEST['action']) + { + case 'form': + Login::form(); + break; + + case 'authorize': + Login::authorize(); + break; + + case 'logout': + Login::logout(); + break; + + case 'register': + Login::register(); + break; + + case 'reminder': + Login::reminder(); + break; + + case 'change': + Login::change(); + break; + + case 'delete': + Login::delete(); + break; + + case 'profile': + Login::profile(); + break; + + case 'info': + Login::info(); + break; + + case 'checkusername': + Login::checkusername(); + break; + + case 'checkemail': + Login::checkemail(); + break; + } + } + + + //======================================================= + // The control module in the admin panel + //======================================================= + if ( + defined('ACP') + && (isset($_REQUEST['moduleaction']) && !empty($_REQUEST['moduleaction'])) + && (isset($_REQUEST['mod']) && $_REQUEST['mod'] == 'login') + ) + { + require_once(BASE_DIR . '/modules/login/class/login.php'); + + new Login; + + Login::$_tpl_dir = BASE_DIR . '/modules/login/admin/'; + + $lang_file = BASE_DIR . '/modules/login/lang/' . $_SESSION['admin_language'] . '.txt'; + + $AVE_Template->config_load($lang_file, 'showconfig'); + $AVE_Template->assign('config_vars', $AVE_Template->get_config_vars()); + + switch($_REQUEST['moduleaction']) + { + case '1': + Login::admin(); + break; + } + } + +?> \ No newline at end of file diff --git a/public/change.tpl b/public/change.tpl new file mode 100644 index 0000000..ceb3dbe --- /dev/null +++ b/public/change.tpl @@ -0,0 +1,71 @@ + + + +

{#LOGIN_PASSWORD_CHANGE#}

+ +
+ {if $changeok==1} +
+

{#LOGIN_PASSWORD_OK#}

+
+ {else} +
+ + +

{#LOGIN_PASSWORD_INFO#}

+ + {if $errors} +

{#LOGIN_FOUND_ERROR#}

+ + {/if} + + +
+ {/if} +
diff --git a/public/delete.tpl b/public/delete.tpl new file mode 100644 index 0000000..6af42af --- /dev/null +++ b/public/delete.tpl @@ -0,0 +1,29 @@ + +

{#LOGIN_DELETE_ACCOUNT#}

+ +
+ {if $admin == 1} +
+ {#LOGIN_DELETE_WARNING#} +

{#LOGIN_ADMIN_ACCOUNT#}

+
+ {else} + {if $delok == 1} +
+

{#LOGIN_DELETE_OK#}

+
+ {else} +
+ {#LOGIN_DELETE_WARNING#} +

{#LOGIN_DELETE_INFO#}

+
+ + + {#LOGIN_DELETE_CONFIRM#}
+
+ +
+
+ {/if} + {/if} +
diff --git a/public/form.tpl b/public/form.tpl new file mode 100644 index 0000000..77fff6c --- /dev/null +++ b/public/form.tpl @@ -0,0 +1,35 @@ +
+
+
+
{#LOGIN_AUTORIZATION#}
+

{#LOGIN_PLEASE_LOGON#}

+
+
+
+
+ + + +
+ +
+
+
+ + + +
+ +
+
+ + +
+ + {#LOGIN_PASSWORD_REMIND#}  + {if $active == 1}{#LOGIN_NEW_REGISTER#}{/if} +
+
+
\ No newline at end of file diff --git a/public/index.php b/public/index.php new file mode 100644 index 0000000..11b1a2d --- /dev/null +++ b/public/index.php @@ -0,0 +1,4 @@ + \ No newline at end of file diff --git a/public/info.tpl b/public/info.tpl new file mode 100644 index 0000000..5ae79c1 --- /dev/null +++ b/public/info.tpl @@ -0,0 +1,44 @@ +

{#LOGIN_USER_PROFILE#}

+{if $user->avatar}{/if} +
+

{#LOGIN_DETAILS_INFO#}

+ +
+

+ + {$user->firstname|escape|stripslashes} +

+

+ + {$user->lastname|escape|stripslashes} +

+

+ + {$user->birthday|escape|stripslashes} +

+

+ + {$user->city|escape|stripslashes} +

+

+ + {$user->zipcode|default:$row.zipcode|escape|stripslashes} +

+

+ + {$user->street|escape|stripslashes} +

+

+ + {$user->street_nr|escape|stripslashes} +

+

+ + {$user->phone|default:$row.phone|escape|stripslashes} +

+

+ + {$user->company|escape|stripslashes} +

+
+
diff --git a/public/panel.tpl b/public/panel.tpl new file mode 100644 index 0000000..7030185 --- /dev/null +++ b/public/panel.tpl @@ -0,0 +1,15 @@ +
+ {if $avatar}{/if} +
+
{#LOGIN_WELCOME_TEXT#}
+

{$smarty.session.user_name|escape}

+
+
+ {#LOGIN_CHANGE_DETAILS#} + {#LOGIN_USER_PROFILE#} + {#LOGIN_CHANGE_LINK#} + {if check_permission("adminpanel")}{#LOGIN_ADMIN_LINK#}{/if} + {#LOGIN_DELETE_LINK#} + {#LOGIN_LOGOUT_LINK#} +
+
\ No newline at end of file diff --git a/public/process.tpl b/public/process.tpl new file mode 100644 index 0000000..af41a30 --- /dev/null +++ b/public/process.tpl @@ -0,0 +1,44 @@ +
+
+
+
{#LOGIN_AUTORIZATION#}
+

{#LOGIN_PLEASE_LOGON#}

+
+
+
+
+ + + +
+ +
+
+
+ + + +
+ +
+
+ + +
+ + {#LOGIN_PASSWORD_REMIND#}  + {if $active == 1}{#LOGIN_NEW_REGISTER#}{/if} + + {if $login == false} + + {/if} +
+
+
\ No newline at end of file diff --git a/public/profile.tpl b/public/profile.tpl new file mode 100644 index 0000000..45d2cac --- /dev/null +++ b/public/profile.tpl @@ -0,0 +1,87 @@ +

{#LOGIN_CHANGE_DETAILS#}

+

{#LOGIN_DETAILS_INFO#}

+ +{if $errors} +
+
+

{#LOGIN_ERRORS#}

+ + {foreach from=$errors item=error} + + {/foreach} + +
+
+{/if} + +
+ +
+
+
+
+ + +
+
+ + +
+
+
+
+ + +
+
+ + +
+
+
+ + +
+
+ + +
+
+
+ + +
+
+ + +
+
+ + +
+
+
+
+ + +
+
+ + +
+
+ + +
+
+
diff --git a/public/register.tpl b/public/register.tpl new file mode 100644 index 0000000..f8bb531 --- /dev/null +++ b/public/register.tpl @@ -0,0 +1,86 @@ + +

{#LOGIN_TEXT_REGISTER#}

+ +
+ {if $errors} + + {/if} + + + +
+ + + + +
+
diff --git a/public/register_admin.tpl b/public/register_admin.tpl new file mode 100644 index 0000000..bd56f8d --- /dev/null +++ b/public/register_admin.tpl @@ -0,0 +1,9 @@ +
+

{#LOGIN_REGISTER_OK#}

+
+ +
+

{#LOGIN_THANKYOU_TEXT#}


+
+

{#LOGIN_MESSAGE_7#}

+
diff --git a/public/register_final.tpl b/public/register_final.tpl new file mode 100644 index 0000000..01d7255 --- /dev/null +++ b/public/register_final.tpl @@ -0,0 +1,22 @@ +

{#LOGIN_TEXT_REGISTER#}

+ +
+
+ {if $final == "ok"} +

{#LOGIN_MESSAGE_OK#}

+ {if $smarty.session.referer != ''} + + {/if} + {else} +

{#LOGIN_MESSAGE_TEXT#}

+
+ +

+ + +

+ +
+ {/if} +
+
diff --git a/public/register_thankyou.tpl b/public/register_thankyou.tpl new file mode 100644 index 0000000..0aa5900 --- /dev/null +++ b/public/register_thankyou.tpl @@ -0,0 +1,8 @@ +

{#LOGIN_TEXT_REGISTER#}

+ +
+
+ {#LOGIN_REGISTER_OK#} +

{#LOGIN_THANKYOU_TEXT#}

+
+
diff --git a/public/reminder.tpl b/public/reminder.tpl new file mode 100644 index 0000000..ed4ddf9 --- /dev/null +++ b/public/reminder.tpl @@ -0,0 +1,34 @@ + + + +

{#LOGIN_REMIND#}

+ +
+ {if $smarty.request.sub=='send'} +
+

{#LOGIN_REMINDER_INFO3#}

+
+ {else} +
+ + +
+ {/if} +
diff --git a/public/reminder_end.tpl b/public/reminder_end.tpl new file mode 100644 index 0000000..c793428 --- /dev/null +++ b/public/reminder_end.tpl @@ -0,0 +1,8 @@ + +

{#LOGIN_REMIND#}

+ +
+
+

{#LOGIN_PASSWORD_RESTOR#}

+
+
diff --git a/sql.php b/sql.php new file mode 100644 index 0000000..7c32383 --- /dev/null +++ b/sql.php @@ -0,0 +1,39 @@ + \ No newline at end of file