Devise / Rails - Как разрешить только администраторам создавать учетные записи для других? - PullRequest
4 голосов
/ 14 марта 2011

Я использую devise в качестве решения для аутентификации, и теперь я думаю об авторизации. В моем проекте я (администратор) является единственным лицом, уполномоченным создавать учетные записи для других.

Интересно, есть ли способ сделать это без особого взлома? Фактически, Devise не позволяет пользователю получить доступ к странице регистрации, если он уже вошел в систему.

Спасибо за ваш совет по этому поводу!

Ответы [ 3 ]

9 голосов
/ 20 сентября 2011

Настройка :skip => :registrations также убивает возможность пользователя редактировать информацию о себе. Если это не то, что вам нужно, вместо этого вы можете создать (минимальный) пользовательский контроллер регистрации и удалить только new_user_registration_path, сохраняя edit_user_registration_path.

# app/controllers/registrations_controller.rb
class RegistrationsController < Devise::RegistrationsController

 def new
    # If you're not using CanCan, raise some other exception, or redirect as you please
    raise CanCan::AccessDenied
  end

end

# routes.rb
devise_for :users, :controllers => { :registrations => "registrations" }

После того, как вы это сделаете, вам также нужно переместить каталог views/devise/registrations в views/registrations.

3 голосов
/ 14 марта 2011

Вы можете попробовать гем rails_admin в сочетании с Devise для выполнения любых специфичных для администратора задач. Вам нужно будет добавить больше кода для его настройки, но, по крайней мере, вы избежите взлома решения с точки зрения изменения ваших взаимодействий с Devise.

1 голос
/ 05 января 2012

Похоже, что в более поздних версиях Devise вы можете просто удалить «регистрируемую» декларацию из вашей модели, и она позаботится об этом за вас.

...