をアクティブに管理者へのアクセスを制限する方法trueにその属性<code>is_admin</code>セットを持っているだけで、私のユーザーは私のアクティブな管理者のバックエンドにアクセスできるようにすることを私はしたい管理ユーザーへ
私はこれをどのようにしたらよいでしょうか?
「通常」のユーザーは、アクティブな管理者ではなく、サイトにログインすることができます。
をアクティブに管理者へのアクセスを制限する方法trueにその属性<code>is_admin</code>セットを持っているだけで、私のユーザーは私のアクティブな管理者のバックエンドにアクセスできるようにすることを私はしたい管理ユーザーへ
私はこれをどのようにしたらよいでしょうか?
「通常」のユーザーは、アクティブな管理者ではなく、サイトにログインすることができます。
! ApplicationControllerでは、ActiveAdminはユーザーが管理ページに移動できるかどうかをチェックします。このように:
# restrict access to admin module for non-admin users
def authenticate_admin_user!
raise SecurityError unless current_user.try(:admin?)
end
とApplicationControllerにでその例外からの救出(またはあなたが実際にauthenticate_admin_user!
メソッドの内部でリダイレクトすることができます)
rescue_from SecurityError do |exception|
redirect_to root_url
end
そして、もう一つの小さなこと、あなたがして、admin_usersを持っていない場合config/initializers/active_admin.rb
にこの行を変更するとよいでしょう:
config.current_user_method = :current_user
と工夫で、あなたは管理者のデフォルトのパスが異なるようにしたいかもしれません/非管理者ユーザーは、adminユーザーがあまりにもサイトのフロント部分を使用することができるはずなので、私がやりたいことはありませんコントローラ
# path for redirection after user sign_in, depending on user role
def after_sign_in_path_for(user)
user.admin? ? admin_dashboard_path : root_path
end
「通常の」ユーザーの場合は、サイトにログインするための別のロジックを記述する必要があります。または、ユーザーがアクティブな管理者を介してログインできるようにする理由がわからないことがあります。 アクティブな管理者deviseを使用して、Userという別のモデルを作成してください。あなたはauthenticate_admin_userという名前のメソッドを作成した場合ので、
config.authentication_method = :authenticate_admin_user!
:あなたは、このような設定を持っているconfig/initializers/active_admin.rb
で
んでafter_sign_in_path_for
方法を定義することができるように。私は1つのユーザーモデルしか持たないことをお勧めします。 –
これは良い解決策のようですが、current_userはApplicationController内で利用できないようです...他の場所に置くことはできませんか? –
mmコントローラは実際には最も使用される場所です。どのような問題がありますか?それはnilまたはNoMethodErrorを返しますか? – alony
nilを返します。 '未定義のメソッド 'admin?' nilのための:NilClass'。私は.adminを定義しましたか?それはそうではありません。私は、ApplicationControllerで利用できないcurrent_userのいくつかのケースを見つけました。あなたがそこからアクセスすることになっていないようです。 –