2012-02-12 1 views
9

프로젝트 초기에 ActiveAdmin을 설정하고 인증을 위해 기본 admin_users 모델을 사용했습니다. 이후 Devise를 사용하여 별도의 사용자 모델을 설정했으며 두 테이블을 병합하는 것이 훨씬 더 똑똑해 져서 관리자가 Activeadmin과 사이트 프런트 엔드 모두에서 관리 작업을 수행 할 수 있음을 깨달았습니다. 어쩌면 열과 함께 사용자 모델을 사용하여 관리자에게 플래그를 지정하도록 ActiveAdmin을 구성 할 수 있습니까 (예 : is_admin 또는 이벤트 관리자 및 중재자를 만들기위한 권한 수준)?기존 사용자 모델로 ActiveAdmin 사용자 병합

Rails 3.1 
ActiveAdmin 0.3.3 
Devise 1.4.9 

답변

9

activeadmin을 사용하여 기존 "사용자"모델을 사용하여이를 수행하는 방법에 대한 빠른 코드 블록은 실제로 실제로 쉽게 대답 할 수 있습니다. ApplicationController :

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

ActiveAdmin 너 define your own authentication methods이라고합시다. 사용자 테이블을 마이그레이션하여 추가 관리 열을 추가하고 기존 관리자를 그대로 표시 한 다음 지정된 방법대로 인증 방법을 config/initializers/active_admin.rb으로 설정할 수 있습니다.

+0

+1 나는 당신이 나에게 올바른 답을주고 있다고 믿기 때문에. 나는'application_controller'에 새로운 메소드를 만들 것이라고 가정하고 있습니까? 하지만 기존의 조치를 고안하지 않고 현재의 Devise 인증을 통합하려면 어떻게해야합니까? –

+0

기존 Devise 메서드가 작동하는 경우에는 심볼로 ActiveAdmin에 전달하면됩니다. 그렇지 않으면 애플리케이션을 오버라이드하거나 새로운 메소드를 정의 할 수 있습니다 ('ApplicationController'는 꽤 일반적인 장소입니다). – coreyward