Devise + LocomotiveCMS - Запомните страницу, которую я пытался посетить, прежде чем попросить войти - PullRequest
0 голосов
/ 22 февраля 2012

Я пытаюсь добавить простую функцию в locomotivecms ( github ). Очень простая функция: в настоящее время пользователи перенаправляются в «главный центр администратора» (/ admin /) после входа в систему - даже если они пытаются редактировать другую страницу. Я хочу, чтобы они были направлены на эту страницу после входа в систему.

Кажется, что это очень простая и разумная вещь, но после двух дней попыток я решил обратиться за помощью.

Это то, что я узнал до сих пор.

  • Это приложение не использует ActiveRecord, но Mongoid (внутренняя база данных - MongoDB)
  • Локомотив не использует простую схему «Пользователь». Аутентификация делится на две части: «учетные записи» (электронная почта, пароль, имя и т. Д.) И «сайт» (это мультисайтовый cms). «Сайт» имеет много «членства». Членство имеет один site_id и account_id (а также роль, но, думаю, это не важно).
  • Большая часть "действий" в локомотиве находится за маршрутом /admin/. Например, путь входа в систему - /admin/log_in. Большинство контроллеров также находятся в подпапке /admin/.
  • Я нашел этот бит в /admin/sessions_controller, который, по-видимому, "исправляет" URL-адрес, который будет посещен после входа в систему в корне /admin/.

Вот соответствующий бит:

def after_sign_in_path_for(resource)
  admin_pages_url
end

Я почти уверен, что мне нужно вот что:

def after_sign_in_path_for(resource)
  stored_location_for(resource) || admin_pages_url
end

Если я правильно понял документацию Devise, stored_location_for ищет значение в сеансе (session['admin_return_to'] в случае Локомотива), чтобы «посмотреть, не хочет ли кто-нибудь вернуться назад». Если он пуст, то || обеспечивает безопасный путь к корню администратора.

К сожалению, это не работает. Кажется, переменная сеанса, которая мне нужна, никогда не устанавливается. Я предполагал, что Devise сделал это автоматически.

Должен ли я сам устанавливать значение сеанса? Если да, то где? Или мои предположения неверны?

Большое спасибо!

1 Ответ

0 голосов
/ 14 июля 2012

Лучшим решением является обновление до последней версии LocomotiveCMS.

...