Files
codeocean/config/initializers/rails_admin.rb
Sebastian Serth fea8b5d6f6 Migrate RailsAdmin assets to Shakapacker
Resolves an issue with a strict CSP disabling inline `data` images. With Shakapacker and our current webpack config, we extract inline `data` images to dedicated files, thus resolving the issue.
2024-06-17 15:25:21 +02:00

104 lines
2.5 KiB
Ruby

# frozen_string_literal: true
RailsAdmin.config do |config|
config.asset_source = :webpacker
### Popular gems integration
## == Devise ==
# config.authenticate_with do
# warden.authenticate! scope: :user
# end
config.current_user_method(&:current_user)
## == CancanCan ==
# config.authorize_with :cancancan
## == Pundit ==
# config.authorize_with :pundit
config.authorize_with do
# Important! We need to check the authorization here, we skip Pundit checks in the RailsAdminController.
unless current_user&.admin?
flash[:alert] = t('application.not_authorized')
redirect_to main_app.root_path
end
end
## == PaperTrail ==
# config.audit_with :paper_trail, 'User', 'PaperTrail::Version' # PaperTrail >= 3.0.0
### More at https://github.com/sferik/rails_admin/wiki/Base-configuration
config.parent_controller = '::RailsAdminController'
config.excluded_models = %w[Generators::TestingFrameworkAdapterGenerator]
## == Gravatar integration ==
## To disable Gravatar integration in Navigation Bar set to false
config.show_gravatar = false
config.model 'CodeOcean::File' do
list { limited_pagination true }
end
# Disable some file associations to increase performance
%w[ExecutionEnvironment Exercise FileType Intervention ProxyExercise StudyGroup CodeOcean::File].each do |model|
config.model model do
columns = RailsAdmin::Config::Fields.factory(self).filter {|col| col.type.to_s.exclude?('association') }.map {|i| {i.name.to_sym => i.class} }
list do
columns.each do |hash|
key = hash.keys.first
field(key, hash[key].to_s.demodulize.underscore)
end
end
end
end
config.actions do
# mandatory
dashboard do
statistics false
end
index # mandatory
new
export
bulk_delete
show
edit
delete
show_in_app
## With an audit adapter, you can add:
# history_index
# history_show
end
# stolen from https://github.com/kaminari/kaminari/issues/162#issuecomment-52083985
if defined?(WillPaginate)
module WillPaginate
module ActiveRecord
module RelationMethods
def per(value = nil)
per_page(value)
end
def total_count
count
end
def first_page?
self == first
end
def last_page?
self == last
end
end
end
module CollectionMethods
alias num_pages total_pages
end
end
end
end