fix(app): every change of how an account is secured asks for the password

The app's side of the owner's proof (OwnerProof, the third reading): adding
an authenticator once one is confirmed, removing a confirmed one and new
recovery codes now ask for the current password beside the code, as
changing the password, a new phrase and deleting already did; one
challenge and one answer per sheet (OwnerAnswer). A wrong password or code
reads as the one refusal the instance gives.

Deleting chooses a code by mail from what the instance says
(secondFactorWorks), no longer from whether an authenticator was ever
confirmed: with the authenticators' reset taken effect but not carried
out, the app offered a code field the instance refused (the fourth
finding). Signed-in calls take no address any more, so a device that
doesn't know it changes the password as any other; deleting by mail asks
for the address only where the device doesn't know it, as the code goes
there (the fifth finding).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
This commit is contained in:
Tizian 「ティツィアーン」 2026-10-21 10:42:55 +02:00
commit a0ae08f975
Signed by: raisondetredev
GPG key ID: 07F6FCF405488B64

View file

@ -438,6 +438,10 @@ class HalkyonAppLocalizationsDe extends HalkyonAppLocalizations {
String get passwordAuthenticatorCodeIntro =>
'Gib dann den Code ein, den sie zeigt.';
@override
String get passwordAuthenticatorOwnerIntro =>
'Bestätige zum Hinzufügen, dass du es bist: mit deinem Passwort und einem Code von einem bisherigen Authenticator.';
@override
String get passwordExistingCode => 'Code von einem bisherigen Authenticator';
@ -604,7 +608,7 @@ class HalkyonAppLocalizationsDe extends HalkyonAppLocalizations {
@override
String get passwordSectionRemoveIntro =>
'Gib zur Bestätigung einen Code aus einem deiner Authenticators ein.';
'Gib zur Bestätigung dein Passwort und einen Code aus einem deiner Authenticators ein.';
@override
String get passwordSectionRemoveAction => 'Entfernen';
@ -642,7 +646,7 @@ class HalkyonAppLocalizationsDe extends HalkyonAppLocalizations {
@override
String get passwordNewCodesIntro =>
'Gib einen Code aus deiner Authenticator-App ein. Deine alten Wiederherstellungscodes gelten dann nicht mehr.';
'Gib dein Passwort und einen Code aus deiner Authenticator-App ein. Deine alten Wiederherstellungscodes gelten dann nicht mehr.';
@override
String get passwordNewPhraseIntro =>
@ -693,10 +697,6 @@ class HalkyonAppLocalizationsDe extends HalkyonAppLocalizations {
String get passwordWrongCode =>
'Dieser Code stimmt nicht. Gib den ein, den deine App gerade zeigt.';
@override
String get passwordWrongExistingCode =>
'Der Code von deinem anderen Authenticator stimmt nicht.';
@override
String get passwordLastAuthenticator =>
'Dein letzter Authenticator kann nicht weg: Jede Anmeldung braucht einen.';
@ -799,11 +799,11 @@ class HalkyonAppLocalizationsDe extends HalkyonAppLocalizations {
@override
String get passwordAddressUnknown =>
'Dieses Gerät kennt die Adresse deines Kontos nicht, die das braucht. Melde dich ab und wieder mit deiner Adresse und deinem Passwort an.';
'Gib die E-Mail-Adresse deines Kontos ein: Dorthin geht der Code.';
@override
String get passwordDeleteIntroByMail =>
'Dein Konto wird mit allem darin gelöscht, in jedem Dienst dieser Instanz. Seine Authenticator-App ist nicht eingerichtet, daher bestätigt es ein Code per E-Mail: Gib dein Passwort ein, dann den Code, den wir an deine Adresse schicken.';
'Dein Konto wird mit allem darin gelöscht, in jedem Dienst dieser Instanz. Keiner seiner Authenticators funktioniert gerade, daher bestätigt es ein Code per E-Mail: Gib dein Passwort ein, dann den Code, den wir an deine Adresse schicken.';
@override
String get passwordDeleteSendCode => 'Code per E-Mail schicken';