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
7 changed files with 564 additions and 3570 deletions
|
|
@ -1,70 +0,0 @@
|
|||
/* AUTOMATICALLY GENERATED CODE DO NOT MODIFY */
|
||||
/* To generate run: "serverpod generate" */
|
||||
|
||||
// ignore_for_file: implementation_imports
|
||||
// ignore_for_file: library_private_types_in_public_api
|
||||
// ignore_for_file: non_constant_identifier_names
|
||||
// ignore_for_file: public_member_api_docs
|
||||
// ignore_for_file: type_literal_in_constant_pattern
|
||||
// ignore_for_file: use_super_parameters
|
||||
// ignore_for_file: invalid_use_of_internal_member
|
||||
|
||||
// ignore_for_file: no_leading_underscores_for_library_prefixes
|
||||
import 'package:serverpod_client/serverpod_client.dart' as _isc;
|
||||
|
||||
/// Why signing in with GitHub, or linking a GitHub account, was refused.
|
||||
enum GitHubSignInRefusal implements _isc.SerializableModel {
|
||||
/// This instance has no GitHub OAuth app (no githubClientId and
|
||||
/// githubClientSecret in its passwords).
|
||||
unavailable,
|
||||
|
||||
/// The GitHub account already belongs to another person.
|
||||
takenByAnotherPerson,
|
||||
|
||||
/// The person already has a different GitHub account.
|
||||
otherGitHubAccountLinked,
|
||||
|
||||
/// No person has this GitHub account; only linking one creates it.
|
||||
unknownAccount,
|
||||
|
||||
/// The account signs in with its password: GitHub is deprecated (ADR 0017),
|
||||
/// and can't unlock the account's keys.
|
||||
usePassword,
|
||||
|
||||
/// GitHub accounts are no longer linked (ADR 0017): an address and a
|
||||
/// password are the way in.
|
||||
deprecated,
|
||||
|
||||
/// GitHub signs nobody in any more here: its time ended
|
||||
/// (`GITHUB_SIGN_IN_ENDS`).
|
||||
ended;
|
||||
|
||||
static GitHubSignInRefusal fromJson(String name) {
|
||||
switch (name) {
|
||||
case 'unavailable':
|
||||
return GitHubSignInRefusal.unavailable;
|
||||
case 'takenByAnotherPerson':
|
||||
return GitHubSignInRefusal.takenByAnotherPerson;
|
||||
case 'otherGitHubAccountLinked':
|
||||
return GitHubSignInRefusal.otherGitHubAccountLinked;
|
||||
case 'unknownAccount':
|
||||
return GitHubSignInRefusal.unknownAccount;
|
||||
case 'usePassword':
|
||||
return GitHubSignInRefusal.usePassword;
|
||||
case 'deprecated':
|
||||
return GitHubSignInRefusal.deprecated;
|
||||
case 'ended':
|
||||
return GitHubSignInRefusal.ended;
|
||||
default:
|
||||
throw ArgumentError(
|
||||
'Value "$name" cannot be converted to "GitHubSignInRefusal"',
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
String toJson() => name;
|
||||
|
||||
@override
|
||||
String toString() => name;
|
||||
}
|
||||
|
|
@ -1,84 +0,0 @@
|
|||
/* AUTOMATICALLY GENERATED CODE DO NOT MODIFY */
|
||||
/* To generate run: "serverpod generate" */
|
||||
|
||||
// ignore_for_file: implementation_imports
|
||||
// ignore_for_file: library_private_types_in_public_api
|
||||
// ignore_for_file: non_constant_identifier_names
|
||||
// ignore_for_file: public_member_api_docs
|
||||
// ignore_for_file: type_literal_in_constant_pattern
|
||||
// ignore_for_file: use_super_parameters
|
||||
// ignore_for_file: invalid_use_of_internal_member
|
||||
|
||||
// ignore_for_file: no_leading_underscores_for_library_prefixes
|
||||
import 'package:serverpod_client/serverpod_client.dart' as _isc;
|
||||
import '../auth/github_sign_in_refusal.dart' as _irgbwy1y;
|
||||
|
||||
/// Signing in with GitHub, or linking a GitHub account, was refused; nothing
|
||||
/// changed.
|
||||
abstract class GitHubSignInRefusedException
|
||||
implements
|
||||
_isc.SerializableException,
|
||||
_isc.SerializableModel,
|
||||
_isc.ProtocolSerialization {
|
||||
GitHubSignInRefusedException._({required this.reason});
|
||||
|
||||
factory GitHubSignInRefusedException({
|
||||
required _irgbwy1y.GitHubSignInRefusal reason,
|
||||
}) = _GitHubSignInRefusedExceptionImpl;
|
||||
|
||||
factory GitHubSignInRefusedException.fromJson(
|
||||
Map<String, dynamic> jsonSerialization,
|
||||
) {
|
||||
return GitHubSignInRefusedException(
|
||||
reason: _irgbwy1y.GitHubSignInRefusal.fromJson(
|
||||
(jsonSerialization['reason'] as String),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
/// Why it was refused.
|
||||
_irgbwy1y.GitHubSignInRefusal reason;
|
||||
|
||||
/// Returns a shallow copy of this [GitHubSignInRefusedException]
|
||||
/// with some or all fields replaced by the given arguments.
|
||||
@_isc.useResult
|
||||
GitHubSignInRefusedException copyWith({
|
||||
_irgbwy1y.GitHubSignInRefusal? reason,
|
||||
});
|
||||
@override
|
||||
Map<String, dynamic> toJson() {
|
||||
return {
|
||||
'__className__': 'halkyon_base.GitHubSignInRefusedException',
|
||||
'reason': reason.toJson(),
|
||||
};
|
||||
}
|
||||
|
||||
@override
|
||||
Map<String, dynamic> toJsonForProtocol() {
|
||||
return {
|
||||
'__className__': 'halkyon_base.GitHubSignInRefusedException',
|
||||
'reason': reason.toJson(),
|
||||
};
|
||||
}
|
||||
|
||||
@override
|
||||
String toString() {
|
||||
return 'GitHubSignInRefusedException(reason: $reason)';
|
||||
}
|
||||
}
|
||||
|
||||
class _GitHubSignInRefusedExceptionImpl extends GitHubSignInRefusedException {
|
||||
_GitHubSignInRefusedExceptionImpl({
|
||||
required _irgbwy1y.GitHubSignInRefusal reason,
|
||||
}) : super._(reason: reason);
|
||||
|
||||
/// Returns a shallow copy of this [GitHubSignInRefusedException]
|
||||
/// with some or all fields replaced by the given arguments.
|
||||
@_isc.useResult
|
||||
@override
|
||||
GitHubSignInRefusedException copyWith({
|
||||
_irgbwy1y.GitHubSignInRefusal? reason,
|
||||
}) {
|
||||
return GitHubSignInRefusedException(reason: reason ?? this.reason);
|
||||
}
|
||||
}
|
||||
|
|
@ -16,7 +16,6 @@ import 'package:serverpod_client/serverpod_client.dart' as _isc;
|
|||
abstract class SignInWays
|
||||
implements _isc.SerializableModel, _isc.ProtocolSerialization {
|
||||
SignInWays._({
|
||||
required this.gitHub,
|
||||
required this.email,
|
||||
bool? simpleLogin,
|
||||
bool? password,
|
||||
|
|
@ -37,7 +36,6 @@ abstract class SignInWays
|
|||
secondFactorWorks = secondFactorWorks ?? false;
|
||||
|
||||
factory SignInWays({
|
||||
required bool gitHub,
|
||||
required bool email,
|
||||
bool? simpleLogin,
|
||||
bool? password,
|
||||
|
|
@ -53,7 +51,6 @@ abstract class SignInWays
|
|||
|
||||
factory SignInWays.fromJson(Map<String, dynamic> jsonSerialization) {
|
||||
return SignInWays(
|
||||
gitHub: _isc.BoolJsonExtension.fromJson(jsonSerialization['gitHub']),
|
||||
email: _isc.BoolJsonExtension.fromJson(jsonSerialization['email']),
|
||||
simpleLogin: jsonSerialization['simpleLogin'] == null
|
||||
? null
|
||||
|
|
@ -97,8 +94,6 @@ abstract class SignInWays
|
|||
);
|
||||
}
|
||||
|
||||
bool gitHub;
|
||||
|
||||
bool email;
|
||||
|
||||
/// SimpleLogin (ADR 0020): the instance's register keeps its ID for the
|
||||
|
|
@ -121,8 +116,8 @@ abstract class SignInWays
|
|||
bool authenticator;
|
||||
|
||||
/// The account signs in with its password alone: it had a confirmed
|
||||
/// authenticator (a reset may have left it without one since), so
|
||||
/// neither a code by mail nor GitHub signs into it (ADR 0017).
|
||||
/// authenticator (a reset may have left it without one since), so a
|
||||
/// code by mail no longer signs into it (ADR 0017).
|
||||
bool passwordOnly;
|
||||
|
||||
/// A second factor works: a confirmed authenticator, and no reset of the
|
||||
|
|
@ -147,7 +142,6 @@ abstract class SignInWays
|
|||
/// with some or all fields replaced by the given arguments.
|
||||
@_isc.useResult
|
||||
SignInWays copyWith({
|
||||
bool? gitHub,
|
||||
bool? email,
|
||||
bool? simpleLogin,
|
||||
bool? password,
|
||||
|
|
@ -164,7 +158,6 @@ abstract class SignInWays
|
|||
Map<String, dynamic> toJson() {
|
||||
return {
|
||||
'__className__': 'halkyon_base.SignInWays',
|
||||
'gitHub': gitHub,
|
||||
'email': email,
|
||||
'simpleLogin': simpleLogin,
|
||||
'password': password,
|
||||
|
|
@ -185,7 +178,6 @@ abstract class SignInWays
|
|||
Map<String, dynamic> toJsonForProtocol() {
|
||||
return {
|
||||
'__className__': 'halkyon_base.SignInWays',
|
||||
'gitHub': gitHub,
|
||||
'email': email,
|
||||
'simpleLogin': simpleLogin,
|
||||
'password': password,
|
||||
|
|
@ -212,7 +204,6 @@ class _Undefined {}
|
|||
|
||||
class _SignInWaysImpl extends SignInWays {
|
||||
_SignInWaysImpl({
|
||||
required bool gitHub,
|
||||
required bool email,
|
||||
bool? simpleLogin,
|
||||
bool? password,
|
||||
|
|
@ -225,7 +216,6 @@ class _SignInWaysImpl extends SignInWays {
|
|||
DateTime? authenticatorResetAt,
|
||||
DateTime? accountResetAt,
|
||||
}) : super._(
|
||||
gitHub: gitHub,
|
||||
email: email,
|
||||
simpleLogin: simpleLogin,
|
||||
password: password,
|
||||
|
|
@ -244,7 +234,6 @@ class _SignInWaysImpl extends SignInWays {
|
|||
@_isc.useResult
|
||||
@override
|
||||
SignInWays copyWith({
|
||||
bool? gitHub,
|
||||
bool? email,
|
||||
bool? simpleLogin,
|
||||
bool? password,
|
||||
|
|
@ -258,7 +247,6 @@ class _SignInWaysImpl extends SignInWays {
|
|||
Object? accountResetAt = _Undefined,
|
||||
}) {
|
||||
return SignInWays(
|
||||
gitHub: gitHub ?? this.gitHub,
|
||||
email: email ?? this.email,
|
||||
simpleLogin: simpleLogin ?? this.simpleLogin,
|
||||
password: password ?? this.password,
|
||||
|
|
|
|||
|
|
@ -98,7 +98,7 @@ class EndpointAccount extends _isc.EndpointRef {
|
|||
);
|
||||
|
||||
/// How the caller signs in besides their sessions ([SignInWays]): with
|
||||
/// SimpleLogin, a password, an email address or GitHub.
|
||||
/// SimpleLogin, a password or an email address.
|
||||
_ida.Future<_ifld8s4r.SignInWays> signInWays() =>
|
||||
caller.callServerEndpoint<_ifld8s4r.SignInWays>(
|
||||
'halkyon_base.account',
|
||||
|
|
@ -138,33 +138,6 @@ class EndpointEmailCode extends _isc.EndpointRef {
|
|||
);
|
||||
}
|
||||
|
||||
/// Signs in the person who already has a GitHub account, e.g. when they switch
|
||||
/// to it on another device. Called without a session: Serverpod issues no
|
||||
/// session for another person inside a signed-in call.
|
||||
/// {@category Endpoint}
|
||||
class EndpointGitHubSignIn extends _isc.EndpointRef {
|
||||
EndpointGitHubSignIn(_isc.EndpointCaller caller) : super(caller);
|
||||
|
||||
@override
|
||||
String get name => 'halkyon_base.gitHubSignIn';
|
||||
|
||||
/// A session for the person with the GitHub account that [code] proves;
|
||||
/// refusals as [gitHubAccountToSignIn]'s.
|
||||
_ida.Future<_iacc.AuthSuccess> signIn({
|
||||
required String code,
|
||||
required String codeVerifier,
|
||||
required String redirectUri,
|
||||
}) => caller.callServerEndpoint<_iacc.AuthSuccess>(
|
||||
'halkyon_base.gitHubSignIn',
|
||||
'signIn',
|
||||
{
|
||||
'code': code,
|
||||
'codeVerifier': codeVerifier,
|
||||
'redirectUri': redirectUri,
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
/// What every Halkyon instance tells its apps. Public: an app asks before
|
||||
/// anyone is signed in.
|
||||
/// {@category Endpoint}
|
||||
|
|
@ -174,14 +147,13 @@ class EndpointInstance extends _isc.EndpointRef {
|
|||
@override
|
||||
String get name => 'halkyon_base.instance';
|
||||
|
||||
/// This instance's basics: the app it serves, GitHub sign-in only with the
|
||||
/// operator's OAuth app and until it ends (ADR 0017), email sign-in only
|
||||
/// where the register can mail codes (this server, or on a member the
|
||||
/// register, ADR 0016), password sign-in where the register holds its
|
||||
/// keys, SimpleLogin where the register has the instance's SimpleLogin app
|
||||
/// (ADR 0020), each as its operator offers it, when GitHub sign-in ends,
|
||||
/// where its source is, the oldest app build it works with, and where it
|
||||
/// keeps people's data and its backups.
|
||||
/// This instance's basics: the app it serves, email sign-in only where
|
||||
/// the register can mail codes (this server, or on a member the register,
|
||||
/// ADR 0016), password sign-in where the register holds its keys,
|
||||
/// SimpleLogin where the register has the instance's SimpleLogin app
|
||||
/// (ADR 0020), each as its operator offers it, where its source is, the
|
||||
/// oldest app build it works with, and where it keeps people's data and
|
||||
/// its backups.
|
||||
_ida.Future<_isnyur2i.InstanceBasics> basics() =>
|
||||
caller.callServerEndpoint<_isnyur2i.InstanceBasics>(
|
||||
'halkyon_base.instance',
|
||||
|
|
@ -579,7 +551,7 @@ class EndpointAuthenticator extends _isc.EndpointRef {
|
|||
}
|
||||
|
||||
/// Giving the signed-in person a password (ADR 0017): the way someone who
|
||||
/// signs in with a code by mail or GitHub moves to a password.
|
||||
/// signs in with a code by mail moves to a password.
|
||||
/// The instance's register keeps it (ADR 0016).
|
||||
/// {@category Endpoint}
|
||||
class EndpointPassword extends _isc.EndpointRef {
|
||||
|
|
@ -589,15 +561,13 @@ class EndpointPassword extends _isc.EndpointRef {
|
|||
String get name => 'halkyon_base.password';
|
||||
|
||||
/// Gives the caller the password [setup] describes (all of it made on the
|
||||
/// device), with the address [code] proves for [request] (mailed with
|
||||
/// `emailCode.sendCode`): the caller's own where they have one
|
||||
/// (`EmailCodePurpose.firstPassword`), else the one they add
|
||||
/// (`EmailCodePurpose.signUp`); someone who signs in with GitHub alone
|
||||
/// does it within [gitHubSignInFreshFor] of signing in with GitHub on this
|
||||
/// session. [handle] where the caller has none (`account.signInWays` says
|
||||
/// `handle`; ADR 0020, D28), null otherwise, counted as `profile.checkHandle`
|
||||
/// counts it. Refusals as `setPassword`'s. It signs in once an
|
||||
/// authenticator is confirmed (`authenticator.confirm`).
|
||||
/// device), with their own address, which [code] proves for [request]
|
||||
/// (mailed with `emailCode.sendCode` for
|
||||
/// `EmailCodePurpose.firstPassword`). [handle] where the caller has none
|
||||
/// (`account.signInWays` says `handle`; ADR 0020, D28), null otherwise,
|
||||
/// counted as `profile.checkHandle` counts it. Refusals as
|
||||
/// `setPassword`'s. It signs in once an authenticator is confirmed
|
||||
/// (`authenticator.confirm`).
|
||||
_ida.Future<void> set({
|
||||
required _ipn3lqh9.PasswordSetup setup,
|
||||
_isc.UuidValue? request,
|
||||
|
|
@ -1083,7 +1053,6 @@ class Caller extends _isc.ModuleEndpointCaller {
|
|||
Caller(_isc.ServerpodClientShared client) : super(client) {
|
||||
account = EndpointAccount(this);
|
||||
emailCode = EndpointEmailCode(this);
|
||||
gitHubSignIn = EndpointGitHubSignIn(this);
|
||||
instance = EndpointInstance(this);
|
||||
keys = EndpointKeys(this);
|
||||
accountRecovery = EndpointAccountRecovery(this);
|
||||
|
|
@ -1099,8 +1068,6 @@ class Caller extends _isc.ModuleEndpointCaller {
|
|||
|
||||
late final EndpointEmailCode emailCode;
|
||||
|
||||
late final EndpointGitHubSignIn gitHubSignIn;
|
||||
|
||||
late final EndpointInstance instance;
|
||||
|
||||
late final EndpointKeys keys;
|
||||
|
|
@ -1123,7 +1090,6 @@ class Caller extends _isc.ModuleEndpointCaller {
|
|||
Map<String, _isc.EndpointRef> get endpointRefLookup => {
|
||||
'halkyon_base.account': account,
|
||||
'halkyon_base.emailCode': emailCode,
|
||||
'halkyon_base.gitHubSignIn': gitHubSignIn,
|
||||
'halkyon_base.instance': instance,
|
||||
'halkyon_base.keys': keys,
|
||||
'halkyon_base.accountRecovery': accountRecovery,
|
||||
|
|
|
|||
|
|
@ -20,7 +20,6 @@ abstract class InstanceBasics
|
|||
implements _isc.SerializableModel, _isc.ProtocolSerialization {
|
||||
InstanceBasics._({
|
||||
required this.app,
|
||||
this.gitHubClientId,
|
||||
required this.emailSignIn,
|
||||
required this.sourceCodeUrl,
|
||||
required this.minimumAppBuild,
|
||||
|
|
@ -28,13 +27,11 @@ abstract class InstanceBasics
|
|||
this.backupLocation,
|
||||
bool? passwordSignIn,
|
||||
bool? simpleLogin,
|
||||
this.gitHubSignInEnds,
|
||||
}) : passwordSignIn = passwordSignIn ?? false,
|
||||
simpleLogin = simpleLogin ?? false;
|
||||
|
||||
factory InstanceBasics({
|
||||
required String app,
|
||||
String? gitHubClientId,
|
||||
required bool emailSignIn,
|
||||
required String sourceCodeUrl,
|
||||
required int minimumAppBuild,
|
||||
|
|
@ -42,13 +39,11 @@ abstract class InstanceBasics
|
|||
String? backupLocation,
|
||||
bool? passwordSignIn,
|
||||
bool? simpleLogin,
|
||||
DateTime? gitHubSignInEnds,
|
||||
}) = _InstanceBasicsImpl;
|
||||
|
||||
factory InstanceBasics.fromJson(Map<String, dynamic> jsonSerialization) {
|
||||
return InstanceBasics(
|
||||
app: jsonSerialization['app'] as String,
|
||||
gitHubClientId: jsonSerialization['gitHubClientId'] as String?,
|
||||
emailSignIn: _isc.BoolJsonExtension.fromJson(
|
||||
jsonSerialization['emailSignIn'],
|
||||
),
|
||||
|
|
@ -64,11 +59,6 @@ abstract class InstanceBasics
|
|||
simpleLogin: jsonSerialization['simpleLogin'] == null
|
||||
? null
|
||||
: _isc.BoolJsonExtension.fromJson(jsonSerialization['simpleLogin']),
|
||||
gitHubSignInEnds: jsonSerialization['gitHubSignInEnds'] == null
|
||||
? null
|
||||
: _isc.DateTimeJsonExtension.fromJson(
|
||||
jsonSerialization['gitHubSignInEnds'],
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
|
|
@ -76,10 +66,6 @@ abstract class InstanceBasics
|
|||
/// configures it: an app accepts only an instance of its own.
|
||||
String app;
|
||||
|
||||
/// The client ID of this instance's GitHub OAuth app, or null when GitHub
|
||||
/// sign-in is off here.
|
||||
String? gitHubClientId;
|
||||
|
||||
/// Whether people can sign in with an email address here: a code mailed
|
||||
/// to it.
|
||||
bool emailSignIn;
|
||||
|
|
@ -110,18 +96,11 @@ abstract class InstanceBasics
|
|||
/// instance's register has a SimpleLogin app, and its operator offers it.
|
||||
bool simpleLogin;
|
||||
|
||||
/// When GitHub sign-in ends here (ADR 0017: it is deprecated), as its
|
||||
/// operator set it (GITHUB_SIGN_IN_ENDS), in UTC; null while no end is set,
|
||||
/// or once it has ended. People who sign in with GitHub add an address, a
|
||||
/// password and an authenticator before then.
|
||||
DateTime? gitHubSignInEnds;
|
||||
|
||||
/// Returns a shallow copy of this [InstanceBasics]
|
||||
/// with some or all fields replaced by the given arguments.
|
||||
@_isc.useResult
|
||||
InstanceBasics copyWith({
|
||||
String? app,
|
||||
String? gitHubClientId,
|
||||
bool? emailSignIn,
|
||||
String? sourceCodeUrl,
|
||||
int? minimumAppBuild,
|
||||
|
|
@ -129,14 +108,12 @@ abstract class InstanceBasics
|
|||
String? backupLocation,
|
||||
bool? passwordSignIn,
|
||||
bool? simpleLogin,
|
||||
DateTime? gitHubSignInEnds,
|
||||
});
|
||||
@override
|
||||
Map<String, dynamic> toJson() {
|
||||
return {
|
||||
'__className__': 'halkyon_base.InstanceBasics',
|
||||
'app': app,
|
||||
if (gitHubClientId != null) 'gitHubClientId': gitHubClientId,
|
||||
'emailSignIn': emailSignIn,
|
||||
'sourceCodeUrl': sourceCodeUrl,
|
||||
'minimumAppBuild': minimumAppBuild,
|
||||
|
|
@ -144,8 +121,6 @@ abstract class InstanceBasics
|
|||
if (backupLocation != null) 'backupLocation': backupLocation,
|
||||
'passwordSignIn': passwordSignIn,
|
||||
'simpleLogin': simpleLogin,
|
||||
if (gitHubSignInEnds != null)
|
||||
'gitHubSignInEnds': gitHubSignInEnds?.toJson(),
|
||||
};
|
||||
}
|
||||
|
||||
|
|
@ -154,7 +129,6 @@ abstract class InstanceBasics
|
|||
return {
|
||||
'__className__': 'halkyon_base.InstanceBasics',
|
||||
'app': app,
|
||||
if (gitHubClientId != null) 'gitHubClientId': gitHubClientId,
|
||||
'emailSignIn': emailSignIn,
|
||||
'sourceCodeUrl': sourceCodeUrl,
|
||||
'minimumAppBuild': minimumAppBuild,
|
||||
|
|
@ -162,8 +136,6 @@ abstract class InstanceBasics
|
|||
if (backupLocation != null) 'backupLocation': backupLocation,
|
||||
'passwordSignIn': passwordSignIn,
|
||||
'simpleLogin': simpleLogin,
|
||||
if (gitHubSignInEnds != null)
|
||||
'gitHubSignInEnds': gitHubSignInEnds?.toJson(),
|
||||
};
|
||||
}
|
||||
|
||||
|
|
@ -178,7 +150,6 @@ class _Undefined {}
|
|||
class _InstanceBasicsImpl extends InstanceBasics {
|
||||
_InstanceBasicsImpl({
|
||||
required String app,
|
||||
String? gitHubClientId,
|
||||
required bool emailSignIn,
|
||||
required String sourceCodeUrl,
|
||||
required int minimumAppBuild,
|
||||
|
|
@ -186,10 +157,8 @@ class _InstanceBasicsImpl extends InstanceBasics {
|
|||
String? backupLocation,
|
||||
bool? passwordSignIn,
|
||||
bool? simpleLogin,
|
||||
DateTime? gitHubSignInEnds,
|
||||
}) : super._(
|
||||
app: app,
|
||||
gitHubClientId: gitHubClientId,
|
||||
emailSignIn: emailSignIn,
|
||||
sourceCodeUrl: sourceCodeUrl,
|
||||
minimumAppBuild: minimumAppBuild,
|
||||
|
|
@ -197,7 +166,6 @@ class _InstanceBasicsImpl extends InstanceBasics {
|
|||
backupLocation: backupLocation,
|
||||
passwordSignIn: passwordSignIn,
|
||||
simpleLogin: simpleLogin,
|
||||
gitHubSignInEnds: gitHubSignInEnds,
|
||||
);
|
||||
|
||||
/// Returns a shallow copy of this [InstanceBasics]
|
||||
|
|
@ -206,7 +174,6 @@ class _InstanceBasicsImpl extends InstanceBasics {
|
|||
@override
|
||||
InstanceBasics copyWith({
|
||||
String? app,
|
||||
Object? gitHubClientId = _Undefined,
|
||||
bool? emailSignIn,
|
||||
String? sourceCodeUrl,
|
||||
int? minimumAppBuild,
|
||||
|
|
@ -214,13 +181,9 @@ class _InstanceBasicsImpl extends InstanceBasics {
|
|||
Object? backupLocation = _Undefined,
|
||||
bool? passwordSignIn,
|
||||
bool? simpleLogin,
|
||||
Object? gitHubSignInEnds = _Undefined,
|
||||
}) {
|
||||
return InstanceBasics(
|
||||
app: app ?? this.app,
|
||||
gitHubClientId: gitHubClientId is String?
|
||||
? gitHubClientId
|
||||
: this.gitHubClientId,
|
||||
emailSignIn: emailSignIn ?? this.emailSignIn,
|
||||
sourceCodeUrl: sourceCodeUrl ?? this.sourceCodeUrl,
|
||||
minimumAppBuild: minimumAppBuild ?? this.minimumAppBuild,
|
||||
|
|
@ -230,9 +193,6 @@ class _InstanceBasicsImpl extends InstanceBasics {
|
|||
: this.backupLocation,
|
||||
passwordSignIn: passwordSignIn ?? this.passwordSignIn,
|
||||
simpleLogin: simpleLogin ?? this.simpleLogin,
|
||||
gitHubSignInEnds: gitHubSignInEnds is DateTime?
|
||||
? gitHubSignInEnds
|
||||
: this.gitHubSignInEnds,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -41,10 +41,6 @@ enum PasswordRefusal implements _isc.SerializableModel {
|
|||
/// The account has a password already.
|
||||
passwordExists,
|
||||
|
||||
/// The account has no email address yet: a password needs one, for
|
||||
/// resets. A code mailed to one makes it the account's.
|
||||
noAddress,
|
||||
|
||||
/// The address the code proved is another account's.
|
||||
addressTaken,
|
||||
|
||||
|
|
@ -84,11 +80,6 @@ enum PasswordRefusal implements _isc.SerializableModel {
|
|||
/// sign in again.
|
||||
sessionEnded,
|
||||
|
||||
/// A first password for an account that signs in with GitHub alone takes
|
||||
/// a GitHub sign-in of the last 10 minutes (the fourth reading: a session
|
||||
/// alone sets none): sign in with GitHub again, then set it.
|
||||
signInAgain,
|
||||
|
||||
/// The warning that a session of the account was ended for its wrong
|
||||
/// proofs is dismissed only by a session made since (the full reading's
|
||||
/// L1: another session of a stolen device would dismiss its only use):
|
||||
|
|
@ -111,8 +102,6 @@ enum PasswordRefusal implements _isc.SerializableModel {
|
|||
return PasswordRefusal.invalidSetup;
|
||||
case 'passwordExists':
|
||||
return PasswordRefusal.passwordExists;
|
||||
case 'noAddress':
|
||||
return PasswordRefusal.noAddress;
|
||||
case 'addressTaken':
|
||||
return PasswordRefusal.addressTaken;
|
||||
case 'noPassword':
|
||||
|
|
@ -135,8 +124,6 @@ enum PasswordRefusal implements _isc.SerializableModel {
|
|||
return PasswordRefusal.codesWait;
|
||||
case 'sessionEnded':
|
||||
return PasswordRefusal.sessionEnded;
|
||||
case 'signInAgain':
|
||||
return PasswordRefusal.signInAgain;
|
||||
case 'signedInBefore':
|
||||
return PasswordRefusal.signedInBefore;
|
||||
default:
|
||||
|
|
|
|||
|
|
@ -22,8 +22,6 @@ import 'package:serverpod_client/serverpod_client.dart' as _isc;
|
|||
import 'auth/email_code_purpose.dart' as _ifpka2on;
|
||||
import 'auth/email_sign_in_refusal.dart' as _ieyvcag1;
|
||||
import 'auth/email_sign_in_refused_exception.dart' as _iztfgag5;
|
||||
import 'auth/github_sign_in_refusal.dart' as _ir1gd9p5;
|
||||
import 'auth/github_sign_in_refused_exception.dart' as _i0xfcu5n;
|
||||
import 'auth/sign_in_ways.dart' as _ie6tbh85;
|
||||
import 'instance/instance_basics.dart' as _i8jixqx6;
|
||||
import 'keys/device_keys.dart' as _iz50cwqw;
|
||||
|
|
@ -59,8 +57,6 @@ import 'simplelogin/simplelogin_return.dart' as _i8dcjd27;
|
|||
export 'auth/email_code_purpose.dart';
|
||||
export 'auth/email_sign_in_refusal.dart';
|
||||
export 'auth/email_sign_in_refused_exception.dart';
|
||||
export 'auth/github_sign_in_refusal.dart';
|
||||
export 'auth/github_sign_in_refused_exception.dart';
|
||||
export 'auth/sign_in_ways.dart';
|
||||
export 'instance/instance_basics.dart';
|
||||
export 'keys/device_keys.dart';
|
||||
|
|
@ -149,12 +145,6 @@ class Protocol extends _isc.SerializationManager {
|
|||
if (t == _iztfgag5.EmailSignInRefusedException) {
|
||||
return _iztfgag5.EmailSignInRefusedException.fromJson(data) as T;
|
||||
}
|
||||
if (t == _ir1gd9p5.GitHubSignInRefusal) {
|
||||
return _ir1gd9p5.GitHubSignInRefusal.fromJson(data) as T;
|
||||
}
|
||||
if (t == _i0xfcu5n.GitHubSignInRefusedException) {
|
||||
return _i0xfcu5n.GitHubSignInRefusedException.fromJson(data) as T;
|
||||
}
|
||||
if (t == _ie6tbh85.SignInWays) {
|
||||
return _ie6tbh85.SignInWays.fromJson(data) as T;
|
||||
}
|
||||
|
|
@ -265,18 +255,6 @@ class Protocol extends _isc.SerializationManager {
|
|||
: null)
|
||||
as T;
|
||||
}
|
||||
if (t == _isc.getType<_ir1gd9p5.GitHubSignInRefusal?>()) {
|
||||
return (data != null
|
||||
? _ir1gd9p5.GitHubSignInRefusal.fromJson(data)
|
||||
: null)
|
||||
as T;
|
||||
}
|
||||
if (t == _isc.getType<_i0xfcu5n.GitHubSignInRefusedException?>()) {
|
||||
return (data != null
|
||||
? _i0xfcu5n.GitHubSignInRefusedException.fromJson(data)
|
||||
: null)
|
||||
as T;
|
||||
}
|
||||
if (t == _isc.getType<_ie6tbh85.SignInWays?>()) {
|
||||
return (data != null ? _ie6tbh85.SignInWays.fromJson(data) : null) as T;
|
||||
}
|
||||
|
|
@ -445,8 +423,6 @@ class Protocol extends _isc.SerializationManager {
|
|||
_ifpka2on.EmailCodePurpose => 'EmailCodePurpose',
|
||||
_ieyvcag1.EmailSignInRefusal => 'EmailSignInRefusal',
|
||||
_iztfgag5.EmailSignInRefusedException => 'EmailSignInRefusedException',
|
||||
_ir1gd9p5.GitHubSignInRefusal => 'GitHubSignInRefusal',
|
||||
_i0xfcu5n.GitHubSignInRefusedException => 'GitHubSignInRefusedException',
|
||||
_ie6tbh85.SignInWays => 'SignInWays',
|
||||
_i8jixqx6.InstanceBasics => 'InstanceBasics',
|
||||
_iz50cwqw.DeviceKeys => 'DeviceKeys',
|
||||
|
|
@ -502,10 +478,6 @@ class Protocol extends _isc.SerializationManager {
|
|||
return 'EmailSignInRefusal';
|
||||
case _iztfgag5.EmailSignInRefusedException():
|
||||
return 'EmailSignInRefusedException';
|
||||
case _ir1gd9p5.GitHubSignInRefusal():
|
||||
return 'GitHubSignInRefusal';
|
||||
case _i0xfcu5n.GitHubSignInRefusedException():
|
||||
return 'GitHubSignInRefusedException';
|
||||
case _ie6tbh85.SignInWays():
|
||||
return 'SignInWays';
|
||||
case _i8jixqx6.InstanceBasics():
|
||||
|
|
@ -589,12 +561,6 @@ class Protocol extends _isc.SerializationManager {
|
|||
if (dataClassName == 'EmailSignInRefusedException') {
|
||||
return deserialize<_iztfgag5.EmailSignInRefusedException>(data['data']);
|
||||
}
|
||||
if (dataClassName == 'GitHubSignInRefusal') {
|
||||
return deserialize<_ir1gd9p5.GitHubSignInRefusal>(data['data']);
|
||||
}
|
||||
if (dataClassName == 'GitHubSignInRefusedException') {
|
||||
return deserialize<_i0xfcu5n.GitHubSignInRefusedException>(data['data']);
|
||||
}
|
||||
if (dataClassName == 'SignInWays') {
|
||||
return deserialize<_ie6tbh85.SignInWays>(data['data']);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue