私はrails_adminを使用していて、とても気に入りました。唯一の問題は、認証用のデバイスと組み合わされていることですが、私のアプリ全体がauthlogicを実装しています。既存のauthlogic認証に切り替えることができるようにデバイスを削除する方法はありません。私はそれをグーグルで検索しましたが、見つかりませんでした:(よろしく; Kshitiz
2 に答える
deviseの削除についてはわかりませんが、rails_adminをインストールするための要件のようです。そのため、使用しない場合でもインストールする必要があります。
ただし、 rails_admin で認証と承認に authlogic を使用するようにすることもできます。
- config/initializers フォルダーに、rails_admin.rb という名前の新しいファイルを作成します。
- 以下をファイル内に入れます (nifty_generators を使用したことに注意してください。そのため、ヘルパー メソッド
logged_in?
などを利用できます。セットアップで同等のメソッドを使用する必要がある場合があります)。 - 今すぐサーバーを再起動してください!
コード:
RailsAdmin.authenticate_with{
unless logged_in?
session[:return_to] = request.url
redirect_to login_url, :alert => "You must first log in or sign up before accessing this page."
end
}
RailsAdmin.authorize_with{
redirect_to root_path, :alert => "You are not authorized to access that page" unless current_user.admin? #or whatever you use for checking admins
}
最近CanCanに慣れてきましたが、これは優れた権限インターフェイスです。私はある時点でcancanをインストールしたいと思っていました。それは非常に文書化されていませんが、同じ答えを探しているときにRyanBatesによるrails_adminへのこのプルリクエストに遭遇しました。これをCanCanとRailsAdminの両方をインストールするための言い訳として使用しましたが、これまでのところ、少なくともこれらが非常にうまく適合していることを確認できます。
コミット手順は少し古いので、これが私のために働いたものです。
あなたの中でGemfile
gem 'rails_admin', :git => 'git://github.com/sferik/rails_admin.git'
のconfig/initializers/rails_admin.rb
RailsAdmin.config do |config|
config.authorize_with :cancan
end
あなたの能力で:
can :access, :rails_admin
can :history
あなたはおそらくすでにこれを知っていますが、慎重に、config/routes.rb
mount RailsAdmin::Engine => '/admin', :as => 'rails_admin'
最後に、あなたbundle install
が次のようにすれば、それは工夫を引き込まないでしょう!ハッキーですが、他の方法よりも優れています。
AUTHORIZATION_ADAPTER=cancan bundle install
とにかく、CanCanは必要ないかもしれませんが、必要な場合は、サポートされている(文書化されていない)方法でこの作業を行うことにおそらく驚かれることでしょう。