feat: support for JWT authentication

Signed-off-by: Krille <c.kussowski@famedly.com>
This commit is contained in:
Ray Wang 2024-05-09 00:47:44 +10:00 committed by Krille
parent ecb1fc973e
commit e9825f7f40
No known key found for this signature in database
GPG Key ID: E067ECD60F1A0652
2 changed files with 10 additions and 1 deletions

View File

@ -1398,7 +1398,9 @@ enum LoginType {
@EnhancedEnumValue(name: 'm.login.password') @EnhancedEnumValue(name: 'm.login.password')
mLoginPassword, mLoginPassword,
@EnhancedEnumValue(name: 'm.login.token') @EnhancedEnumValue(name: 'm.login.token')
mLoginToken mLoginToken,
@EnhancedEnumValue(name: 'org.matrix.login.jwt')
mLoginJWT
} }
/// ///

View File

@ -308,6 +308,7 @@ extension LoginTypeFromStringExtension on Iterable<LoginType> {
final override = { final override = {
'm.login.password': LoginType.mLoginPassword, 'm.login.password': LoginType.mLoginPassword,
'm.login.token': LoginType.mLoginToken, 'm.login.token': LoginType.mLoginToken,
'org.matrix.login.jwt': LoginType.mLoginJWT,
}[val]; }[val];
// ignore: unnecessary_this // ignore: unnecessary_this
return this.contains(override) ? override : null; return this.contains(override) ? override : null;
@ -320,25 +321,31 @@ extension LoginTypeEnhancedEnum on LoginType {
String get name => { String get name => {
LoginType.mLoginPassword: 'm.login.password', LoginType.mLoginPassword: 'm.login.password',
LoginType.mLoginToken: 'm.login.token', LoginType.mLoginToken: 'm.login.token',
LoginType.mLoginJWT: 'org.matrix.login.jwt',
}[this]!; }[this]!;
bool get isMLoginPassword => this == LoginType.mLoginPassword; bool get isMLoginPassword => this == LoginType.mLoginPassword;
bool get isMLoginToken => this == LoginType.mLoginToken; bool get isMLoginToken => this == LoginType.mLoginToken;
bool get isMLoginJWT => this == LoginType.mLoginJWT;
T when<T>({ T when<T>({
required T Function() mLoginPassword, required T Function() mLoginPassword,
required T Function() mLoginToken, required T Function() mLoginToken,
required T Function() mLoginJWT,
}) => }) =>
{ {
LoginType.mLoginPassword: mLoginPassword, LoginType.mLoginPassword: mLoginPassword,
LoginType.mLoginToken: mLoginToken, LoginType.mLoginToken: mLoginToken,
LoginType.mLoginJWT: mLoginJWT,
}[this]!(); }[this]!();
T maybeWhen<T>({ T maybeWhen<T>({
T? Function()? mLoginPassword, T? Function()? mLoginPassword,
T? Function()? mLoginToken, T? Function()? mLoginToken,
T? Function()? mLoginJWT,
required T Function() orElse, required T Function() orElse,
}) => }) =>
{ {
LoginType.mLoginPassword: mLoginPassword, LoginType.mLoginPassword: mLoginPassword,
LoginType.mLoginToken: mLoginToken, LoginType.mLoginToken: mLoginToken,
LoginType.mLoginJWT: mLoginJWT,
}[this] }[this]
?.call() ?? ?.call() ??
orElse(); orElse();