2013-10-16 13 views
5

Tôi có một ứng dụng yêu cầu ba loại Người dùng (Người dùng, Đại lý, Quản trị) với thông tin đăng nhập và yêu cầu các mô-đun lập khác nhau.Xử lý nhiều hơn một kiểu quản trị đăng nhập với ActiveAdmin

     User AgentAdmin AdminUser 

confirmable    Yes  Yes   No 
lockable     Yes  Yes   No 
timeoutable    No  Yes   Yes 
Omniauthable    Yes  No   No 
database_authenticatable Yes  Yes   Yes 
recoverable    Yes  Yes   No 
rememberable    Yes  Yes   No 
trackable    Yes  Yes   Yes 
validatable    Yes  Yes   Yes 

Những người dùng này có thể có thêm cột dựa trên loại của họ. Vì vậy, tôi muốn tạo các bảng khác nhau dựa trên loại của chúng.

Tùy thuộc vào yêu cầu của tôi, tôi quyết định để xử lý AgentAdminAdminUser với ActiveAdmin với namespace khác nhau (quản trị cho AdminUser, đại lý cho AgentAdmin). Tôi đã định cấu hình authentication_method, current_user_methodlogout_link_path cho cả hai không gian tên này như dưới đây.

config.load_paths = [File.join(Rails.root,'app','admin'), File.join(Rails.root,'app','agent')] 

config.namespace :admin do |admin| 
    admin.authentication_method = :authenticate_admin_user! 
    admin.current_user_method = :current_admin_user 
    admin.logout_link_path = :destroy_admin_user_session_path 
end 

config.namespace :agent do |agent| 
    agent.authentication_method = :authenticate_agent_admin! 
    agent.current_user_method = :current_agent_admin 
    agent.logout_link_path = :destroy_agent_admin_session_path 
end 

Tôi có đoạn code sau trong routes.rb tôi:

devise_for :agent_admins, ActiveAdmin::Devise.config 
devise_for :admin_users, ActiveAdmin::Devise.config 
ActiveAdmin.routes(self) 

này tạo ra đường dẫn đăng nhập chỉ cho admin_users. Nếu tôi đặt config.default_namespace = :agent trong tệp cấu hình active_admin.rb, đường dẫn đăng nhập cho agent_admin được tạo, nhưng không phải là admin_users.

Tất cả các đường dẫn ActiveAdmin khác được tạo bình thường cho cả hai không gian tên.

Làm cách nào để giải quyết, để tạo cả hai đường dẫn login được xử lý bởi activedmin?

Trả lời

10
devise_for :agent_admins, ActiveAdmin::Devise.config.merge({path: '/agent'}) 
devise_for :admin_users, ActiveAdmin::Devise.config 
ActiveAdmin.routes(self) 

Điều này giải quyết được vấn đề.

Các vấn đề liên quan