Поэтому на сайте из меню и виджетов ссылки на регистрацию удалены, а единственная активная ссылка отображается в конце вебинара.
Возникла задача: изменить базовый URL /auth/register чтобы закрыть возможность попасть на страницу регистрации, простым вбиванием стандартного пути.
Заранее благодарен за решение.
просто изменив адрес, возможность попасть на страницу регистрации вы не закроете!Возникла задача: изменить базовый URL /auth/register чтобы закрыть возможность попасть на страницу регистрации, простым вбиванием стандартного пути.
Как в icms 2.x изменить адрес компонента (auth) читайте здесь
просто изменив адрес, возможность попасть на страницу регистрации вы не закроете!Возникла задача: изменить базовый URL /auth/register чтобы закрыть возможность попасть на страницу регистрации, простым вбиванием стандартного пути.
Как в icms 2.x изменить адрес компонента (auth) читайте здесь
1. remap, к сожалению, в данном случае не работает (возможно только у меня)
2. проблема в том и состоит, что регистрацию закрывать и не надо — она должна быть доступна всем, НО после просмотра вебинара. Однако если юзер знаком с Инстантом, то простой набор /auth/register выведет его на регистрацию. Хотелось бы закрыть "дыру" ))
Опять же, если пользователь знаком с Инстантом то даже если мы поменяем с помощью ремапа адрес компонента авторизации, его легко "подсмотреть" при попытке залогинеться (или точнее посмотреть адрес ссылки на авторизацию).
Может попробовать жестко в движке поменять название самого файла-экшена регистрации?
странно, конечно, что ремап не работает(( Я вечером у себя на локалке попробую… но теоретически должно было помочь…
Опять же, если пользователь знаком с Инстантом то даже если мы поменяем с помощью ремапа адрес компонента авторизации, его легко "подсмотреть" при попытке залогинеться (или точнее посмотреть адрес ссылки на авторизацию).
Может попробовать жестко в движке поменять название самого файла-экшена регистрации?
1. Val, буду очень благодарен, если Вы протестите remap по этому вопросу ))
2. "подсмотреть" при попытке залогиниться юзер видит /auth/login, как я понимаю
3. А вот "попробовать жестко в движке поменять название самого файла-экшена регистрации" — это уже интересно
Val, спасибо за внимание и поддержку => уже плюсанул в знак благодарности ))
"register" зашит где-то в dataset_name (наверное)…
Если регистрация нужна только ...
Логика действий юзера проста: он просматривает целевую страницу ---> Если ему интересно предложение, то он заполняет форму для получения ссылки на вебинар на свой e-mail ---> Попадая на вебинар юзер в конце получает ссылку для регистрации на сайте, где сможет скачать ценную инфу и файлы.
Согласен, что можно развернуть целый комплекс проверок и контроля пошаговых действий юзера, но мне показалось, что изменение даже пары символов в адресе register решит задачу
Возможно это параноя, опасаться, что появится знаток ICMS 2, который зарегистрируется вбив прямой адрес /auth/register. И если предполагать, что число таких знатоков попавших на сайт будет ничтожно малым, то конечно тему можно и закрыть…
Но думаю, что решение данной задачи будет актуальным ещё для многих других создателей проектов на Инстанте.
Как правильно сказал Pasha, нужно проверять выполнение необходимых условий и потом либо пускать в регистрацию, либо выдавать пояснение о невозможности регистрации без просмотра семинара и перенаправлять на страницу с семинаром. Признак выполнения условия можно выставлять в куках или в сессии после просмотра семинара. А для проверки условия сделать маленький хак в компоненте auth — добавить строку для вызова хука auth_register_start (или каким-то подобным именем), чтобы он срабатывал при открытии страницы с регистрацией. Тогда можно будет стандартным для Двойки способом — через обработку хуков — проверять условие в своём файле, обрабатывающем этот хук. При обновлении CMS достаточно будет только внести заново эту строку с вызовом хука в auth и всё опять заработает. Может быть даже разработчики согласятся добавить этот хук в будущих версиях при наличии достаточного количества желающих пользователей.
В указанных вами рамках можно сделать следующее:
1. как я писал ранее — переименовать экшен register на что-то другое, например registerim или secret_action и др.
для этого нужно переименовать файл ..\system\controllers\auth\actions\register.php в, соответственно ..\system\controllers\auth\actions\registerim.php. Далее в самом файле меняем "class actionAuthRegister extends cmsAction" на "class actionAuthRegisterim extends cmsAction" (или, если у нас было secret_action, то "class actionAuthSecretAction extends cmsAction", смысл надеюсь понятен). И последнее в шаблоне регистрации, также нужно указать новый URL — ..\templates\default\controllers\auth\registration.tpl.php — меняем в 16-ой строке
'action' => href_to('auth', 'registerim'), // или 'action' => href_to('auth', 'secret_action') =)
2. Ввести в URL дополнительный параметр — секретный ключ! =))) чтобы ссылка работала например так /auth/register/s!F3b_jwx5zQ
для этого в файле экшена ..\system\controllers\auth\actions\register.php между 3-е1 и 6-ой строкой вставляем следующее:
... public function run($secretKey=false){ if (!$secretKey) {cmsCore::error404();} if ($secretKey!=='s!F3b_jwx5zQ') {cmsCore::error404();} ...
так же как написано чуть выше, в renderForm вставляем 'action' => href_to('auth', 'register', 's!F3b_jwx5zQ'),
3. Возможно стоит пересмотреть задачу и решить ее с помощью стандартного механизма выдачи инвайтов для регистрации ???