Как настроить маршруты ActiveAdmin для получения 2 страниц входа (для пользователя и для администратора) с 1 моделью пользователя? - PullRequest
1 голос
/ 01 декабря 2011

В моем проекте было 2 модели: AdminUser и Пользователь .

Я удалил модель AdminUser (и связанные таблицы БД)и теперь я использую свою модель Пользователь с методом admin? (в таблице пользователей было указано логическое поле администратора)

Документация ActiveAdmin:

Вы можете пропустить пользовательский класс Devise все вместе, используя флаг skip-users:

$> rails generate active_admin:install --skip-users

ПРИМЕЧАНИЕ. Если вы не используете настройки пользователя по умолчанию, вам нужно будет настроить их вconfig / intializers / active_admin.rb для удовлетворения ваших потребностей.

Вот что я нашел в инициализаторе:

config.authentication_method = :authenticate_admin_user!
config.current_user_method = :current_admin_user

Итак, я изменил application_controller.rb как:

def authenticate_admin_user!
  render(:file => "#{Rails.root}/public/403.html", :status => 403, :layout => false) and return if user_signed_in? && !current_user.admin?
  authenticate_user!
end

def current_admin_user
  return nil if user_signed_in? && !current_user.admin?
  current_user
end

И в маршрутизацииМоя цель - иметь 1 модель пользователя, но 2 отдельные страницы входа:

  • / users / sign_in (вход по умолчанию для устройства)
  • / admin (вход ActiveAdmin)

На данный момент, когда я пытаюсь получить доступ к / admin , я перенаправлен на /users / sign_in страница: - (

Спасибо за советы ...

1 Ответ

0 голосов
/ 31 января 2012

Поскольку вы пропустили создание новой пользовательской модели, замените любую строку admin_user в сгенерированном материале с ActiveAdmin на user.Поэтому вместо :authenticate_admin_user! замените его на :authenticate_user! и так далее в файлах миграции: вместо admin_user_id поставьте user_id то же самое для admin_user_type ... и т. Д.

...