OpenProject is the leading open source project management software.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
openproject/app/models/permitted_params/allowed_settings.rb

66 lines
1.4 KiB

class PermittedParams
module AllowedSettings
class Restriction
attr_reader :restricted_keys, :condition
def initialize(restricted_keys, condition)
@restricted_keys = restricted_keys
@condition = condition
end
def applicable?
if condition.respond_to? :call
condition.call
else
condition
end
end
end
module_function
def all
keys = Setting.available_settings.keys
restrictions.select(&:applicable?).each do |restriction|
restricted_keys = restriction.restricted_keys
keys.delete_if { |key| restricted_keys.include? key }
end
keys
end
def add_restriction!(keys:, condition:)
restrictions << Restriction.new(keys, condition)
end
def restrictions
@restrictions ||= []
end
def init!
password_keys = %w(
password_min_length
password_active_rules
password_min_adhered_rules
password_days_valid
password_count_former_banned
lost_password
)
add_restriction!(
keys: password_keys,
condition: -> { OpenProject::Configuration.disable_password_login? }
)
add_restriction!(
keys: %w(registration_footer),
condition: -> { OpenProject::Configuration.registration_footer.present? }
)
end
init!
end
end