From 378ef640d9912ad467da72b4e38dc5380c8311d8 Mon Sep 17 00:00:00 2001 From: Stephan Richter Date: Mon, 28 Jul 2025 16:32:07 +0200 Subject: [PATCH] =?UTF-8?q?extending=20session=20whenever=20tags=20are=20q?= =?UTF-8?q?ueries=20=E2=80=93=20should=20be=20the=20case=20on=20most=20pag?= =?UTF-8?q?es?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../srsoftware/umbrella/core/api/UserService.java | 1 + .../de/srsoftware/umbrella/tags/TagModule.java | 3 +-- .../de/srsoftware/umbrella/user/UserModule.java | 14 +++++++++----- 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/core/src/main/java/de/srsoftware/umbrella/core/api/UserService.java b/core/src/main/java/de/srsoftware/umbrella/core/api/UserService.java index d7a82ab..193d159 100644 --- a/core/src/main/java/de/srsoftware/umbrella/core/api/UserService.java +++ b/core/src/main/java/de/srsoftware/umbrella/core/api/UserService.java @@ -15,4 +15,5 @@ public interface UserService { Optional loadUser(Optional sessionToken) throws UmbrellaException; Optional loadUser(HttpExchange ex) throws UmbrellaException; PostBox postBox(); + Optional refreshSession(HttpExchange ex); } diff --git a/tags/src/main/java/de/srsoftware/umbrella/tags/TagModule.java b/tags/src/main/java/de/srsoftware/umbrella/tags/TagModule.java index 85727be..69376af 100644 --- a/tags/src/main/java/de/srsoftware/umbrella/tags/TagModule.java +++ b/tags/src/main/java/de/srsoftware/umbrella/tags/TagModule.java @@ -63,8 +63,7 @@ public class TagModule extends BaseHandler implements TagService { public boolean doGet(Path path, HttpExchange ex) throws IOException { addCors(ex); try { - Optional token = SessionToken.from(ex).map(Token::of); - var user = users.loadUser(token); + var user = users.refreshSession(ex); if (user.isEmpty()) return unauthorized(ex); var module = path.pop(); if (module == null) throw unprocessable("Module missing in path."); diff --git a/user/src/main/java/de/srsoftware/umbrella/user/UserModule.java b/user/src/main/java/de/srsoftware/umbrella/user/UserModule.java index e19dafb..53f5809 100644 --- a/user/src/main/java/de/srsoftware/umbrella/user/UserModule.java +++ b/user/src/main/java/de/srsoftware/umbrella/user/UserModule.java @@ -33,11 +33,7 @@ import de.srsoftware.umbrella.core.BaseHandler; import de.srsoftware.umbrella.core.api.PostBox; import de.srsoftware.umbrella.core.api.UserService; import de.srsoftware.umbrella.core.exceptions.UmbrellaException; -import de.srsoftware.umbrella.core.model.EmailAddress; -import de.srsoftware.umbrella.core.model.Envelope; -import de.srsoftware.umbrella.core.model.Message; -import de.srsoftware.umbrella.core.model.Token; -import de.srsoftware.umbrella.core.model.UmbrellaUser; +import de.srsoftware.umbrella.core.model.*; import de.srsoftware.umbrella.user.api.LoginServiceDb; import de.srsoftware.umbrella.user.api.UserDb; import de.srsoftware.umbrella.user.model.*; @@ -529,6 +525,14 @@ public class UserModule extends BaseHandler implements UserService { return sendContent(ex,mapValues(users.search(key))); } + @Override + public Optional refreshSession(HttpExchange ex) { + Optional optToken = SessionToken.from(ex).map(Token::of); + var user = loadUser(optToken); + user.map(users::getSession).map(users::extend).map(Session::cookie).ifPresent(token -> token.addTo(ex)); + return user; + } + static int score(String password){ if (password == null) return 0; var score = 0;