Я пытаюсь добавить простую функцию в 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 сделал это автоматически.
Должен ли я сам устанавливать значение сеанса? Если да, то где? Или мои предположения неверны?
Большое спасибо!