Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fixes #37469 - Support Zeitwerk loader #75

Merged
merged 1 commit into from
Sep 10, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion db/migrate/20201014115147_rename_ca_file_column.rb
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# frozen_string_literal: true

class RenameCaFileColumn < ActiveRecord::Migration[6.0]
class RenameCAFileColumn < ActiveRecord::Migration[6.0]
def change
rename_column :webhooks, :ssl_ca_file, :ssl_ca_certs
end
Expand Down
124 changes: 62 additions & 62 deletions lib/foreman_webhooks/engine.rb
Original file line number Diff line number Diff line change
Expand Up @@ -4,85 +4,85 @@ module ForemanWebhooks
class Engine < ::Rails::Engine
engine_name 'foreman_webhooks'

config.autoload_paths += Dir["#{config.root}/app/jobs"]

# Add any db migrations
initializer 'foreman_webhooks.load_app_instance_data' do |app|
ForemanWebhooks::Engine.paths['db/migrate'].existent.each do |path|
app.config.paths['db/migrate'] << path
end
end

initializer 'foreman_webhooks.register_plugin', before: :finisher_hook do |_app|
Foreman::Plugin.register :foreman_webhooks do
requires_foreman '>= 3.7'
register_gettext
initializer 'foreman_webhooks.register_plugin', before: :finisher_hook do |app|
app.reloader.to_prepare do
Foreman::Plugin.register :foreman_webhooks do
requires_foreman '>= 3.13'
register_gettext

apipie_documented_controllers ["#{ForemanWebhooks::Engine.root}/app/controllers/api/v2/*.rb"]
ApipieDSL.configuration.sections += ['webhooks']
ApipieDSL.configuration.dsl_classes_matchers += [
"#{ForemanWebhooks::Engine.root}/app/lib/foreman_webhooks/renderer/**/*.rb"
]
apipie_documented_controllers ["#{ForemanWebhooks::Engine.root}/app/controllers/api/v2/*.rb"]
ApipieDSL.configuration.sections += ['webhooks']
ApipieDSL.configuration.dsl_classes_matchers += [
"#{ForemanWebhooks::Engine.root}/app/lib/foreman_webhooks/renderer/**/*.rb"
]

register_global_js_file 'routes'
register_global_js_file 'routes'

# Add permissions
security_block :foreman_webhooks do
permission :view_webhooks, { webhooks: %i[index show auto_complete_search],
'api/v2/webhooks': %i[index show events] }, resource_type: 'Webhook'
permission :create_webhooks, { webhooks: %i[new create],
'api/v2/webhooks': [:create] }, resource_type: 'Webhook'
permission :edit_webhooks, { webhooks: %i[edit update],
'api/v2/webhooks': %i[update test] }, resource_type: 'Webhook'
permission :destroy_webhooks, { webhooks: [:destroy],
'api/v2/webhooks': [:destroy] }, resource_type: 'Webhook'
permission :view_webhook_templates, { webhook_templates: %i[index show auto_complete_search preview export],
'api/v2/webhook_templates': %i[index show export] },
resource_type: 'WebhookTemplate'
permission :create_webhook_templates, { webhook_templates: %i[new create clone_template],
'api/v2/webhook_templates': %i[create clone import] },
resource_type: 'WebhookTemplate'
permission :edit_webhook_templates, { webhook_templates: %i[edit update],
'api/v2/webhook_templates': %i[update import] },
resource_type: 'WebhookTemplate'
permission :destroy_webhook_templates, { webhook_templates: [:destroy],
'api/v2/webhook_templates': [:destroy] },
resource_type: 'WebhookTemplate'
permission :lock_webhook_templates, { webhook_templates: %i[lock unlock],
'api/v2/webhook_templates': %i[lock unlock] },
resource_type: 'WebhookTemplate'
end
# Add permissions
security_block :foreman_webhooks do
permission :view_webhooks, { webhooks: %i[index show auto_complete_search],
'api/v2/webhooks': %i[index show events] }, resource_type: 'Webhook'
permission :create_webhooks, { webhooks: %i[new create],
'api/v2/webhooks': [:create] }, resource_type: 'Webhook'
permission :edit_webhooks, { webhooks: %i[edit update],
'api/v2/webhooks': %i[update test] }, resource_type: 'Webhook'
permission :destroy_webhooks, { webhooks: [:destroy],
'api/v2/webhooks': [:destroy] }, resource_type: 'Webhook'
permission :view_webhook_templates, { webhook_templates: %i[index show auto_complete_search preview export],
'api/v2/webhook_templates': %i[index show export] },
resource_type: 'WebhookTemplate'
permission :create_webhook_templates, { webhook_templates: %i[new create clone_template],
'api/v2/webhook_templates': %i[create clone import] },
resource_type: 'WebhookTemplate'
permission :edit_webhook_templates, { webhook_templates: %i[edit update],
'api/v2/webhook_templates': %i[update import] },
resource_type: 'WebhookTemplate'
permission :destroy_webhook_templates, { webhook_templates: [:destroy],
'api/v2/webhook_templates': [:destroy] },
resource_type: 'WebhookTemplate'
permission :lock_webhook_templates, { webhook_templates: %i[lock unlock],
'api/v2/webhook_templates': %i[lock unlock] },
resource_type: 'WebhookTemplate'
end

role 'Webhooks Reader',
%i[view_webhooks view_webhook_templates]
role 'Webhooks Reader',
%i[view_webhooks view_webhook_templates]

role 'Webhooks Manager',
%i[view_webhooks create_webhooks edit_webhooks destroy_webhooks
view_webhook_templates create_webhook_templates
edit_webhook_templates destroy_webhook_templates
lock_webhook_templates]
role 'Webhooks Manager',
%i[view_webhooks create_webhooks edit_webhooks destroy_webhooks
view_webhook_templates create_webhook_templates
edit_webhook_templates destroy_webhook_templates
lock_webhook_templates]

# add menu entry
divider :admin_menu, caption: N_('Webhook'), parent: :administer_menu
menu :admin_menu, :webhooks, url: '/webhooks',
url_hash: { controller: :webhooks, action: :index },
caption: N_('Webhooks'),
parent: :administer_menu
menu :admin_menu, :webhook_templates, url_hash: { controller: :webhook_templates, action: :index },
caption: N_('Webhook Templates'),
parent: :administer_menu
# add menu entry
divider :admin_menu, caption: N_('Webhook'), parent: :administer_menu
menu :admin_menu, :webhooks, url: '/webhooks',
url_hash: { controller: :webhooks, action: :index },
caption: N_('Webhooks'),
parent: :administer_menu
menu :admin_menu, :webhook_templates, url_hash: { controller: :webhook_templates, action: :index },
caption: N_('Webhook Templates'),
parent: :administer_menu

# add helpers to safe-mode
allowed_template_helpers :payload
# add helpers to safe-mode
allowed_template_helpers :payload

# subscribe to all events
subscribe(/.event.foreman$/, ::ForemanWebhooks::EventSubscriber)
# subscribe to all events
subscribe(/.event.foreman$/, ::ForemanWebhooks::EventSubscriber)

register_graphql_query_field :webhook, 'ForemanWebhooks::Types::Webhook', :record_field
register_graphql_query_field :webhooks, 'ForemanWebhooks::Types::Webhook', :collection_field
register_graphql_query_field :webhook, 'ForemanWebhooks::Types::Webhook', :record_field
register_graphql_query_field :webhooks, 'ForemanWebhooks::Types::Webhook', :collection_field

register_graphql_query_field :webhook_template, 'ForemanWebhooks::Types::WebhookTemplate', :record_field
register_graphql_query_field :webhook_templates, 'ForemanWebhooks::Types::WebhookTemplate', :collection_field
register_graphql_query_field :webhook_template, 'ForemanWebhooks::Types::WebhookTemplate', :record_field
register_graphql_query_field :webhook_templates, 'ForemanWebhooks::Types::WebhookTemplate', :collection_field
end
end
end

Expand Down