2012-05-03 10 views
2

私はRailsでActiveAdminを使用しています。管理者ユーザー以外のスーパーユーザーに管理されているサイトのセクションをロックしようとしています。メニューをバイパスした場合、ルートはまだ動作がActiveadmin非スーパーユーザーのアイテムへのアクセスを制限する

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

及び/管理/ admin_users

ロックするためのベストプラクティスは何ですか

に直接移動:

は、当然のことながら私はこのようなメニューオプションを非表示にすることができますActiveAdminの管理者のルートとコントローラを停止します。

答えて

1

cancanを試しましたか:https://github.com/ryanb/cancan?完璧な例であり要旨:リソースが登録されているコントローラブロックにbefore_filterを追加することができますhttps://gist.github.com/1264060

+1

私たちが望むならば避けるためにどのようなカンカン?私はリソースにbefore_filterを登録する方法を見つけるのに苦労しているので、current_user.administratorを確認するだけです。 Cancanはこのインスタンスでは過剰なようです。 –

8

、これは私のために働いている:

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からここに来て以来、私はこれがちょうどうまくいったことを指摘したいと思いますが、SuperAdmin以外のユーザーのUserAdmin CRUDは基本的に無効になっています。最近のRailsのバージョンでは、 'before_filter'は' before_action'のために変更する必要がありますが、残りはうまくいきます。 – Oxfist

関連する問題