2017-06-23 21:19:08 +08:00
|
|
|
require_relative 'boot'
|
2016-02-12 23:52:43 +08:00
|
|
|
|
2022-01-07 18:20:11 +08:00
|
|
|
require 'rails'
|
|
|
|
|
|
|
|
%w(
|
|
|
|
active_record/railtie
|
|
|
|
active_storage/engine
|
|
|
|
action_controller/railtie
|
|
|
|
action_view/railtie
|
|
|
|
action_mailer/railtie
|
|
|
|
active_job/railtie
|
|
|
|
sprockets/railtie
|
|
|
|
).each do |railtie|
|
|
|
|
begin
|
|
|
|
require railtie
|
|
|
|
rescue LoadError
|
|
|
|
end
|
|
|
|
end
|
2016-02-12 23:52:43 +08:00
|
|
|
|
|
|
|
# Require the gems listed in Gemfile, including any gems
|
|
|
|
# you've limited to :test, :development, or :production.
|
|
|
|
Bundler.require(*Rails.groups)
|
|
|
|
|
|
|
|
module Scinote
|
|
|
|
class Application < Rails::Application
|
2017-06-23 21:19:08 +08:00
|
|
|
# Initialize configuration defaults for originally generated Rails version.
|
2019-09-19 19:21:32 +08:00
|
|
|
config.load_defaults 6.0
|
|
|
|
|
|
|
|
Rails.autoloaders.main.ignore(Rails.root.join('addons', '*', 'app', 'decorators'))
|
2019-09-16 16:26:13 +08:00
|
|
|
|
2019-09-17 16:50:01 +08:00
|
|
|
# config.add_autoload_paths_to_load_path = false
|
2019-09-16 16:26:13 +08:00
|
|
|
|
|
|
|
config.active_record.schema_format = :sql
|
2017-06-23 21:19:08 +08:00
|
|
|
|
2016-02-12 23:52:43 +08:00
|
|
|
# Settings in config/environments/* take precedence over those specified here.
|
|
|
|
# Application configuration should go into files in config/initializers
|
|
|
|
# -- all .rb files in that directory are automatically loaded.
|
|
|
|
|
2018-10-11 15:48:06 +08:00
|
|
|
# Add rack-attack middleware for request rate limiting
|
|
|
|
config.middleware.use Rack::Attack
|
|
|
|
|
2018-04-05 18:54:14 +08:00
|
|
|
# Swap the Rack::MethodOverride with a wrapped middleware for WOPI handling
|
|
|
|
require_relative '../app/middlewares/wopi_method_override'
|
|
|
|
config.middleware.swap Rack::MethodOverride, WopiMethodOverride
|
|
|
|
|
2017-11-16 22:50:30 +08:00
|
|
|
# Load all model concerns, including subfolders
|
|
|
|
config.autoload_paths += Dir["#{Rails.root}/app/models/concerns/**/*.rb"]
|
|
|
|
|
2019-03-06 17:34:04 +08:00
|
|
|
config.i18n.load_path += Dir[Rails.root.join('config', 'locales', '**', '*.{rb,yml}')]
|
|
|
|
|
2017-04-13 23:00:27 +08:00
|
|
|
config.encoding = 'utf-8'
|
|
|
|
|
2016-02-12 23:52:43 +08:00
|
|
|
config.active_job.queue_adapter = :delayed_job
|
|
|
|
|
2018-06-19 20:15:14 +08:00
|
|
|
# Max uploaded file size in MB
|
|
|
|
config.x.file_max_size_mb = (ENV['FILE_MAX_SIZE_MB'] || 50).to_i
|
|
|
|
|
2021-08-26 20:08:15 +08:00
|
|
|
config.x.webhooks_enabled = ENV['ENABLE_WEBHOOKS'] == 'true'
|
|
|
|
|
2023-03-22 19:15:01 +08:00
|
|
|
config.x.connected_devices_enabled = ENV['CONNECTED_DEVICES_ENABLED'] == 'true'
|
|
|
|
|
2016-02-12 23:52:43 +08:00
|
|
|
# Logging
|
|
|
|
config.log_formatter = proc do |severity, datetime, progname, msg|
|
|
|
|
"[#{datetime}] #{severity}: #{msg}\n"
|
|
|
|
end
|
|
|
|
|
2018-05-21 21:11:12 +08:00
|
|
|
# SciNote Core Application version
|
2017-07-10 15:26:35 +08:00
|
|
|
VERSION = File.read(Rails.root.join('VERSION')).strip.freeze
|
2018-08-17 17:59:47 +08:00
|
|
|
|
|
|
|
# Doorkeeper overrides
|
|
|
|
config.to_prepare do
|
|
|
|
# Only Authorization endpoint
|
|
|
|
Doorkeeper::AuthorizationsController.layout 'sign_in_halt'
|
2023-02-13 18:32:18 +08:00
|
|
|
|
|
|
|
# Add Connected Device logging
|
|
|
|
Doorkeeper::TokensController.class_eval do
|
|
|
|
after_action :log_connected_device, only: :create
|
|
|
|
|
|
|
|
private
|
|
|
|
|
|
|
|
def log_connected_device
|
|
|
|
return if @authorize_response.is_a?(Doorkeeper::OAuth::ErrorResponse)
|
|
|
|
|
|
|
|
ConnectedDevice.from_request_headers(request.headers, @authorize_response&.token)
|
|
|
|
end
|
|
|
|
end
|
2018-08-17 17:59:47 +08:00
|
|
|
end
|
2022-10-18 17:54:10 +08:00
|
|
|
|
|
|
|
config.action_view.field_error_proc = Proc.new { |html_tag, instance|
|
|
|
|
"<div class=\"field_with_errors sci-input-container\">#{html_tag}</div>".html_safe
|
|
|
|
}
|
2016-02-12 23:52:43 +08:00
|
|
|
end
|
|
|
|
end
|