extending session whenever tags are queries – should be the case on most pages
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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.");
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user