Files
manyfold/app/controllers/settings_controller.rb
T

111 lines
4.4 KiB
Ruby

class SettingsController < ApplicationController
before_action :check_owner_permission
before_action { SiteSettings.clear_cache }
def update
# Save site-wide settings if user is an admin
update_library_settings(params[:libraries])
update_appearance_settings(params[:appearance])
update_file_settings(params[:files])
update_tagging_settings(params[:model_tags])
update_multiuser_settings(params[:multiuser])
update_analysis_settings(params[:analysis])
update_usage_settings(params[:usage])
update_derivatives_settings(params[:derivatives])
update_discovery_settings(params[:discovery])
update_integrations_settings(params[:integrations])
redirect_back_or_to settings_path, notice: t(".success")
end
private
def update_file_settings(settings)
return unless settings
regexes = settings[:model_ignored_files].lines.map { |p| p.chomp.to_regexp }
SiteSettings.model_ignored_files = regexes unless regexes.any?(&:nil?)
end
def update_appearance_settings(settings)
return unless settings
SiteSettings.site_name = settings[:site_name]
SiteSettings.site_tagline = settings[:site_tagline]
SiteSettings.theme = settings[:theme]
SiteSettings.default_landing_page = settings[:default_landing_page]
SiteSettings.about = settings[:about]
SiteSettings.rules = settings[:rules]
SiteSettings.support_link = settings[:support_link]
SiteSettings.site_icon = begin
URI.parse(settings[:site_icon])
settings[:site_icon]
rescue URI::InvalidURIError
nil
end
end
def update_library_settings(settings)
return unless settings
SiteSettings.show_libraries = settings[:show] == "1"
end
def update_tagging_settings(settings)
return unless settings
SiteSettings.model_tags_filter_stop_words = settings[:filter_stop_words] == "1"
SiteSettings.model_tags_tag_model_directory_name = settings[:tag_model_directory_name] == "1"
SiteSettings.model_tags_stop_words_locale = settings[:stop_words_locale]
SiteSettings.model_tags_custom_stop_words = settings[:custom_stop_words].split
SiteSettings.model_tags_auto_tag_new = settings[:auto_tag_new]
end
def update_analysis_settings(settings)
return unless settings
SiteSettings.analyse_manifold = settings[:manifold] == "1"
end
def update_multiuser_settings(settings)
return unless settings
SiteSettings.registration_enabled = (settings[:registration_open])
SiteSettings.approve_signups = (settings[:approve_signups])
SiteSettings.default_signup_role = settings[:default_signup_role]
SiteSettings.autocreate_creator_for_new_users = settings[:autocreate_creator_for_new_users]
SiteSettings.default_viewer_role = settings[:default_viewer_role]
SiteSettings.enable_user_quota = (settings[:enable_user_quota].presence)
SiteSettings.default_user_quota = (settings[:default_user_quota].to_i * 1.megabyte)
end
def update_usage_settings(settings)
return unless settings
(settings[:report] == "1") ? UsageReport.enable! : UsageReport.disable!
end
def update_discovery_settings(settings)
return unless settings
SiteSettings.allow_robots = settings[:allow_robots] == "1"
SiteSettings.allow_ai_bots = settings[:allow_ai_bots] == "1"
SiteSettings.default_indexable = settings[:default_indexable] == "1"
SiteSettings.default_ai_indexable = settings[:default_ai_indexable] == "1"
end
def update_derivatives_settings(settings)
return unless settings
SiteSettings.pregenerate_downloads = (settings[:pregenerate_downloads] == "1")
SiteSettings.download_expiry_time_in_hours = (settings[:download_expiry].to_i)
SiteSettings.generate_image_derivatives = (settings[:image_derivatives] == "1")
SiteSettings.generate_model_renders = (settings[:model_renders] == "1")
# Trigger background jobs if enabled
Upgrade::BackfillImageDerivatives.perform_later if SiteSettings.generate_image_derivatives
Upgrade::BackfillModelRenders.perform_later if SiteSettings.generate_model_renders
end
def update_integrations_settings(settings)
return unless settings
SiteSettings.cults3d_api_username = settings[:cults3d_api_username]
SiteSettings.cults3d_api_key = settings[:cults3d_api_key]
SiteSettings.myminifactory_api_key = settings[:myminifactory_api_key]
SiteSettings.thingiverse_api_key = settings[:thingiverse_api_key]
end
def check_owner_permission
authorize :settings
end
end