簡體   English   中英

無需使用cancan或rolify進行主動管理員的權限管理

[英]Permission management without using cancan or rolify for active admin

我在應用程序之一中要求使用活動管理員作為管理面板,並且我已將devise用於身份驗證目的。

現在,我們有三種類型的用戶,super_admin admin和普通用戶。 超級管理員和管理員將具有不同的功能,我們應該使用相同的活動管理員界面。

這里的問題是因為設計不允許兩個模型

devise_for:admins,ActiveAdmin :: Devise.config

devise_for:super_admins,ActiveAdmin :: Devise.config

我們不能在路由中同時使用這兩種方法來區分用戶類型與路由,並且由於我們未使用角色管理系統(例如cancan),而是使用user中的type字段,因此無法在活動管理員中確定用戶類型的范圍。

因此,任何人都可以幫助我找到使用兩種類型的管理員(超級管理員和管理員)使用主動管理員的方法。 通過使用類型而不使用角色管理。

謝謝。

盡管可能真的會通過將授權下推到身份驗證層來使您陷入困境。

這將使您的Devise設置真正值得信賴,如果您自己的還需要設置授權層,例如:

(current_super_admin || current_admin).is_a?(SuperAdmin) # yuck

最后,您將獲得一個極為復雜的身份驗證層和一個糟糕的家庭授權系統。 兩者都是災難的秘訣。

如果您需要能夠授予/撤消特權,這也不太理想,因為您需要將用戶數據從一個表轉移到另一個表,以及用戶可能具有的任何關系。

如果您想廉價地扮演角色,則只需使用一個枚舉列:

rails g migration add_role_to_user role:integer:index

class User
  enum role: [:peasant, :admin, :super_admin]
end

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM