extending session whenever tags are queries – should be the case on most pages

This commit is contained in:
2025-07-28 16:32:07 +02:00
parent 4e9f15c6a3
commit 378ef640d9
3 changed files with 11 additions and 7 deletions

View File

@@ -15,4 +15,5 @@ public interface UserService {
Optional<UmbrellaUser> loadUser(Optional<Token> sessionToken) throws UmbrellaException;
Optional<UmbrellaUser> loadUser(HttpExchange ex) throws UmbrellaException;
PostBox postBox();
Optional<UmbrellaUser> refreshSession(HttpExchange ex);
}

View File

@@ -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> 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.");

View File

@@ -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<UmbrellaUser> refreshSession(HttpExchange ex) {
Optional<Token> 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;