Remove mastodon posts on delete and OTP

This commit is contained in:
2026-08-26 14:16:29 +02:00
parent 80a3a3d541
commit f503dbaef2
24 changed files with 388 additions and 11 deletions
+2
View File
@@ -16,6 +16,8 @@
"usernameLabel": {"message": "Benutzername"},
"usernamePlaceholder": {"message": "alice"},
"passwordLabel": {"message": "Passwort"},
"otpLabel": {"message": "Einmalpasswort"},
"otpPlaceholder": {"message": "123456"},
"saveAndLogIn": {"message": "Speichern und anmelden"},
"thisPlugin": {"message": "Dieses Add-on"},
"pluginDescription": {"message": "Dieses Add-on protokolliert Links auf einem LinkLog-Server, der sie auf einer Website und je nach Konfiguration der Add-ons möglicherweise auch in einem Fediverse-Dienst oder an anderen Orten veröffentlicht."},
@@ -50,6 +50,12 @@
"passwordLabel": {
"message": "Password"
},
"otpLabel": {
"message": "One-time password"
},
"otpPlaceholder": {
"message": "123456"
},
"saveAndLogIn": {
"message": "Save and log in"
},
+2
View File
@@ -16,6 +16,8 @@
"usernameLabel": {"message": "Nombre de usuario"},
"usernamePlaceholder": {"message": "alice"},
"passwordLabel": {"message": "Contraseña"},
"otpLabel": {"message": "Contraseña de un solo uso"},
"otpPlaceholder": {"message": "123456"},
"saveAndLogIn": {"message": "Guardar e iniciar sesión"},
"thisPlugin": {"message": "Este complemento"},
"pluginDescription": {"message": "Este complemento registra enlaces en un servidor LinkLog, que los publicará en un sitio web y posiblemente en un servicio fediverso u otros destinos, según los complementos configurados."},
+2
View File
@@ -16,6 +16,8 @@
"usernameLabel": {"message": "Nom dutilisateur"},
"usernamePlaceholder": {"message": "alice"},
"passwordLabel": {"message": "Mot de passe"},
"otpLabel": {"message": "Mot de passe à usage unique"},
"otpPlaceholder": {"message": "123456"},
"saveAndLogIn": {"message": "Enregistrer et se connecter"},
"thisPlugin": {"message": "Cette extension"},
"pluginDescription": {"message": "Cette extension enregistre les liens sur un serveur LinkLog, qui les publiera sur un site web et éventuellement sur un service du fédivers ou ailleurs, selon les extensions configurées."},
+2
View File
@@ -16,6 +16,8 @@
"usernameLabel": {"message": "Gebruikersnaam"},
"usernamePlaceholder": {"message": "alice"},
"passwordLabel": {"message": "Wachtwoord"},
"otpLabel": {"message": "Eenmalig wachtwoord"},
"otpPlaceholder": {"message": "123456"},
"saveAndLogIn": {"message": "Opslaan en inloggen"},
"thisPlugin": {"message": "Deze plug-in"},
"pluginDescription": {"message": "Deze plug-in legt koppelingen vast op een LinkLog-server, die ze publiceert op een website en mogelijk op een fediverse-dienst of andere locaties, afhankelijk van de geconfigureerde plug-ins."},
+5
View File
@@ -37,6 +37,11 @@
<input id="password" type="password" />
</label>
<label>
<span data-i18n="otpLabel">One-time password</span>
<input id="otp" type="text" inputmode="numeric" autocomplete="one-time-code" data-i18n-placeholder="otpPlaceholder" placeholder="123456" />
</label>
<button type="submit" data-i18n="saveAndLogIn">Save and log in</button>
</form>
+3 -1
View File
@@ -8,6 +8,7 @@ const form = document.getElementById('settings-form');
const backendUrlInput = document.getElementById('backend-url');
const usernameInput = document.getElementById('username');
const passwordInput = document.getElementById('password');
const otpInput = document.getElementById('otp');
const session = document.getElementById('logged-in');
const sessionSummary = document.getElementById('session-summary');
const signOutButton = document.getElementById('sign-out');
@@ -74,7 +75,7 @@ async function saveSettingsAndLogin(event) {
const response = await fetch(`${backendUrl}/api/auth/login`, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ username, password })
body: JSON.stringify({ username, password, otp: otpInput.value.trim() || null })
});
if (!response.ok) {
@@ -93,6 +94,7 @@ async function saveSettingsAndLogin(event) {
showLoggedIn(data.user?.username || username, backendUrl);
passwordInput.value = '';
otpInput.value = '';
setStatus(t('loggedInSuccessfully'));
} catch (error) {
setStatus(t('unableToLogIn'), true);