Подтвердить что ты не робот

Разработка: ограничение действий администраторам

Следуя руководству, я добавил логический атрибут в мою базу данных с помощью миграции:

rails generate migration add_admin_to_user admin:boolean

Я настроил свою учетную запись как администратор (admin = 1) через консоль Rails. У меня есть контроллер, который я хочу ограничить доступ к определенным действиям (новым, редактировать, создавать и уничтожать) только для администраторов.

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

before_filter :authenticate_user!, :only => [:new, :edit, :create, :destroy]

Что ограничивает доступ к зарегистрированным пользователям - как я могу сделать этот шаг дальше и потребовать администраторов?

4b9b3361

Ответ 1

вы можете легко реализовать свой собственный before_filter, чтобы разрешить доступ только пользователям-администраторам с помощью .admin? метод, связанный с вашей моделью пользователя. например:

before_filter :verify_is_admin

private

def verify_is_admin
  (current_user.nil?) ? redirect_to(root_path) : (redirect_to(root_path) unless current_user.admin?)
end

Ответ 2

Вы хотите определить свой собственный метод в переднем фильтре, а затем определить, является ли пользователь администратором или нет в этом методе до вызова: authenticate_user!

before_filter :custom_method, :only => [:new, :edit, :create, :destroy]

private
def custom_method
  authenticate_user!

  if current_user.admin
     return
  else
     redirect_to root_url # or whatever
  end
end

Вы захотите сделать authenticate_user! перед проверкой переменной current_user.

Иан.