Description
We are using ActiveAdmin's PunditAdapter to provide authorization of the ActiveAdmin controller actions. After we integrated activeadmin-searchable_select with AJAX, we ran into an issue with the *_options
controller actions. They would execute without first authorizing the request, and as a result would fail due to a Pundit::AuthorizationNotPerformedError
error.
We have worked around the problem by overriding the ActiveAdmin::SearchableSelect::ResourceDSLExtension:: searchable_select_options
method in an initializer, by calling an authorize
method (in our ApplicationController
class) prior to calling render
within the collection_action
block:
module ActiveAdmin
module SearchableSelect
module ResourceDSLExtension
def searchable_select_options(name: :all, **options)
option_collection = OptionCollection.new(name, options)
config.searchable_select_option_collections[name] = option_collection
collection_action(option_collection.collection_action_name) do
#--------------------------------------------------
# Customization
authorize :application
#--------------------------------------------------
render(json: option_collection.as_json(self, params))
end
end
end
end
end
While this works, we would prefer not to override/replace code in the gem. Would it be possible to enhance the gem to use ActiveAdmin's built-in authorization to authorize the *_options
requests?
Thanks,
Denis