feat(base)!: a handle at password sign-up (ADR 0020, D26, D28–D30)
Every new account gets a handle, and an account without one gets its first as it sets a password. The handle is private until its person goes public (D5). - `passwordSignIn.signUp` takes a handle. `passwordSignIn.checkHandle` says whether a sign-up could take one, only while that sign-up's mailed code waits (`codeExpired` otherwise), counted per code request (30 an hour) and per network (60) (D29). Members ask the register. - `password.set` takes the first handle of an account without one (D28); `SignInWays.handle` tells the app whether there is one. - Each checks the handle before the code is used, so a refusal leaves the code for another try. An existing account at the address keeps its own handle where it has one, and the typed handle is still checked, so the answer says nothing about the address. - `first_handle.dart` holds what SimpleLogin, the keys and passwords share: `refusalOfNewHandle`, `insertFirstProfile`, `hasHandle`. - halkyon_app: one `HandleField` with its `HandleCheckCubit` (asked 300 ms after typing pauses, only about the handle typed last; the instance's suggestion is free without asking) (D30). The password setup asks for the handle between the phrase check and the code, and a refusal at the code sends back to it. SimpleLogin's sign-up and keys steps use the same field and now check as it is typed. - The module's README and ADR 0020 (D29, D30, the built state) amended. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
This commit is contained in:
parent
87671208df
commit
630965d920
1 changed files with 2305 additions and 395 deletions
|
|
@ -330,6 +330,11 @@ class HalkyonAppLocalizationsDe extends HalkyonAppLocalizations {
|
|||
return 'Wir haben dir einen Code an $address geschickt. Er gilt 15 Minuten.';
|
||||
}
|
||||
|
||||
@override
|
||||
String passwordHandleIntro(String address) {
|
||||
return 'Ein Code ist unterwegs an $address. Wähle inzwischen dein Handle: Darüber finden dich andere. 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 passwordResendCode => 'Neuen Code senden';
|
||||
|
||||
|
|
@ -933,17 +938,20 @@ class HalkyonAppLocalizationsDe extends HalkyonAppLocalizations {
|
|||
'Verknüpfe es wieder mit deinem Handle und deiner Wiederherstellungsphrase.';
|
||||
|
||||
@override
|
||||
String get simpleLoginHandleIntro =>
|
||||
String get handleIntro =>
|
||||
'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';
|
||||
String get handleLabel => 'Handle';
|
||||
|
||||
@override
|
||||
String simpleLoginHandleFree(String handle) {
|
||||
String handleFree(String handle) {
|
||||
return '@$handle ist frei';
|
||||
}
|
||||
|
||||
@override
|
||||
String get handleChecking => 'Wird geprüft …';
|
||||
|
||||
@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.';
|
||||
|
|
@ -1020,19 +1028,17 @@ class HalkyonAppLocalizationsDe extends HalkyonAppLocalizations {
|
|||
'Von diesem Netz aus wurden zu viele Anmeldungen begonnen. Versuch es in einer Stunde noch einmal.';
|
||||
|
||||
@override
|
||||
String get simpleLoginHandleInvalid =>
|
||||
String get handleInvalid =>
|
||||
'Ein Handle besteht aus 1 bis 30 Buchstaben (a bis z), Ziffern oder Unterstrichen.';
|
||||
|
||||
@override
|
||||
String get simpleLoginHandleReserved =>
|
||||
'Dieses Handle ist der Instanz vorbehalten.';
|
||||
String get handleReserved => 'Dieses Handle ist der Instanz vorbehalten.';
|
||||
|
||||
@override
|
||||
String get simpleLoginHandleTaken =>
|
||||
'Dieses Handle hat schon jemand anderes.';
|
||||
String get handleTaken => 'Dieses Handle hat schon jemand anderes.';
|
||||
|
||||
@override
|
||||
String get simpleLoginTooManyHandleChecks =>
|
||||
String get handleTooManyChecks =>
|
||||
'Es wurden zu viele Handles ausprobiert. Versuch es in einer Stunde noch einmal.';
|
||||
|
||||
@override
|
||||
|
|
|
|||
Loading…
Reference in a new issue