From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <pdm-devel-bounces@lists.proxmox.com>
Received: from firstgate.proxmox.com (firstgate.proxmox.com [IPv6:2a01:7e0:0:424::9])
	by lore.proxmox.com (Postfix) with ESMTPS id A4D1A1FF168
	for <inbox@lore.proxmox.com>; Tue,  4 Mar 2025 15:43:15 +0100 (CET)
Received: from firstgate.proxmox.com (localhost [127.0.0.1])
	by firstgate.proxmox.com (Proxmox) with ESMTP id 8DB6F210F;
	Tue,  4 Mar 2025 15:43:10 +0100 (CET)
From: Shannon Sterz <s.sterz@proxmox.com>
To: pdm-devel@lists.proxmox.com
Date: Tue,  4 Mar 2025 15:42:46 +0100
Message-Id: <20250304144247.231089-21-s.sterz@proxmox.com>
X-Mailer: git-send-email 2.39.5
In-Reply-To: <20250304144247.231089-1-s.sterz@proxmox.com>
References: <20250304144247.231089-1-s.sterz@proxmox.com>
MIME-Version: 1.0
X-SPAM-LEVEL: Spam detection results:  0
 AWL -0.013 Adjusted score from AWL reputation of From: address
 BAYES_00                 -1.9 Bayes spam probability is 0 to 1%
 DMARC_MISSING             0.1 Missing DMARC policy
 KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment
 SPF_HELO_NONE           0.001 SPF: HELO does not publish an SPF Record
 SPF_PASS               -0.001 SPF: sender matches SPF record
Subject: [pdm-devel] [PATCH yew-comp v5 20/21] http helpers: ask server to
 remove `__Host-` prefixed cookie on logout
X-BeenThere: pdm-devel@lists.proxmox.com
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Proxmox Datacenter Manager development discussion
 <pdm-devel.lists.proxmox.com>
List-Unsubscribe: <https://lists.proxmox.com/cgi-bin/mailman/options/pdm-devel>, 
 <mailto:pdm-devel-request@lists.proxmox.com?subject=unsubscribe>
List-Archive: <http://lists.proxmox.com/pipermail/pdm-devel/>
List-Post: <mailto:pdm-devel@lists.proxmox.com>
List-Help: <mailto:pdm-devel-request@lists.proxmox.com?subject=help>
List-Subscribe: <https://lists.proxmox.com/cgi-bin/mailman/listinfo/pdm-devel>, 
 <mailto:pdm-devel-request@lists.proxmox.com?subject=subscribe>
Reply-To: Proxmox Datacenter Manager development discussion
 <pdm-devel@lists.proxmox.com>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Errors-To: pdm-devel-bounces@lists.proxmox.com
Sender: "pdm-devel" <pdm-devel-bounces@lists.proxmox.com>

when clearing the authentication data, we can no longer remove the
cookie that stores the ticket once it is properly protected. so ask
the server to do this for us.

Signed-off-by: Shannon Sterz <s.sterz@proxmox.com>
---
 src/http_helpers.rs | 14 +++++++++++---
 1 file changed, 11 insertions(+), 3 deletions(-)

diff --git a/src/http_helpers.rs b/src/http_helpers.rs
index e2489cc..b1425d5 100644
--- a/src/http_helpers.rs
+++ b/src/http_helpers.rs
@@ -148,11 +148,19 @@ pub fn http_get_auth() -> Option<Authentication> {
     CLIENT.with(move |c| c.borrow().get_auth())
 }
 
+thread_local! {
+    static LOGOUT_GUARD: RefCell<Option<AsyncAbortGuard>> = const { RefCell::new(None) };
+}
+
 pub fn http_clear_auth() {
-    CLIENT.with(move |c| {
-        c.borrow_mut().clear_auth();
-        crate::clear_auth_cookie(c.borrow().product().auth_cookie_name());
+    let abort_guard = AsyncAbortGuard::spawn(async move {
+        let client = CLIENT.with(|c| Rc::clone(&*c.borrow()));
+        let _ = client.logout().await;
+        client.clear_auth();
+        crate::clear_auth_cookie(client.product().auth_cookie_name());
     });
+
+    LOGOUT_GUARD.with_borrow_mut(|v| *v = Some(abort_guard));
 }
 
 pub async fn http_login(
-- 
2.39.5



_______________________________________________
pdm-devel mailing list
pdm-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pdm-devel