Как заставить активного администратора использовать таблицу пользователей, уже используемую devise и cancan? - PullRequest
4 голосов
/ 29 марта 2012

Я использовал devise для аутентификации и cancan для авторизации в моем приложении.Приложение отлично с ними работало.Но теперь я хотел использовать активного администратора для управления всеми пользователями, которые уже есть в моем приложении, которые используются devise и cancan.Активный администратор создает свою собственную таблицу admin_users для пользователей.Как я могу заставить active_admin использовать таблицу пользователей и ролей, которая использовалась ранее?Спасибо за вашу помощь.

Ответы [ 3 ]

8 голосов
/ 29 июня 2012

Если у вас уже есть созданная таблица users, то вам следует пропустить ее создание.

Продолжительность:

rails generate active_admin:install --skip-users

И не забудьте запустить:

bundle exec rake db:migrate

Попытайтесь изменить метод аутентификации в файле config/initializers/active_admin.rb. Также убедитесь, что у вас создан метод current_admin_user, если вы этого не сделаете, вы можете просто изменить его на значения по умолчанию (метод current_user).

Вам потребуется изменить метод http, используемый в ссылке на выход, на :delete.

config.logout_link_method = :delete

И путь к действию выхода из системы.

config.logout_link_path = :destroy_user_session_path

Чтобы лучше понять метод аутентификации, я вставляю свой app/controllers/application_controller.rb соответствующий код:

class ApplicationController < ActionController::Base
  protect_from_forgery

  #
  # redirect registered users to a profile page
  # of to the admin dashboard if the user is an administrator
  #
  def after_sign_in_path_for(resource)
    resource.role == 'admin' ? admin_dashboard_path : user_path(resource)
  end

  def authenticate_admin_user!
    raise SecurityError unless current_user.try(:role) == 'admin'
  end

  rescue_from SecurityError do |exception|
    redirect_to root_path
  end
end

Надеюсь, это поможет вам и возможно кому-то еще.

5 голосов
/ 03 апреля 2012

По умолчанию создается новый пользователь / модель Devise с именем AdminUser. Чтобы изменить имя пользовательского класса, просто передайте класс в качестве последнего аргумента:

rails generate active_admin:install User

http://activeadmin.info/docs/0-installation.html

http://activeadmin.info/docs/1-general-configuration.html#authentication

0 голосов
/ 11 марта 2013

если вы уже выполнили команды activeadmin .... вы можете использовать таблицу существующих пользователей, изменив admin_user для пользователя в active_admin.rb в инициализаторе и определение способности администратора в модели способностей cancan. Также вам нужно сделать что-то вроде авторизации администратора для авторизации DSL

...