Ich versuche, Anmeldungen auf einen Devise-Administrator zu beschränken. Wenn möglich, möchte ich CanCan vorerst nicht verwenden. Ich habe ein separates Devise-Admin-Modell erstellt, wie in Option 1 beschrieben: https://github.com/plataformatec/devise/wiki/How-To:-Add-an-Admin-Role.Wie kann ich die Anmeldung auf Admin mit Devise beschränken?
Als nächstes habe ich eine CRUD-Schnittstelle für Benutzer wie hier beschrieben eingerichtet: https://github.com/plataformatec/devise/wiki/How-To:-Manage-users-through-a-CRUD-interface.
Ich möchte Neuanmeldungen beschränken, indem Sie so etwas wie before_filter :authenticate_admin!
in der Benutzer-Controller verwenden, aber aus irgendeinem Grund ist es nicht Neuanmeldungen zu beschränken.
sieht Mein routes.rb dies wie:
devise_for :admins
devise_for :users, :path_prefix => 'd'
resources :admins
resources :users, :controller => "users"
Irgendwelche Ideen, warum before_filter :authenticate_admin!
ist Neuanmeldungen nicht zu beschränken?
Sie sollten 'before_filter: authenticate_admin!' Verwenden, wenn Sie eine Administratorrolle hinzufügen. Dies funktioniert derzeit für mich in einem Users Index und show action (zur Verwaltung von Benutzern als admin). Ich bin mir nicht sicher, warum es nicht an der Create-Aktion arbeitet. Ich möchte nicht entfernen: registrierbar, weil ich möchte, dass Administratoren Benutzer hinzufügen können. – Scott
Hallo Scott, du musst keine neue 'create' Aktion definieren. Wenn Sie in den Quellcode von devise schauen, finden Sie unter 'app/controllers/devise/registrations_controller.rb' devise alles für Sie, außer diesen Aktionen,' authenticate_scope! ', Was eine abstrakte Methode für' authenticate_admin ist! 'in Ihrem Fall, ist vorangestellt und funktioniert nur für **' edit destroy update' ** diese drei Aktionen. Wenn Sie wirklich 'authenticate_admin!' Filter hinzufügen möchten, um eine Aktion zu erstellen, können Sie von 'Devise :: RegistrationsController' übernehmen und' prepend_before_filter: authenticate_scope !,: except => [: cancel] 'hinzufügen. – Tomato
Ich entschied, dass dies zu kompliziert wurde, nur unter Verwendung von Devise, also fügte ich CanCan hinzu, was großartig funktionierte. Danke für die Hilfe. – Scott