From e04d4196532755dda73cdeb969f78ebff62746e3 Mon Sep 17 00:00:00 2001
From: Alexander Olofsson <alexander.olofsson@liu.se>
Date: Tue, 29 Oct 2024 11:48:37 +0100
Subject: [PATCH] Assign action permission correctly for discovery

---
 .../discovered_hosts_controller_extensions.rb         | 11 +++++++++++
 .../foreman_wds/hosts_controller_extensions.rb        |  2 +-
 lib/foreman_wds/engine.rb                             |  1 +
 3 files changed, 13 insertions(+), 1 deletion(-)
 create mode 100644 app/controllers/concerns/foreman_wds/discovered_hosts_controller_extensions.rb

diff --git a/app/controllers/concerns/foreman_wds/discovered_hosts_controller_extensions.rb b/app/controllers/concerns/foreman_wds/discovered_hosts_controller_extensions.rb
new file mode 100644
index 0000000..61ddb46
--- /dev/null
+++ b/app/controllers/concerns/foreman_wds/discovered_hosts_controller_extensions.rb
@@ -0,0 +1,11 @@
+# frozen_string_literal: true
+
+module ForemanWds
+  module DiscoveredHostsControllerExtensions
+    def action_permission
+      return :edit if params[:action] == 'wds_server_selected'
+
+      super
+    end
+  end
+end
diff --git a/app/controllers/concerns/foreman_wds/hosts_controller_extensions.rb b/app/controllers/concerns/foreman_wds/hosts_controller_extensions.rb
index 9ddf276..b2af16f 100644
--- a/app/controllers/concerns/foreman_wds/hosts_controller_extensions.rb
+++ b/app/controllers/concerns/foreman_wds/hosts_controller_extensions.rb
@@ -7,7 +7,7 @@ module ForemanWds
     included do
       before_action :cleanup_wds_params
 
-      define_action_permission %w[wds_server_selected], :edit
+      define_action_permission %w[wds_server_selected], :edit if respond_to? :define_action_permission
     end
 
     def wds_server_selected
diff --git a/lib/foreman_wds/engine.rb b/lib/foreman_wds/engine.rb
index e7499ec..336c942 100644
--- a/lib/foreman_wds/engine.rb
+++ b/lib/foreman_wds/engine.rb
@@ -33,6 +33,7 @@ module ForemanWds
 
       if Foreman::Plugin.installed?('foreman_discovery')
         DiscoveredHostsController.include ForemanWds::HostsControllerExtensions
+        DiscoveredHostsController.prepend ForemanWds::DiscoveredHostsControllerExtensions
       end
     rescue StandardError => e
       Rails.logger.fatal "foreman_wds: skipping engine hook (#{e})"
-- 
GitLab