Как изменить базовый URL /auth/register ?

 
Посетитель
no avatar
Сообщений: 11
Проект требует предоставлять пользователю возможность регистрации на сайте только после просмотра вебинара.
Поэтому на сайте из меню и виджетов ссылки на регистрацию удалены, а единственная активная ссылка отображается в конце вебинара.

Возникла задача: изменить базовый URL /auth/register чтобы закрыть возможность попасть на страницу регистрации, простым вбиванием стандартного пути.

Заранее благодарен за решение.
Посетитель
small user social cms
МедальКубок зрительских симпатийАвторитет форума
Сообщений: 1164
Rost:
Возникла задача: изменить базовый URL /auth/register чтобы закрыть возможность попасть на страницу регистрации, простым вбиванием стандартного пути.
просто изменив адрес, возможность попасть на страницу регистрации вы не закроете!

Как в icms 2.x изменить адрес компонента (auth) читайте здесь
Реклама
cms
Посетитель
no avatar
Сообщений: 11
Val:

Rost:
Возникла задача: изменить базовый URL /auth/register чтобы закрыть возможность попасть на страницу регистрации, простым вбиванием стандартного пути.
просто изменив адрес, возможность попасть на страницу регистрации вы не закроете!

Как в icms 2.x изменить адрес компонента (auth) читайте здесь

1. remap, к сожалению, в данном случае не работает (возможно только у меня) sad
2. проблема в том и состоит, что регистрацию закрывать и не надо - она должна быть доступна всем, НО после просмотра вебинара. Однако если юзер знаком с Инстантом, то простой набор /auth/register выведет его на регистрацию. Хотелось бы закрыть "дыру" ))
Посетитель
small user social cms
МедальКубок зрительских симпатийАвторитет форума
Сообщений: 1164
странно, конечно, что ремап не работает(( Я вечером у себя на локалке попробую... но теоретически должно было помочь...
Опять же, если пользователь знаком с Инстантом то даже если мы поменяем с помощью ремапа адрес компонента авторизации, его легко "подсмотреть" при попытке залогинеться (или точнее посмотреть адрес ссылки на авторизацию).

Может попробовать жестко в движке поменять название самого файла-экшена регистрации?
Посетитель
no avatar
Сообщений: 11
Val:

странно, конечно, что ремап не работает(( Я вечером у себя на локалке попробую... но теоретически должно было помочь...
Опять же, если пользователь знаком с Инстантом то даже если мы поменяем с помощью ремапа адрес компонента авторизации, его легко "подсмотреть" при попытке залогинеться (или точнее посмотреть адрес ссылки на авторизацию).

Может попробовать жестко в движке поменять название самого файла-экшена регистрации?

1. Val, буду очень благодарен, если Вы протестите remap по этому вопросу ))
2. "подсмотреть" при попытке залогиниться юзер видит /auth/login , как я понимаю
3. А вот "попробовать жестко в движке поменять название самого файла-экшена регистрации" - это уже интересно smile

Val, спасибо за внимание и поддержку => уже плюсанул в знак благодарности ))
Посетитель
no avatar
Сообщений: 11
remap меняет только /auth/register , а вот register нет. Если сменить только auth, то Val прав - залогинивание покажет изменённый путь к register.
"register" зашит где-то в dataset_name (наверное) ...
Посетитель
small user social cms
МедальКубок зрительских симпатий
Сообщений: 692
Если регистрация нужна только после совершения каких-либо действий, то как минимум нужна проверка на эти самое действие. Следовательно во-первых нужно ввести проверку на рефферер и если попадание на /login не с целевой страницы, то выкидывать туда пользователя принудительно (ну или показывать сообщеньку, не важно), а во-вторых на целевой странице обязательно должен быть какой-нить управляемый ява скриптом чекбокс, нажатие на который будет подтверждать готовность к регистрации.... Иначе все это пустая трата времени ИМХО.
Skype: pasha--g
Посетитель
no avatar
Сообщений: 11
Pasha:

Если регистрация нужна только ...

Логика действий юзера проста: он просматривает целевую страницу ---> Если ему интересно предложение, то он заполняет форму для получения ссылки на вебинар на свой e-mail ---> Попадая на вебинар юзер в конце получает ссылку для регистрации на сайте, где сможет скачать ценную инфу и файлы.

Согласен, что можно развернуть целый комплекс проверок и контроля пошаговых действий юзера, но мне показалось, что изменение даже пары символов в адресе register решит задачу

Возможно это параноя, опасаться, что появится знаток ICMS 2, который зарегистрируется вбив прямой адрес /auth/register. И если предполагать, что число таких знатоков попавших на сайт будет ничтожно малым, то конечно тему можно и закрыть ...

Но думаю, что решение данной задачи будет актуальным ещё для многих других создателей проектов на Инстанте.
Посетитель
small user social cms
МедальПочетный донор проекта
Сообщений: 560
Для такой задачи изменять урл смысла нет, на мой вгляд.
Как правильно сказал Pasha, нужно проверять выполнение необходимых условий и потом либо пускать в регистрацию, либо выдавать пояснение о невозможности регистрации без просмотра семинара и перенаправлять на страницу с семинаром. Признак выполнения условия можно выставлять в куках или в сессии после просмотра семинара. А для проверки условия сделать маленький хак в компоненте auth - добавить строку для вызова хука auth_register_start (или каким-то подобным именем), чтобы он срабатывал при открытии страницы с регистрацией. Тогда можно будет стандартным для Двойки способом - через обработку хуков - проверять условие в своём файле, обрабатывающем этот хук. При обновлении CMS достаточно будет только внести заново эту строку с вызовом хука в auth и всё опять заработает. Может быть даже разработчики согласятся добавить этот хук в будущих версиях при наличии достаточного количества желающих пользователей.
Редактировалось: 1 раз (Последний: 27 ноября 2014 в 18:28)
Посетитель
small user social cms
МедальКубок зрительских симпатийАвторитет форума
Сообщений: 1164
Rost, проверил работоспособность ремапа - и он работает! Но получается, что требуемое действие (не только с регистрацией, а в целом по любому компоненту) доступно/работает и по новому адресу и по старому. Т.е. если мы меняем /auth/register на /opana/register, то экшен register доступен в любом из двух описанных случаях (что по условиям нам не подходит=) ).

В указанных вами рамках можно сделать следующее:
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') =)
Подробнее:
всё! теперь новый адрес ссылки регистрации - sitename.ru/auth/registerim

2. Ввести в URL дополнительный параметр - секретный ключ! =))) чтобы ссылка работала например так /auth/register/s!F3b_jwx5zQ
для этого в файле экшена ..\system\controllers\auth\actions\register.php между 3-е1 и 6-ой строкой вставляем следующее:
Код PHP:
  1. ...
  2. public function run($secretKey=false){
  3.  
  4. if (!$secretKey) {cmsCore::error404();}
  5. if ($secretKey!=='s!F3b_jwx5zQ') {cmsCore::error404();}
  6. ...
и в файле шаблона указываем правильный URL (..\templates\default\controllers\auth\registration.tpl.php):
так же как написано чуть выше, в renderForm вставляем 'action' => href_to('auth', 'register', 's!F3b_jwx5zQ'),

3. Возможно стоит пересмотреть задачу и решить ее с помощью стандартного механизма выдачи инвайтов для регистрации ???
В начало страницы
Предыдущая темаСледующая тема Перейти на форум:
Быстрый ответ
Чтобы писать на форуме, зарегистрируйтесь или авторизуйтесь.