From a4240a43e62cf4c898553f7059091124801e248b Mon Sep 17 00:00:00 2001 From: f10d0 Date: Thu, 8 Feb 2024 21:31:28 +0100 Subject: [PATCH 1/3] added totp secret-key input field --- src/background.ts | 5 ++ .../settings/composables/logins.ts | 10 ++- .../settings/settingPages/AutoLogin.vue | 63 ++++++++++++++++++- src/freshContent/settings/types/Login.ts | 6 ++ 4 files changed, 79 insertions(+), 5 deletions(-) diff --git a/src/background.ts b/src/background.ts index 0a56a447..a6886a16 100644 --- a/src/background.ts +++ b/src/background.ts @@ -254,6 +254,11 @@ chrome.runtime.onMessage.addListener((request, _sender, sendResponse) => { default: return sendResponse(false) } + case 'delete_otp': + credentials.deleteUserData((request.platform ?? 'zih') + '-totp') + .then(() => credentials.deleteUserData((request.platform ?? 'zih') + '-iotp')) + .then(() => sendResponse(true)) + return true /* OWA */ case 'enable_owa_fetch': owaFetch.enableOWAFetch().then(sendResponse) diff --git a/src/freshContent/settings/composables/logins.ts b/src/freshContent/settings/composables/logins.ts index aff473b4..4e0025c2 100644 --- a/src/freshContent/settings/composables/logins.ts +++ b/src/freshContent/settings/composables/logins.ts @@ -1,4 +1,4 @@ -import type { Login } from '../types/Login' +import type { Login, Login2FA } from '../types/Login' export const useLogins = () => ({ logins @@ -17,8 +17,12 @@ const logins: Login[] = [ "Der Nutzername hat die Form 's3276763' oder 'luka075d'. Speichere deine aktuelle Eingabe nur, wenn du dir sicher bist.", passwordPlaceholder: 'Passwort (selma-Login)', passwordPattern: /.{5,}/, - passwordError: 'Das Passwort muss mindestens 5 Zeichen lang sein!' - }, + passwordError: 'Das Passwort muss mindestens 5 Zeichen lang sein!', + totpSecretPlaceholder: 'TOTP Secret-Key in Base32', + totpSecretPattern: /^[A-Z2-7]{32}$/, // Base32 encoded + totpSecretError: + 'Der TOTP Secret-Key besteht aus Großbuchstaben (A bis Z) und Ziffern (2 bis 7) und ist 32 Zeichen lang.' + } as Login2FA, { id: 'slub', title: 'Werde automatisch auf der SLUB-Seite angemeldet.', diff --git a/src/freshContent/settings/settingPages/AutoLogin.vue b/src/freshContent/settings/settingPages/AutoLogin.vue index 5370cbd3..fc2ff73c 100644 --- a/src/freshContent/settings/settingPages/AutoLogin.vue +++ b/src/freshContent/settings/settingPages/AutoLogin.vue @@ -42,6 +42,33 @@ :disabled="!(passwordValid && usernameValid)" @click="submitSave" /> + + +
+

+ Hier kannst du deinen TOTP Secret-Key speichern, sodass dein Second-Factor beim Login automatisch eingetragen wird. + Der Key ist Base32 enkodiert und sieht bspw. so aus:
+ MHSTKUIKTTHPQAZNVWQBJE5YQ2WACQQP +

+
+ + +
+
+
+ +