Active Admin - та же модель для пользователей и администраторов - PullRequest
3 голосов
/ 25 ноября 2011

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

Могу ли я, чтобы только пользователи с правами администратора входили в Active Admin, если у них есть флаг is_admin в модели Users? Если пользователи не являются администраторами, они должны иметь возможность войти только в простую панель управления в передней части сайта.

Ответы [ 2 ]

5 голосов
/ 25 ноября 2011

Вы можете добавить флаг is_admin к вашей модели User, как вы предложили. Тогда вы можете окружить каждую опцию администратора вашим условием is_admin? и использовать некоторые before_filter :admin_required в своих контроллерах.

application_controller.rb:

# if user is not admin redirect to main page
def admin_required
  current_user.is_admin? || redirect_to("/")
end

any_controller.rb:

# Everybody can access show and index action, all others require admin flag set
before_filter :admin_required, :except => [:show, :index]

any_view / show.html.erb

<% if current_user.is_admin? %>
  Hi Admin!
  Some cool admin stuff
<% else %>
  Hi User!
<% end %>
Stuff for everybody
1 голос
/ 02 марта 2012

Проверьте файл инициализатора Active Admin, config/initializers/active_admin.rb. Там вы должны увидеть:

# == User Authentication
#
# Active Admin will automatically call an authentication 
# method in a before filter of all controller actions to 
# ensure that there is a currently logged in admin user.
#
# This setting changes the method which Active Admin calls
# within the controller.
config.authentication_method = :authenticate_admin_user!

Измените значение по умолчанию :authenticate_admin_user!, например, на admin_required, как сказал @amep!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...