kanbanworkflowstimelinescrumrubyroadmapproject-planningproject-managementopenprojectangularissue-trackerifcgantt-chartganttbug-trackerboardsbcf
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.
66 lines
1.4 KiB
66 lines
1.4 KiB
7 years ago
|
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
|