allowing to configure session duration
Signed-off-by: Stephan Richter <s.richter@srsoftware.de>
This commit is contained in:
@@ -9,6 +9,7 @@ public class Path {
|
|||||||
public static final String CSS = "css";
|
public static final String CSS = "css";
|
||||||
public static final String COMMON_TEMPLATES = "common_templates";
|
public static final String COMMON_TEMPLATES = "common_templates";
|
||||||
public static final String COMPANY = "company";
|
public static final String COMPANY = "company";
|
||||||
|
public static final String CONFIG_SESSION_DURATION = "umbrella.session.duration";
|
||||||
public static final String CONNECTED = "connected";
|
public static final String CONNECTED = "connected";
|
||||||
|
|
||||||
public static final String ITEM = "item";
|
public static final String ITEM = "item";
|
||||||
|
|||||||
@@ -88,9 +88,14 @@ public class UserModule extends BaseHandler implements UserService {
|
|||||||
public UserModule(Configuration config) throws UmbrellaException {
|
public UserModule(Configuration config) throws UmbrellaException {
|
||||||
super();
|
super();
|
||||||
var dbFile = config.get(CONFIG_DATABASE).orElseThrow(() -> missingConfig(CONFIG_DATABASE));
|
var dbFile = config.get(CONFIG_DATABASE).orElseThrow(() -> missingConfig(CONFIG_DATABASE));
|
||||||
|
var sqlite = new SqliteDB(connect(dbFile));
|
||||||
|
|
||||||
// may be splitted in separate db files later
|
// may be splitted in separate db files later
|
||||||
logins = new SqliteDB(connect(dbFile));
|
logins = sqlite;
|
||||||
users = new SqliteDB(connect(dbFile));
|
users = sqlite;
|
||||||
|
|
||||||
|
Optional<Number> sessionDuration = config.get(CONFIG_SESSION_DURATION);
|
||||||
|
sessionDuration.ifPresent(users::setSessionDuration);
|
||||||
ModuleRegistry.add(this);
|
ModuleRegistry.add(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -41,4 +41,6 @@ public interface UserDb {
|
|||||||
UmbrellaUser save(DbUser user) throws UmbrellaException;
|
UmbrellaUser save(DbUser user) throws UmbrellaException;
|
||||||
|
|
||||||
Map<Long,DbUser> search(String key);
|
Map<Long,DbUser> search(String key);
|
||||||
|
|
||||||
|
UserDb setSessionDuration(Number minutes);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -35,12 +35,14 @@ import java.security.NoSuchAlgorithmException;
|
|||||||
import java.sql.Connection;
|
import java.sql.Connection;
|
||||||
import java.sql.ResultSet;
|
import java.sql.ResultSet;
|
||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
|
import java.time.Duration;
|
||||||
import java.time.Instant;
|
import java.time.Instant;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
|
||||||
public class SqliteDB extends BaseDb implements LoginServiceDb, UserDb {
|
public class SqliteDB extends BaseDb implements LoginServiceDb, UserDb {
|
||||||
private static final System.Logger LOG = System.getLogger(SqliteDB.class.getSimpleName());
|
private static final System.Logger LOG = System.getLogger(SqliteDB.class.getSimpleName());
|
||||||
|
private static Duration sessionDuration = DEFAULT_SESSION_DURATION;
|
||||||
|
|
||||||
public SqliteDB(Connection conn){
|
public SqliteDB(Connection conn){
|
||||||
super(conn);
|
super(conn);
|
||||||
@@ -481,8 +483,15 @@ CREATE TABLE IF NOT EXISTS {0} (
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public UserDb setSessionDuration(Number minutes) {
|
||||||
|
LOG.log(INFO,"Session duration set to {} minutes",minutes);
|
||||||
|
sessionDuration = Duration.ofMinutes(minutes.longValue());
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
public Instant then(){
|
public Instant then(){
|
||||||
return LocalDateTime.now().plus(DEFAULT_SESSION_DURATION).toInstant(UTC);
|
return LocalDateTime.now().plus(sessionDuration).toInstant(UTC);
|
||||||
}
|
}
|
||||||
|
|
||||||
private ForeignLogin toForeignLogin(ResultSet rs) throws SQLException {
|
private ForeignLogin toForeignLogin(ResultSet rs) throws SQLException {
|
||||||
|
|||||||
Reference in New Issue
Block a user