• На рассмотрении

    0

    Запрет регистрации с зарубежными ящиками

    Андрей Осипов Обновлен 5 дней назад в категории CMS Админ. панель 0

    Здравствуйте.

    Внесите пожалуйста правки на стороне RS, чтобы можно было через опцию "Запрет email на зарубежных сервисах" блокировать возможность регистрации


    Как я понимаю это возможно сделать правкой register.inc.php

    Ниже пример доработки контроллера так, чтобы при отправке формы регистрация блокировалась, если e‑mail относится к списку публичных доменов. Мы:

    Добавили список запрещённых доменов.
    Перед сохранением пользователя проверяем домен e‑mail.
    Если домен запрещён — добавляем ошибку к полю e_mail и не выполняем сохранение/автологин.
    Сохраняем текущую логику (очистка openpass, рендер шаблона и т.д.).

    Код с правками (комментарии меткой // NEW):
    <?php
    /**
    * ReadyScript (http://readyscript.ru)
    *
    * @copyright Copyright (c) ReadyScript lab. (http://readyscript.ru)
    * @license http://readyscript.ru/licenseAgreement/
    */
    namespace Users\Controller\Front;

    use RS\Application\Auth as AppAuth;
    use RS\Controller\Front;
    use RS\Helper\Tools as HelperTools;
    use RS\Orm\Type;
    use RS\Site\Manager as SiteManager;
    use Users\Model\Orm\User;

    class Register extends Front
    {
    /** Поля, которые следует ожидать из POST */
    public $use_post_keys = ['is_company', 'company', 'company_inn', 'fio', 'name', 'login',
    'surname', 'midname', 'phone', 'e_mail', 'openpass', 'openpass_confirm', 'captcha', 'data', 'subscribe_on'];

    // NEW: список запрещённых публичных доменов
    private array $blocked_public_domains = [
    'gmail.com',
    'yahoo.com',
    'ymail.com',
    'rocketmail.com',
    'outlook.com',
    'hotmail.com',
    'live.com',
    'msn.com',
    'icloud.com',
    'me.com',
    'mac.com',
    'proton.me',
    'protonmail.com',
    'zoho.com',
    'aol.com',
    'gmx.com',
    'gmx.net',
    'email.com',
    'consultant.com',
    'fastmail.com',
    'tutanota.com',
    'tuta.com',
    'yahoo.co.jp',
    'naver.com',
    'daum.net',
    'outlook.de',
    'outlook.fr',
    'gmx.de',
    'web.de',
    'orange.fr',
    'laposte.net',
    'seznam.cz',
    'walla.co.il',
    'rediffmail.com',
    ];

    function actionIndex()
    {
    $this->app->breadcrumbs->addBreadCrumb(t('Регистрация'));

    $this->app->title->addSection(t('Регистрация'));
    $this->app->meta->addDescriptions(t('На этой странице вы можете зарегистрироваться'));

    $referer = $this->url->request('referer', TYPE_STRING, SiteManager::getSite()->getRootUrl());
    $referer = HelperTools::cleanOpenRedirect(urldecode($referer));

    $user = $this->getUserForRegistration();

    if ($this->isMyPost()) {
    $user['changepass'] = 1;

    // NEW: Валидация домена e-mail перед сохранением
    $email = (string) $user['e_mail'];
    if ($email !== '') {
    $email_domain = strtolower(preg_replace('/^.+@/u', '', $email));
    if ($email_domain === '' || $this->isBlockedPublicDomain($email_domain)) {
    // Добавляем ошибку к полю e_mail
    $user->addError(t('Регистрация с публичными e‑mail доменами запрещена. Укажите корпоративный адрес.'), 'e_mail');
    }
    } else {
    // Пусть встроенные чекеры обработают пустой e-mail, здесь ничего не делаем
    }

    // Продолжаем только если нет ошибок (включая нашу)
    if (!$user->hasError() && $user->save()) {
    //Если пользователь уже зарегистрирован
    AppAuth::setCurrentUser($user);
    if (AppAuth::onSuccessLogin($user)) {

    return $this->result
    ->addSection('closeDialog', true)
    ->addSection('reloadPage', true)
    ->setNoAjaxRedirect($referer);
    } else {
    $user->addError(AppAuth::getError());
    }
    }
    }

    //Не передаем пароль в открытом виде в браузер
    $user['openpass'] = $user['openpass_confirm'] = '';

    $this->view->assign([
    'conf_userfields' => $user->getUserFieldsManager(),
    'user' => $user,
    'referer' => urlencode($referer)
    ]);

    return $this->result->setTemplate('register.tpl');
    }

    /**
    * Возвращает объект пользователя с включенными необходимыми чекерами для валидации при регистрации
    *
    * @param User $user
    * @return User
    */
    private function getUserForRegistration()
    {
    $user = new User();
    $user->usePostKeys($this->use_post_keys);

    //Включаем капчу
    if (!$user['__phone']->isEnabledVerification()) {
    $user['__captcha']->setEnable(true);
    }

    $user->enableOpenPassConfirm();
    $user->enableRegistrationCheckers();

    return $user;
    }

    // NEW: проверка домена на запрет
    private function isBlockedPublicDomain(string $domain): bool
    {
    // нормализуем IDN (если в проекте есть утилита для IDN — заменить на неё)
    $normalized = strtolower($domain);

    // Прямая проверка
    if (in_array($normalized, $this->blocked_public_domains, true)) {
    return true;
    }

    // Дополнительно: блокируем субдомены запрещённых доменов (редкий случай, но на всякий)
    foreach ($this->blocked_public_domains as $blocked) {
    if ($normalized === $blocked) {
    return true;
    }
    if (str_ends_with($normalized, '.' . $blocked)) {
    return true;
    }
    }

    return false;
    }
    }
  • На рассмотрении

    0

    Мультиредактированиие возможность удалить выбраную спецкатегорию

    Денис Моисеев Обновлен 10 дней назад в категории CMS Админ. панель 0

    При мультиредактировании товаров необходимо иметь возможность удалить товары из выбранной спецкатегории
    Сейчас возможно только отчистить все и назначить новые
    Пример необходимости: есть спецкатегории (со стикерами) для холодильников с функциями NoFrost, зона свежести . Которые были отфильтрованы по характеристикам
    И есть спецкатегория Скидка которая отфильтрована по цене.
    Необходимо пересмотреть (удалить и назначить по другим условиям) спецкат Скидка, не затрагивая при этом другие назначенные спецкатегории
  • На рассмотрении

    +5

    Добавление фильтра цены в виртуальной категории.

    Андрей Амелькевич Обновлен 1 месяц назад в категории CMS Общий функционал 1

    Классно было бы реализовать фильтр "по цене" в функционале подбора товара для виртуальной категории.
    Сейчас есть только выбор категории, бренда и характеристики.

    Кейс: новая категория Для муз.школы - Классические гитары до 400.
    На данный момент мы не можем создать такую виртуальную категорию.
  • На рассмотрении

    +12

    Уведомления и доработка существующих шаблонов уведомлений

    Павел С Обновлен 2 месяца назад в категории CMS Админ. панель 3

    1. После каких либо изменений в заказе, каждый 10 клиент звонит в офис и каждый раз задает один и тот же вопрос: Что значит мой заказ был изменен? Возможно уведомление нужно изменить на: Обновление информации в заказе №номер_заказа
    2. На разные способы доставки нужны разные шаблоны e-mail и смс уведомлений. Например нужны разные шаблоны, когда клиент только оформил заказ, нужны разные шаблоны когда заказ закрывается, и.т.д.
    3. Писал ранее об этом! Сделайте нормальный редактор шаблонов уведомлений, чтобы обычный пользователь мог редактировать шаблоны. (все что нужно, это добавить текстовый редактор + описание переменных)
  • На рассмотрении

    +9

    Возможность прикреплять несколько видео к товарам.

    Александр Потапов Обновлен 3 месяца назад в категории CMS Общий функционал 2

    Сделать возможность прикреплять несколько видео к товарам и сделать, чтобы отображался не просто синий треугольник, а была возможность поставить превьюшку (со значком треугольника), чтобы было понятно, что это не фото, а именно видео.
  • На рассмотрении

    +1

    Модернизация блока цена!

    Алексей Баранов Обновлен 3 месяца назад в категории CMS Общий функционал 3

    Здравствуйте.
    На АВИТО провели модернизацию блока цен и продажи заметно увеличелись.
    Предлагаю содать отдельный блок в котором отображались промокод, если он есть для этого товара и расрочка на то количество месяцев которое можно выбрать администратору.
    Рассрочка это договор с банком по которому они с меня берут проценты при продаже. Например срок рассрочки 6 мес. то банк с меня удержит 11,5% от суммы сделки.
    При парсенге цен высвечивается основная цена а из блока со скидкой не цепляется на АВИТО.
    Давйте сделаем такой блок и работать будет легче.
  • На рассмотрении

    +6

    Доработка модуля Поиск. Игнорирование символов

    Поло Арт Обновлен 4 месяца назад в категории CMS Общий функционал 1

    В настройках модуля Поиск есть поле "Игнорируемые при поиске символы (только для like+)"
    Но вы знаете, что происходит при этом? Символы не игнорируются, а заменяются на пробел!
    И, при поиске по артикулам вида NN100, NN-100, чтобы выдача была одинаковой, это критично. Потому что NN-100 заменяется на NN_пробел_100
    Для одного из наших клиентов мы внесли доработку. Там теперь есть реально игнорируемые символы и набор символов, заменяющихся на пробел
    Доработка аховая, 15 минут времени.
    Ставьте плюсики, если это необходимо в стоке, RS в курсе ситуации.
  • На рассмотрении

    +1

    Неудобство работы с брошенными корзинами

    Андрей Амелькевич Обновлен 5 месяцев назад в категории CMS Общий функционал 0

    Добрый день.
    В модуле нет:
    - массового редактирования закрытия брошенных корзин
    - нет сортировки корзин постранично (Сейчас только кнопка "еще"), по статусам (открыт/Закрыт), ответу покупателю.

    Поисковые роботы постоянно создают множество брошенных корзин. Можно ли как-то исключать эти клики по корзинам?
    Без данных фильтраций использование модуля теряет всякий смысл.
  • На рассмотрении

    +2

    Добавление абсолютно всех характеристик к категории

    Поло Арт Обновлен 5 месяцев назад в категории CMS Админ. панель 2

    В данный момент реализовано "добавить характеристику" (одну характеристику) и "вставить несколько характеристик" (удерживаем CTRL и щёлкаем).
    Но, если нужно выгрузить абсолютно все характеристики всех товаров для некого стороннего сервиса, подходит только Расширенный экспорт, чтобы характеристики распределились по столбцам.
    И, если у нас много характеристик, пусть 100 - щёлкнуть с зажатым CTRL надо 100 раз!

    Поэтому предлагаю внести третий пункт "Добавить все характеристики". Чтобы один клик и они добавились на категорию.
  • На рассмотрении

    +7

    Оформление заказа покупателем, покупатель раздражён и это плохо

    Андрей Акулов Обновлен 7 месяцев назад в категории CMS Общий функционал 0

    Здравствуйте! Часто с сталкиваюсь с проблемой. Покупатель зарегистрирован, ранее делал заказы с доставкой в определённое ПВЗ. При следующей покупки он авторизовывается, и автоматически не обращает внимание на то что ему нужно выбрать адрес ПВЗ, оформляет заказ. Покупатель привык к логике оформления на маркетплейсах и поэтому он думает что его настройки по доставки должны сохраняться с прошлых заказов. Эту задачу надо решать, ведь интернет магазины в первую очередь созданы для удобства покупателей, не нужно их раздражать, тем более на фоне того что маркетплейсы очень хорошо отбирают у других интернет магазинов потенциальных покупателей