From 30b540952ac8c25f34236ed358dcfb6eb925071b Mon Sep 17 00:00:00 2001
From: Johannes Meyer <johannes.meyer@icinga.com>
Date: Thu, 26 Oct 2023 12:00:42 +0200
Subject: [PATCH] loader.js: Don't consider redirected form submits as auto
 submits

A redirect caused by a form submit is **never** an automatic submit.
Unless I'm missing something here. There is one way this may be true,
as ipl forms without a submit button are indeed successful due to a
autosubmit element, but they don't redirect by default. So if the
controller redirects in such a case, the form should have a submit
button, I guess..

Anyway, this is necessary due to the previous commit as this may
otherwise cause form submits, that re-render layout during a redirect,
are considered being auto submitted. (Such as the login form)
---
 public/js/icinga/loader.js | 9 ++-------
 1 file changed, 2 insertions(+), 7 deletions(-)

diff --git a/public/js/icinga/loader.js b/public/js/icinga/loader.js
index c736a48f7..97891a7f2 100644
--- a/public/js/icinga/loader.js
+++ b/public/js/icinga/loader.js
@@ -790,14 +790,9 @@
                 this.icinga.ui.setWindowId(windowId);
             }
 
-            var referrer = req.referrer;
-            if (typeof referrer === 'undefined') {
-                referrer = req;
-            }
-
             var autoSubmit = false;
             var currentUrl = this.icinga.utils.parseUrl(req.$target.data('icingaUrl'));
-            if (referrer.method === 'POST') {
+            if (req.method === 'POST') {
                 var newUrl = this.icinga.utils.parseUrl(req.url);
                 if (newUrl.path === currentUrl.path && this.icinga.utils.arraysEqual(newUrl.params, currentUrl.params)) {
                     autoSubmit = true;
@@ -817,7 +812,7 @@
                     let url = currentUrl.path + (locationQuery ? '?' + locationQuery : '');
                     if (req.autosubmit || autoSubmit) {
                         // Also update a form's action if it doesn't differ from the container's url
-                        var $form = $(referrer.forceFocus).closest('form');
+                        var $form = $(req.forceFocus).closest('form');
                         var formAction = $form.attr('action');
                         if (!! formAction) {
                             formAction = this.icinga.utils.parseUrl(formAction);