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;