Changeset View
Changeset View
Standalone View
Standalone View
lib/puppet/provider/keycloak_realm/kcadm.rb
Show All 10 Lines | [ | ||||
:registration_flow, | :registration_flow, | ||||
:direct_grant_flow, | :direct_grant_flow, | ||||
:reset_credentials_flow, | :reset_credentials_flow, | ||||
:client_authentication_flow, | :client_authentication_flow, | ||||
:docker_authentication_flow, | :docker_authentication_flow, | ||||
] | ] | ||||
end | end | ||||
def self.smtp_server_properties | |||||
[ | |||||
:smtp_server_user, | |||||
:smtp_server_password, | |||||
:smtp_server_host, | |||||
:smtp_server_port, | |||||
:smtp_server_auth, | |||||
:smtp_server_starttls, | |||||
:smtp_server_ssl, | |||||
:smtp_server_envelope_from, | |||||
:smtp_server_from, | |||||
:smtp_server_from_display_name, | |||||
:smtp_server_reply_to, | |||||
:smtp_server_reply_to_display_name, | |||||
] | |||||
end | |||||
def self.browser_security_headers | def self.browser_security_headers | ||||
[ | [ | ||||
:content_security_policy, | :content_security_policy, | ||||
] | ] | ||||
end | end | ||||
def self.get_client_scopes(realm, type) | def self.get_client_scopes(realm, type) | ||||
output = kcadm('get', "realms/#{realm}/default-#{type}-client-scopes") | output = kcadm('get', "realms/#{realm}/default-#{type}-client-scopes") | ||||
▲ Show 20 Lines • Show All 53 Lines • ▼ Show 20 Lines | data.each do |d| | ||||
realm[:name] = d['realm'] | realm[:name] = d['realm'] | ||||
events_config = get_events_config(d['realm']) | events_config = get_events_config(d['realm']) | ||||
type_properties.each do |property| | type_properties.each do |property| | ||||
next if [:default_client_scopes, :optional_client_scopes].include?(property) | next if [:default_client_scopes, :optional_client_scopes].include?(property) | ||||
value = if property.to_s =~ %r{events} | value = if property.to_s =~ %r{events} | ||||
events_config[camelize(property)] | events_config[camelize(property)] | ||||
elsif browser_security_headers.include?(property) | elsif browser_security_headers.include?(property) | ||||
d['browserSecurityHeaders'][camelize(property)] | d['browserSecurityHeaders'][camelize(property)] | ||||
elsif smtp_server_properties.include?(property) | |||||
d['smtpServer'][camelize(property.to_s.gsub(%r{smtp_server_}, ''))] | |||||
else | else | ||||
d[camelize(property)] | d[camelize(property)] | ||||
end | end | ||||
if !!value == value # rubocop:disable Style/DoubleNegation | if !!value == value # rubocop:disable Style/DoubleNegation | ||||
value = value.to_s.to_sym | value = value.to_s.to_sym | ||||
end | end | ||||
realm[property.to_sym] = value | realm[property.to_sym] = value | ||||
end | end | ||||
Show All 22 Lines | def create | ||||
data[:id] = resource[:id] | data[:id] = resource[:id] | ||||
data[:realm] = resource[:name] | data[:realm] = resource[:name] | ||||
type_properties.each do |property| | type_properties.each do |property| | ||||
next if flow_properties.include?(property) | next if flow_properties.include?(property) | ||||
next if [:default_client_scopes, :optional_client_scopes].include?(property) | next if [:default_client_scopes, :optional_client_scopes].include?(property) | ||||
if self.class.browser_security_headers.include?(property) && !data.key?('browserSecurityHeaders') | if self.class.browser_security_headers.include?(property) && !data.key?('browserSecurityHeaders') | ||||
data['browserSecurityHeaders'] = {} | data['browserSecurityHeaders'] = {} | ||||
end | end | ||||
if self.class.smtp_server_properties.include?(property) && !data.key?('smtpServer') | |||||
data['smtpServer'] = {} | |||||
end | |||||
if property.to_s =~ %r{events} | if property.to_s =~ %r{events} | ||||
events_config[camelize(property)] = convert_property_value(resource[property.to_sym]) | events_config[camelize(property)] = convert_property_value(resource[property.to_sym]) | ||||
elsif resource[property.to_sym] | elsif resource[property.to_sym] | ||||
if self.class.browser_security_headers.include?(property) | if self.class.browser_security_headers.include?(property) | ||||
data['browserSecurityHeaders'][camelize(property)] = convert_property_value(resource[property.to_sym]) | data['browserSecurityHeaders'][camelize(property)] = convert_property_value(resource[property.to_sym]) | ||||
elsif self.class.smtp_server_properties.include?(property) && resource[property] | |||||
data['smtpServer'][camelize(property.to_s.gsub(%r{smtp_server_}, ''))] = resource[property] | |||||
else | else | ||||
data[camelize(property)] = convert_property_value(resource[property.to_sym]) | data[camelize(property)] = convert_property_value(resource[property.to_sym]) | ||||
end | end | ||||
end | end | ||||
end | end | ||||
t = Tempfile.new('keycloak_realm') | t = Tempfile.new('keycloak_realm') | ||||
t.write(JSON.pretty_generate(data)) | t.write(JSON.pretty_generate(data)) | ||||
▲ Show 20 Lines • Show All 100 Lines • ▼ Show 20 Lines | unless @property_flush.empty? | ||||
next if [:default_client_scopes, :optional_client_scopes].include?(property) | next if [:default_client_scopes, :optional_client_scopes].include?(property) | ||||
if flow_properties.include?(property) && !available_flows(resource[:name]).include?(resource[property.to_sym]) | if flow_properties.include?(property) && !available_flows(resource[:name]).include?(resource[property.to_sym]) | ||||
Puppet.warning("Keycloak_realm[#{resource[:name]}]: #{property} '#{resource[property.to_sym]}' does not exist, skipping") | Puppet.warning("Keycloak_realm[#{resource[:name]}]: #{property} '#{resource[property.to_sym]}' does not exist, skipping") | ||||
next | next | ||||
end | end | ||||
if self.class.browser_security_headers.include?(property) && !data.key?('browserSecurityHeaders') | if self.class.browser_security_headers.include?(property) && !data.key?('browserSecurityHeaders') | ||||
data['browserSecurityHeaders'] = {} | data['browserSecurityHeaders'] = {} | ||||
end | end | ||||
if @property_flush[property.to_sym] # || resource[property.to_sym] | if self.class.smtp_server_properties.include?(property) && !data.key?('smtpServer') | ||||
data['smtpServer'] = {} | |||||
end | |||||
if @property_flush[property.to_sym] || resource[property.to_sym] | |||||
if self.class.browser_security_headers.include?(property) | if self.class.browser_security_headers.include?(property) | ||||
data['browserSecurityHeaders'][camelize(property)] = convert_property_value(resource[property.to_sym]) | data['browserSecurityHeaders'][camelize(property)] = convert_property_value(resource[property.to_sym]) | ||||
elsif self.class.smtp_server_properties.include?(property) && resource[property] | |||||
data['smtpServer'][camelize(property.to_s.gsub(%r{smtp_server_}, ''))] = resource[property] | |||||
else | else | ||||
data[camelize(property)] = convert_property_value(resource[property.to_sym]) | data[camelize(property)] = convert_property_value(resource[property.to_sym]) | ||||
end | end | ||||
end | end | ||||
if property.to_s =~ %r{events} | if property.to_s =~ %r{events} | ||||
events_config[camelize(property)] = convert_property_value(resource[property.to_sym]) | events_config[camelize(property)] = convert_property_value(resource[property.to_sym]) | ||||
end | end | ||||
end | end | ||||
▲ Show 20 Lines • Show All 78 Lines • Show Last 20 Lines |