10

Я использую devise и недавно добавил активный администратор, который создал отдельную таблицу admin_users для поддержки админов.Пропустить перед фильтром с Active Admin

Все работает нормально с Active Admin при попытке входа в систему и просмотра. Тем не менее, мой контроллер приложение имеет это для обычных пользователей:.

before_filter :authenticate_user!, :except => [:show, :index] 

Из-за этого, когда в активном интерфейсе администратора, всякий раз, когда я пытаюсь изменить или удалить что-либо, он просит меня войти, я узнал, что в skip_before_filter может использоваться внутри контроллера, в котором должен быть исключен параметр before_filter, однако у Active Admin нет файла контроллера в папке контроллеров или в любом месте моего проекта, который я мог бы посмотреть.

Может ли кто-нибудь предложить, как заставить активного администратора игнорировать приложение beofre_filter, которое я хочу применить на всех клиентах/пользователях?

ответ

33

В config/initializers/active_admin.rb можно добавить следующее:

config.skip_before_filter :authenticate_user! 

Вы также можете использовать DSL при условии, чтобы изменить контроллер ActiveAdmin: http://activeadmin.info/docs/8-custom-actions.html#modify_the_controller

+0

Отлично! спасибо – alik

+0

По какой-то причине строка в файле инициализаций не работает для меня. И я не уверен. , в каких файлах вы добавляете код для изменения контроллера ActiveAdmin? – John

+0

@John Убедитесь, что вы перезапустили приложение после изменения любого инициализатора, и вы можете использовать DSL, модифицирующий контроллер, в файлах определения admin (то есть app/admin/post.rb). – coreyward

3

Я не мог получить @ решение coreyward на работу, но редактирование config/application.rb согласно this Devise post и добавление:

ActiveAdmin.register_page "Dashboard" do 
    controller do 
     skip_before_filter :name_of_filter_to_skip 
    end 

    # Other code 
end 

к admin/dashboard.rb сделал трюк. Это не сработало, просто редактировав только config/application.rb. Обязательно перезагрузите сервер!

+0

'В документации указано, что шаг конфигурации добавляет конфигурацию ко всем вашим контроллерам RESOURCE, поэтому панель управления, по-видимому, исключена из этот список ... переходя непосредственно в/admin/some_resouce все еще пропускает для меня вещи ... так что вы правы, это необходимо в дополнение к решению coreyward – fringd

1

как ядро, так и Sooie правы ... но только частично, чтобы остановить ваше одеяло authorize_user! фильтр от воздействия active_admin необходимо реализовать оба своих ответов ...

конфигурации/Инициализаторы/active_admin.rb

config.skip_before_filter :authorize_user! 

приложение/администратор/dashboard.rb

controller do 
    skip_before_filter :authorize_user! 
end 
+0

Зачем вам реализовывать оба? –

1

Я не мог» t сделать решения @fringd и @coreyward работать с Rails4 (используя ветку ActiveAdmin master).

Итак, я переместил методы фильтрации (у меня есть два фильтра: authorize_user! и check_user_status) на новый концерн, и включил этот созданный модуль в контроллеры, которые имели эти фильтры (для ApplicationController за исключением, что должна остаются чистыми).

Затем перезагрузили сервер, и проблема была решена.

+0

Можете ли вы добавить код к тем проблемам, которые вы описали? – Besi