Browse Source

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

module/notes
Stephan Richter 3 months ago
parent
commit
378ef640d9
  1. 1
      core/src/main/java/de/srsoftware/umbrella/core/api/UserService.java
  2. 3
      tags/src/main/java/de/srsoftware/umbrella/tags/TagModule.java
  3. 14
      user/src/main/java/de/srsoftware/umbrella/user/UserModule.java

1
core/src/main/java/de/srsoftware/umbrella/core/api/UserService.java

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

3
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 { public boolean doGet(Path path, HttpExchange ex) throws IOException {
addCors(ex); addCors(ex);
try { try {
Optional<Token> token = SessionToken.from(ex).map(Token::of); var user = users.refreshSession(ex);
var user = users.loadUser(token);
if (user.isEmpty()) return unauthorized(ex); if (user.isEmpty()) return unauthorized(ex);
var module = path.pop(); var module = path.pop();
if (module == null) throw unprocessable("Module missing in path."); if (module == null) throw unprocessable("Module missing in path.");

14
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.PostBox;
import de.srsoftware.umbrella.core.api.UserService; import de.srsoftware.umbrella.core.api.UserService;
import de.srsoftware.umbrella.core.exceptions.UmbrellaException; import de.srsoftware.umbrella.core.exceptions.UmbrellaException;
import de.srsoftware.umbrella.core.model.EmailAddress; import de.srsoftware.umbrella.core.model.*;
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.user.api.LoginServiceDb; import de.srsoftware.umbrella.user.api.LoginServiceDb;
import de.srsoftware.umbrella.user.api.UserDb; import de.srsoftware.umbrella.user.api.UserDb;
import de.srsoftware.umbrella.user.model.*; import de.srsoftware.umbrella.user.model.*;
@ -529,6 +525,14 @@ public class UserModule extends BaseHandler implements UserService {
return sendContent(ex,mapValues(users.search(key))); 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){ static int score(String password){
if (password == null) return 0; if (password == null) return 0;
var score = 0; var score = 0;

Loading…
Cancel
Save