Voici quelques idées :
# app/controllers/application_controller.rb
class ApplicationController < ActionController::Base
# ...
http_basic_authenticate_with :name => "frodo", :password => "thering", :if => :admin_controller?
def admin_controller?
self.class < ActiveAdmin::BaseController
end
Ou, la version monkeypatching
# config/initializers/active_admin.rb
# somewhere outside the setup block
class ActiveAdmin::BaseController
http_basic_authenticate_with :name => "frodo", :password => "thering"
end
Si vous souhaitez uniquement protéger des ressources spécifiques, vous pouvez utiliser le bloc contrôleur :
# app/admin/users.rb
ActiveAdmin.register Users do
controller do
http_basic_authenticate_with :name => "frodo", :password => "thering"
end
# ...
end
J'espérais pouvoir étendre le contrôleur de cette manière dans config/initializers/active_admin.rb
dans le bloc de configuration, mais cela n'a pas fonctionné pour moi :
# app/admin/users.rb
ActiveAdmin.setup do |config|
config.controller do
http_basic_authenticate_with :name => "frodo", :password => "thering"
end
# ...
end
Vous pouvez cependant essayer, car il pourrait s'agir d'un problème de version d'ActiveAdmin (j'aurais juré avoir vu cela documenté quelque part...).
Bonne chance, j'espère que cela vous aidera.
UPDATE : Quelques options supplémentaires :
Je n'avais pas réalisé auparavant que :before_filter dans la configuration activeadmin prend un bloc.
# config/initializers/active_admin.rb
ActiveAdmin.setup do |config|
# ...
config.before_filter do
authenticate_or_request_with_http_basic("Whatever") do |name, password|
name == "frodo" && password == "thering"
end
end
end
Et... juste une autre idée. On dirait que vous ne tenez pas à ajouter quoi que ce soit à application_controller, mais cette version n'est pas conditionnelle comme la première ci-dessus :
# app/controllers/application_controller.rb
class ApplicationController < ActionController::Base
def authenticate_admin
authenticate_or_request_with_http_basic("Whatever") do |name, password|
name == "frodo" && password == "thering"
end
end
end
# config/initializers/active_admin.rb
ActiveAdmin.setup do |config|
# ...
config.authentication_method = :authenticate_admin
end