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(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);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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.");
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
Reference in New Issue
Block a user