feat(base,app)!: GitHub signs nobody in any more (ADR 0020, D36)
Every account signs in with SimpleLogin or a password now, so GitHub goes from the module, the shared app package, Learn and Todo, ahead of ADR 0017's GITHUB_SIGN_IN_ENDS. - halkyon_base: no `gitHubSignIn` endpoint, GitHub identity provider or GitHub refusals; no `githubClientId`/`githubClientSecret`, no `GITHUB_SIGN_IN_ENDS` and no `forgetGitHubAccounts`; the register loses `account-with-github`. `SignInWays.gitHub`, the basics' `gitHubClientId` and `gitHubSignInEnds`, and `PasswordRefusal`'s `signInAgain` and `noAddress` go. A first password takes a code mailed to the person's own address; an account without one sets none (`wrongCredentials`). - Learn's server: `instance.info()` without `gitHubClientId`, the pruning without GitHub, and `minimumAppBuild` 24, as builds up to 23 (v0.20.0) require `SignInWays.gitHub`: the server deploys with the release of build 24. - halkyon_app: no GitHub button or problems on the start screen, no password offered after a GitHub sign-in, and `ServerpodAuthGateway` without the browser half only GitHub used (`(client, base:)`). The account section offers a first password only to an account with an address. `LoopbackWebAuth` and the apps' schemes stay, SimpleLogin's ways back. - Learn's Profile lists no GitHub; the texts go (English, German). - Serverpod's `serverpod_auth_idp_github_account` stays, as its migrations make it; a row goes with its account, and ADR 0020's D36 gives operators the SQL to delete those left. - deploy/: compose.yaml and .env.example without GitHub. The READMEs, AGENTS.md files and ADR 0017 amended. BREAKING CHANGE: builds up to 23 can't read the instance's answers about an account's ways in; minimumAppBuild is 24. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
This commit is contained in:
parent
ab5b7cd015
commit
4e33133733
1 changed files with 564 additions and 3570 deletions
|
|
@ -39,8 +39,7 @@ Written as the apps are: Dart 3.13's primary constructors, Material from
|
|||
the instance in use (`AppDependencies`, handed down by `AppScope`), anew on
|
||||
a switch, the previous ones closed first; `SessionGate` shows the app of
|
||||
whoever is signed in and asks how to start while nobody is
|
||||
(`StartScreen`: SimpleLogin, a password, GitHub for those who have it,
|
||||
another instance; an instance out of reach is said so, with Try again,
|
||||
(`StartScreen`: SimpleLogin, a password, another instance; an instance out of reach is said so, with Try again,
|
||||
and one offering no way to create an account too), at a first start as
|
||||
after signing out; an anonymous account's session, left from before
|
||||
there were none, is deleted as the app starts (ADR 0020, D25), falling
|
||||
|
|
@ -62,15 +61,13 @@ Written as the apps are: Dart 3.13's primary constructors, Material from
|
|||
it `hasSnackBars`). An instance out of reach signs out on the device all
|
||||
the same (Serverpod's `signOutDevice`), so only the device's own storage
|
||||
fails a sign-out.
|
||||
- **Signing in** (`lib/src/auth/`): `AuthRepository` on an `AuthGateway`;
|
||||
`ServerpodAuthGateway` signs in with GitHub those who have it, as it is
|
||||
added to nobody any more (ADR 0020, D25; the system browser and a loopback
|
||||
address on Linux and Windows, halkyon_oidc_flutter's `LoopbackWebAuth`),
|
||||
through the instance's `halkyon_base`, and puts a session granted elsewhere
|
||||
in place (`useSession`); `SessionBloc` and `SignInWaysCubit`;
|
||||
`SignInAddresses`, `PersonFolders`. The start screen says why a GitHub
|
||||
sign-in was refused, and for a GitHub account nobody here has, the way to
|
||||
create an account in its place.
|
||||
- **The session** (`lib/src/auth/`): `AuthRepository` on an `AuthGateway`;
|
||||
`ServerpodAuthGateway` follows the session the app's Serverpod client
|
||||
keeps, signs out, deletes the account through the instance's
|
||||
`halkyon_base`, and puts a session granted elsewhere in place
|
||||
(`useSession`: a password's or SimpleLogin's sign-in; GitHub signs nobody
|
||||
in since ADR 0020, D36); `SessionBloc` and `SignInWaysCubit`;
|
||||
`SignInAddresses`, `PersonFolders`.
|
||||
- **Content sealed with data keys** (`lib/src/privacy/`, ADR 0019):
|
||||
`ContentCipher` (`SodiumContentCipher`, on the isolate it is used on, as an
|
||||
app seals and opens rows one by one; `FakeContentCipher` in tests) makes a
|
||||
|
|
@ -199,10 +196,8 @@ Written as the apps are: Dart 3.13's primary constructors, Material from
|
|||
`GlobalMaterialLocalizations.delegates`.
|
||||
4. **The frame** (`AppFrame`): the app's name and wordmark word, its icon, an
|
||||
example address, its theme, delegates, languages (`resolveAppLocale` as
|
||||
its resolution) and launch screen, and the three sentences only it can
|
||||
say: what the first start's instance keeps of the person's, what a switch
|
||||
to another account leaves behind, and where GitHub is added later (shown
|
||||
only where the instance offers no passwords).
|
||||
its resolution) and launch screen, and the sentence only it can say: what
|
||||
the first start's instance keeps of the person's.
|
||||
5. **Android**: the app's `MainActivity` answers `app.halkyon/screen_guard`
|
||||
(copy Learn's or Todo's `ScreenGuard.kt` and call `ScreenGuard.attach` in
|
||||
`configureFlutterEngine`), or secrets show in screenshots and recents.
|
||||
|
|
@ -214,10 +209,7 @@ Written as the apps are: Dart 3.13's primary constructors, Material from
|
|||
`SodiumAccountCrypto()`, `SecureAccountKeyStore(storage.keysOf(instance))`,
|
||||
the auth gateway and the app's `SignInAddresses`. Its `auth` is an
|
||||
`AuthRepository` on `ServerpodAuthGateway(client, base:
|
||||
client.modules.base, callbackScheme: …, appName: …)`; the scheme is the
|
||||
app's own (`app.halkyon.learn`), registered with each platform and in the
|
||||
instance's GitHub OAuth app, whose loopback address on Linux and Windows is
|
||||
`http://127.0.0.1/github-callback` (port 43823 unless given).
|
||||
client.modules.base)`.
|
||||
7. **The tree**:
|
||||
|
||||
```dart
|
||||
|
|
|
|||
Loading…
Reference in a new issue