2012-05-03 45 views
2

我在Rails上使用ActiveAdmin,並試圖鎖定維護管理員用戶到非超級用戶的部分。Activeadmin限制訪問非超級用戶的項目

當然,我可以隱藏這樣的菜單選項:

ActiveAdmin.register AdminUser do 
    menu :parent => "Settings", :if => proc { current_admin_user.superuser } 
end 

然而途徑,如果你繞過菜單仍然有效,直接進入/管理/ admin_users

什麼是鎖定的最佳實踐在ActiveAdmin中關閉管理員的路由和控制器。

回答

1

你嘗試過康康:https://github.com/ryanb/cancan?這裏有很好的例子一個要點:https://gist.github.com/1264060

+1

如果我們想避免可以可以?我正在努力尋找一種方法在資源上註冊before_filter,以便我可以檢查current_user.administrator?在這種情況下,康康似乎過分了。 –

8

您可以將的before_filter添加到資源註冊控制器塊,這是爲我工作:

ActiveAdmin.register User do 

    menu :if => proc{ current_user.superadmin? } 

    controller do 
    before_filter :superadmin_filter 

    def superadmin_filter 
     raise ActionController::RoutingError.new('Not Found') unless current_user.superadmin? 
    end 
    end 

source

+0

由於我從Google來到這裏,我想指出這適用於我,它基本上禁用任何非超級用戶的UserAdmin CRUD。使用最近的Rails版本'before_filter'應該改爲'before_action',但其餘的工作很好。 – Oxfist