From f916a2c5aec832f8e22c709938711098896ac82a Mon Sep 17 00:00:00 2001 From: Stephan Richter Date: Mon, 22 Sep 2025 17:42:20 +0200 Subject: [PATCH] implemented storing of user's language as well as loading --- frontend/src/App.svelte | 10 +++---- .../umbrella/user/sqlite/SqliteDB.java | 28 ++++++++++++++----- 2 files changed, 26 insertions(+), 12 deletions(-) diff --git a/frontend/src/App.svelte b/frontend/src/App.svelte index ec51fe91..fffec6d3 100644 --- a/frontend/src/App.svelte +++ b/frontend/src/App.svelte @@ -1,5 +1,4 @@ {#if translations_ready } 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 4e4b7fb9..dd843707 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 @@ -98,14 +98,28 @@ CREATE TABLE IF NOT EXISTS {0} ( case 3: createUserTables(); createLoginServiceTables(); + case 4: + createLanguageColumn(); } - return setCurrentVersion(4); + return setCurrentVersion(5); } + private void createLanguageColumn() { + var sql = "ALTER TABLE {0} ADD COLUMN {1} VARCHAR(10)"; + try { + var stmt = db.prepareStatement(format(sql,TABLE_USERS,LANGUAGE)); + stmt.execute(); + stmt.close(); + } catch (SQLException e) { + LOG.log(ERROR,"Failed to create column {1} in {0}",TABLE_USERS, LANGUAGE,e); + throw new RuntimeException(e); + } + } - private void createUserTables() { + + private void createUserTables() { PasswordHasher hasher; try { hasher = new BadHasher(); @@ -448,13 +462,13 @@ CREATE TABLE IF NOT EXISTS {0} ( Long id = user.id(); var email = user.email() == null ? null : user.email().toString(); if (id<1){ - insertInto(TABLE_USERS,LOGIN, PASS, THEME, EMAIL) - .values(user.name(), user.hashedPassword(), user.theme(), email) + insertInto(TABLE_USERS,LOGIN, PASS, THEME, EMAIL, LANGUAGE) + .values(user.name(), user.hashedPassword(), user.theme(), email, user.language()) .execute(db) .close(); } else { - replaceInto(TABLE_USERS, ID, LOGIN, PASS, THEME, EMAIL, LAST_LOGOFF) - .values(id, user.name(), user.hashedPassword(), user.theme(), email, user.lastLogoff()) + replaceInto(TABLE_USERS, ID, LOGIN, PASS, THEME, EMAIL, LAST_LOGOFF, LANGUAGE) + .values(id, user.name(), user.hashedPassword(), user.theme(), email, user.lastLogoff(), user.language()) .execute(db) .close(); } @@ -513,7 +527,7 @@ CREATE TABLE IF NOT EXISTS {0} ( rs.getString(EMAIL) instanceof String addr && !addr.isBlank() ? new EmailAddress(addr) : null, Password.of(rs.getString(PASS)), rs.getString(THEME), - "de", // TODO: save in DB + rs.getString(LANGUAGE), perms, rs.getLong(LAST_LOGOFF) );