From 008501357fdaa0a65e84e6b91bacaade5568ca21 Mon Sep 17 00:00:00 2001 From: Stephan Richter Date: Wed, 4 Feb 2026 10:03:28 +0100 Subject: [PATCH] allowing to configure session duration Signed-off-by: Stephan Richter --- .../de/srsoftware/umbrella/core/constants/Path.java | 9 +++++---- .../java/de/srsoftware/umbrella/user/UserModule.java | 9 +++++++-- .../java/de/srsoftware/umbrella/user/api/UserDb.java | 2 ++ .../de/srsoftware/umbrella/user/sqlite/SqliteDB.java | 11 ++++++++++- 4 files changed, 24 insertions(+), 7 deletions(-) diff --git a/core/src/main/java/de/srsoftware/umbrella/core/constants/Path.java b/core/src/main/java/de/srsoftware/umbrella/core/constants/Path.java index 6aeaaef6..941cce4b 100644 --- a/core/src/main/java/de/srsoftware/umbrella/core/constants/Path.java +++ b/core/src/main/java/de/srsoftware/umbrella/core/constants/Path.java @@ -6,10 +6,11 @@ public class Path { public static final String ADD = "add"; public static final String AVAILABLE = "available"; - public static final String CSS = "css"; - public static final String COMMON_TEMPLATES = "common_templates"; - public static final String COMPANY = "company"; - public static final String CONNECTED = "connected"; + public static final String CSS = "css"; + public static final String COMMON_TEMPLATES = "common_templates"; + 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 ITEM = "item"; diff --git a/user/src/main/java/de/srsoftware/umbrella/user/UserModule.java b/user/src/main/java/de/srsoftware/umbrella/user/UserModule.java index 955a46e7..95639e3a 100644 --- a/user/src/main/java/de/srsoftware/umbrella/user/UserModule.java +++ b/user/src/main/java/de/srsoftware/umbrella/user/UserModule.java @@ -88,9 +88,14 @@ public class UserModule extends BaseHandler implements UserService { public UserModule(Configuration config) throws UmbrellaException { super(); var dbFile = config.get(CONFIG_DATABASE).orElseThrow(() -> missingConfig(CONFIG_DATABASE)); + var sqlite = new SqliteDB(connect(dbFile)); + // may be splitted in separate db files later - logins = new SqliteDB(connect(dbFile)); - users = new SqliteDB(connect(dbFile)); + logins = sqlite; + users = sqlite; + + Optional sessionDuration = config.get(CONFIG_SESSION_DURATION); + sessionDuration.ifPresent(users::setSessionDuration); ModuleRegistry.add(this); } diff --git a/user/src/main/java/de/srsoftware/umbrella/user/api/UserDb.java b/user/src/main/java/de/srsoftware/umbrella/user/api/UserDb.java index b7dada5a..e1a4d85f 100644 --- a/user/src/main/java/de/srsoftware/umbrella/user/api/UserDb.java +++ b/user/src/main/java/de/srsoftware/umbrella/user/api/UserDb.java @@ -41,4 +41,6 @@ public interface UserDb { UmbrellaUser save(DbUser user) throws UmbrellaException; Map search(String key); + + UserDb setSessionDuration(Number minutes); } diff --git a/user/src/main/java/de/srsoftware/umbrella/user/sqlite/SqliteDB.java b/user/src/main/java/de/srsoftware/umbrella/user/sqlite/SqliteDB.java index 420bcb20..8eb2db54 100644 --- a/user/src/main/java/de/srsoftware/umbrella/user/sqlite/SqliteDB.java +++ b/user/src/main/java/de/srsoftware/umbrella/user/sqlite/SqliteDB.java @@ -35,12 +35,14 @@ import java.security.NoSuchAlgorithmException; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; +import java.time.Duration; import java.time.Instant; import java.time.LocalDateTime; import java.util.*; public class SqliteDB extends BaseDb implements LoginServiceDb, UserDb { private static final System.Logger LOG = System.getLogger(SqliteDB.class.getSimpleName()); + private static Duration sessionDuration = DEFAULT_SESSION_DURATION; public SqliteDB(Connection 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(){ - return LocalDateTime.now().plus(DEFAULT_SESSION_DURATION).toInstant(UTC); + return LocalDateTime.now().plus(sessionDuration).toInstant(UTC); } private ForeignLogin toForeignLogin(ResultSet rs) throws SQLException {