Я пытаюсь ограничить регистрацию администратором Devise. Если возможно, я бы хотел избежать использования CanCan. Я создал отдельную конструкцию Devision Admin, как описано в опции № 1 здесь: https://github.com/plataformatec/devise/wiki/How-To:-Add-an-Admin-Role.Как ограничить регистрацию администратором с помощью Devise
Далее я установил интерфейс CRUD для пользователей, как описано здесь: https://github.com/plataformatec/devise/wiki/How-To:-Manage-users-through-a-CRUD-interface.
Я хотел бы ограничить новые регистрации, используя в диспетчере пользователей что-то вроде before_filter :authenticate_admin!
, но по какой-то причине он не ограничивает новые регистрации.
Мой routes.rb выглядит следующим образом:
devise_for :admins
devise_for :users, :path_prefix => 'd'
resources :admins
resources :users, :controller => "users"
Любые идеи, почему before_filter :authenticate_admin!
не ограничивая новых подписок?
При добавлении роли администратора вы должны использовать 'before_filter: authenticate_admin!'. В настоящее время это работает для меня в индексе Users и show action (для управления пользователями как admin). Я не уверен, почему он не работает над созданием действия. Я не хочу удалять: зарегистрироваться, потому что я хочу, чтобы админы могли добавлять пользователей. – Scott
Привет, Скотт, вам не нужно определять новое действие 'create'. Если вы заглянете в исходный код разработки, вы найдете в 'app/controller/devise/registrations_controller.rb' devise сделало все для вас, помимо этих действий,' authenticate_scope! ', Который является абстрактным методом для' authenticate_admin! 'в вашем случае, добавляется и работает только для **' edit destroy update' ** этих трех действий. Если вы действительно хотите добавить фильтр 'authenticate_admin!' Для создания действия, вы можете наследовать от 'Devise :: RegistrationsController' и добавить' prepend_before_filter: authenticate_scope !,: except => [: cancel] '. – Tomato
Я решил, что это стало слишком сложным только с использованием devise, поэтому я добавил CanCan, который отлично работал. Спасибо за помощь. – Scott