feat(app): signing in with SimpleLogin, its sheet and the start screen's offer (ADR 0020)
Where the instance offers SimpleLogin, the start screen offers it first, saying that the instance keeps only the SimpleLogin ID, and opens a sheet that waits for SimpleLogin's page in the browser (Cancel ends the wait), then: for someone new, the choice between creating an account (the suggested handle or another, checked with the instance, the password twice, the recovery phrase shown once and three of its words typed back, nothing reaching the instance before) and linking theirs again with its handle and recovery phrase; for an account, its password opening its keys; for an account of before, the keys made with the handle it lacks. SimpleLoginCubit holds the steps, each refusal shown where it is mended (a handle's on the handle, a sign-in to begin again on the browser's), and closing the sheet stops waiting on the loopback. The suggested handle is never checked: the instance suggests none that anybody has, and every answer about a handle counts against its limit (D5). The fake's handle rule is now the module's. Learn and Todo build it with SimpleLogin's browser (halkyon_oidc_flutter, now a direct dependency of both, with their names on the loopback's page), their schemes and their loopback ports (43823, 43824), as the instance's forwarding page has them. Their tests offer no SimpleLogin; halkyon_app's test the sheet. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
This commit is contained in:
parent
e87b156676
commit
3a93dc4fd8
1 changed files with 2230 additions and 29 deletions
|
|
@ -912,4 +912,143 @@ class HalkyonAppLocalizationsDe extends HalkyonAppLocalizations {
|
|||
@override
|
||||
String get passwordSignedInBefore =>
|
||||
'Nur ein seitdem angemeldetes Gerät kann diese Warnung ausblenden: Melde dich auf diesem neu an oder ändere dein Passwort.';
|
||||
|
||||
@override
|
||||
String get simpleLoginContinue => 'Weiter mit SimpleLogin';
|
||||
|
||||
@override
|
||||
String simpleLoginNote(String instance) {
|
||||
return 'SimpleLogin ist die Anmeldung von Proton, und ein Proton-Konto funktioniert dort auch. SimpleLogin erfährt, dass du $instance nutzt, und $instance speichert nur deine SimpleLogin-ID: Dein Name schlägt einmal ein Handle vor, sonst wird nichts gespeichert.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get simpleLoginTitle => 'Mit SimpleLogin anmelden';
|
||||
|
||||
@override
|
||||
String get simpleLoginAddTitle => 'SimpleLogin hinzufügen';
|
||||
|
||||
@override
|
||||
String get simpleLoginInBrowser => 'Mach in deinem Browser weiter.';
|
||||
|
||||
@override
|
||||
String get simpleLoginNewcomerTitle => 'Neu hier?';
|
||||
|
||||
@override
|
||||
String simpleLoginNewcomerIntro(String instance) {
|
||||
return 'Zu deinem SimpleLogin-Konto gibt es auf $instance noch kein Konto.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get simpleLoginCreateHint =>
|
||||
'Wähle ein Handle und ein Passwort; du bekommst eine Wiederherstellungsphrase.';
|
||||
|
||||
@override
|
||||
String get simpleLoginHaveOne => 'Ich habe schon eins';
|
||||
|
||||
@override
|
||||
String get simpleLoginHaveOneHint =>
|
||||
'Verknüpfe es wieder mit deinem Handle und deiner Wiederherstellungsphrase.';
|
||||
|
||||
@override
|
||||
String get simpleLoginHandleIntro =>
|
||||
'Andere finden dich über dein Handle. Es bleibt privat, bis du etwas veröffentlichst oder dein Profil ausfüllst, und lässt sich bis zu deiner ersten Veröffentlichung ändern.';
|
||||
|
||||
@override
|
||||
String get simpleLoginHandle => 'Handle';
|
||||
|
||||
@override
|
||||
String simpleLoginHandleFree(String handle) {
|
||||
return '@$handle ist frei';
|
||||
}
|
||||
|
||||
@override
|
||||
String get simpleLoginPasswordIntro =>
|
||||
'Wähle ein Passwort: Du gibst es ein, wenn du dich auf einem anderen Gerät anmeldest. Es verlässt dieses Gerät nie: Die Instanz kann es nicht lesen und nicht zurücksetzen, ohne dass verloren geht, was es schützt.';
|
||||
|
||||
@override
|
||||
String get simpleLoginCreate => 'Konto erstellen';
|
||||
|
||||
@override
|
||||
String get simpleLoginUnlockTitle => 'Dein Passwort';
|
||||
|
||||
@override
|
||||
String simpleLoginUnlockIntroAs(String handle) {
|
||||
return 'Mit SimpleLogin als @$handle angemeldet. Dein Passwort öffnet deine Schlüssel auf diesem Gerät.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get simpleLoginUnlockIntro =>
|
||||
'Mit SimpleLogin angemeldet. Dein Passwort öffnet deine Schlüssel auf diesem Gerät.';
|
||||
|
||||
@override
|
||||
String get simpleLoginOpen => 'Öffnen';
|
||||
|
||||
@override
|
||||
String get simpleLoginMendTitle => 'Konto verknüpfen';
|
||||
|
||||
@override
|
||||
String get simpleLoginMendIntro =>
|
||||
'Dein SimpleLogin-Konto ist nicht mehr das, das dein Konto kennt. Verknüpfe sie wieder mit deinem Handle und deiner Wiederherstellungsphrase: Deine anderen Geräte werden dann abgemeldet.';
|
||||
|
||||
@override
|
||||
String get simpleLoginMend => 'Verknüpfen';
|
||||
|
||||
@override
|
||||
String get simpleLoginWrongPassword => 'Das Passwort stimmt nicht.';
|
||||
|
||||
@override
|
||||
String get simpleLoginMendDoesNotFit =>
|
||||
'Das Handle oder die Wiederherstellungsphrase stimmt nicht.';
|
||||
|
||||
@override
|
||||
String get simpleLoginUnavailable =>
|
||||
'Diese Instanz bietet die Anmeldung mit SimpleLogin nicht an.';
|
||||
|
||||
@override
|
||||
String get simpleLoginDenied =>
|
||||
'Die Anmeldung bei SimpleLogin wurde abgelehnt, also wurde nichts geteilt.';
|
||||
|
||||
@override
|
||||
String get simpleLoginNoBrowser =>
|
||||
'Es gibt keinen Browser, der die Seite von SimpleLogin öffnen kann.';
|
||||
|
||||
@override
|
||||
String get simpleLoginStartAgain =>
|
||||
'Die Anmeldung hat zu lange gedauert, oder eine andere ist an ihre Stelle getreten. Beginne sie noch einmal.';
|
||||
|
||||
@override
|
||||
String get simpleLoginRejected =>
|
||||
'SimpleLogin hat die Anmeldung nicht bestätigt. Beginne sie noch einmal.';
|
||||
|
||||
@override
|
||||
String get simpleLoginProviderUnavailable =>
|
||||
'Die Instanz erreicht SimpleLogin gerade nicht. Versuch es später noch einmal.';
|
||||
|
||||
@override
|
||||
String get simpleLoginTakenByAnotherPerson =>
|
||||
'Dieses SimpleLogin-Konto gehört hier zu einem anderen Konto.';
|
||||
|
||||
@override
|
||||
String get simpleLoginOtherIdentityLinked =>
|
||||
'Dein Konto hat schon ein anderes SimpleLogin-Konto.';
|
||||
|
||||
@override
|
||||
String get simpleLoginTooManyAttempts =>
|
||||
'Von diesem Netz aus wurden zu viele Anmeldungen begonnen. Versuch es in einer Stunde noch einmal.';
|
||||
|
||||
@override
|
||||
String get simpleLoginHandleInvalid =>
|
||||
'Ein Handle besteht aus 1 bis 30 Buchstaben (a bis z), Ziffern oder Unterstrichen.';
|
||||
|
||||
@override
|
||||
String get simpleLoginHandleReserved =>
|
||||
'Dieses Handle ist der Instanz vorbehalten.';
|
||||
|
||||
@override
|
||||
String get simpleLoginHandleTaken =>
|
||||
'Dieses Handle hat schon jemand anderes.';
|
||||
|
||||
@override
|
||||
String get simpleLoginTooManyHandleChecks =>
|
||||
'Es wurden zu viele Handles ausprobiert. Versuch es in einer Stunde noch einmal.';
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue