Слияние пользователей ActiveAdmin с существующей моделью пользователя - PullRequest
9 голосов
/ 13 февраля 2012

Я установил ActiveAdmin в начале своего проекта и использовал модель admin_users по умолчанию для аутентификации.С тех пор я использовал Devise для настройки отдельной модели User и понял, что объединение двух таблиц, вероятно, будет намного разумнее, так что администратор может выполнять административные действия как в Activeadmin, так и во внешнем интерфейсе сайта.Как я могу настроить ActiveAdmin на использование модели «Пользователи» со столбцом для отметки администратора (например, is_admin или событие уровня разрешений для администраторов и модераторов)?

Rails 3.1
ActiveAdmin 0.3.3
Devise 1.4.9

Ответы [ 2 ]

9 голосов
/ 13 февраля 2012

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

class ApplicationController < ActionController::Base
    def authenticate_admin_user! #use predefined method name
      redirect_to '/' and return if user_signed_in? && !current_user.is_admin? 
      authenticate_user! 
    end 
    def current_admin_user #use predefined method name
      return nil if user_signed_in? && !current_user.is_admin? 
      current_user 
    end 
end

И просто используйте то, что Devise уже настроил для аутентификации. redirect_to - это место, куда вы хотите отправлять пользователей, вошедших в систему и не имеющих прав администратора.

4 голосов
/ 13 февраля 2012

ActiveAdmin позволяет определить свои собственные методы аутентификации .Вы можете перенести свои пользовательские таблицы, чтобы иметь дополнительный столбец администратора и пометить в нем существующих администраторов, а затем установить методы аутентификации (как указано) в config/initializers/active_admin.rb.

...