implemented otp login

Signed-off-by: Stephan Richter <s.richter@srsoftware.de>
This commit is contained in:
2025-07-08 20:27:34 +02:00
parent 7a5bb50ee2
commit 92c6b154ea
11 changed files with 99 additions and 34 deletions

View File

@@ -12,6 +12,7 @@ import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.net.URL;
import java.util.HashMap;
import java.util.Map;
import org.json.JSONObject;
public class Translations extends PathHandler implements Translator {
@@ -34,7 +35,7 @@ public class Translations extends PathHandler implements Translator {
}
private JSONObject loadTranslations(String lang) throws IOException {
LOG.log(WARNING,"loadTranslations({0} not implemented!",lang);
LOG.log(WARNING,"loadTranslations({0}) not implemented!",lang);
var filename = lang + ".json";
URL url = getClass().getClassLoader().getResource(filename);
if (url == null) return new JSONObject();
@@ -50,10 +51,19 @@ public class Translations extends PathHandler implements Translator {
}
@Override
public String translate(String language, String text) {
public String translate(String language, String text, Map<String,String> fills) {
try {
var translations = getTranslations(language);
return translations.has(text) ? translations.getString(text) : text;
var keys = text.split("\\.");
Object current = translations;
for (var key : keys){
if (current instanceof JSONObject json && json.has(key)) {
current = json.get(key);
} else current = null;
}
var translated = current instanceof String translation ? translation : text;
for (var entry : fills.entrySet()) translated = translated.replaceAll("\\{"+entry.getKey()+"}",entry.getValue());
return translated;
} catch (IOException e) {
return text;
}

View File

@@ -58,6 +58,7 @@
"email": "E-Mail",
"failed": "fehlgeschlagen",
"foreign_id": "externe Kennung",
"go_to_url_to_reset_password": "Um ein neues Passwort zu erhalten, öffnen Sie bitte den folgenden Link: {url}",
"id": "Id",
"impersonate": "zu Nutzer wechseln",
"IMPERSONATE": "NUTZER WECHSELN",
@@ -88,6 +89,7 @@
"update": "aktualisieren",
"UPDATE_USERS" : "Nutzer aktualisieren",
"user_module" : "Umbrella User-Verwaltung",
"your_password_reset_token" : "Ihr Token zum Erstellen eines neuen Passworts",
"your_profile": "dein Profil"
}
}