Add initial implementation of the LoginWizard.

This commit is contained in:
Doug
2022-05-19 12:53:46 +01:00
committed by Doug
parent 7dbe5b17e9
commit ac755f11f5
10 changed files with 391 additions and 29 deletions
@@ -16,6 +16,7 @@
import Foundation
/// The result returned when querying a homeserver's available login flows.
struct LoginFlowResult {
let supportedLoginTypes: [MXLoginFlow]
let ssoIdentityProviders: [SSOIdentityProvider]
@@ -35,11 +36,17 @@ struct LoginFlowResult {
}
}
/// The supported forms of login that a homeserver allows.
enum LoginMode {
/// The login mode hasn't been determined yet.
case unknown
/// The homeserver supports login with a password.
case password
/// The homeserver supports login via one or more SSO providers.
case sso(ssoIdentityProviders: [SSOIdentityProvider])
/// The homeserver supports login with either a password or via an SSO provider.
case ssoAndPassword(ssoIdentityProviders: [SSOIdentityProvider])
/// The homeserver only allows login with unsupported mechanisms. Use fallback instead.
case unsupported
var ssoIdentityProviders: [SSOIdentityProvider]? {
@@ -60,7 +67,7 @@ enum LoginMode {
}
}
var supportsSignModeScreen: Bool {
var supportsPasswordFlow: Bool {
switch self {
case .password, .ssoAndPassword:
return true
@@ -69,3 +76,11 @@ enum LoginMode {
}
}
}
/// Data obtained when calling `LoginWizard.resetPassword` that will be used
/// when calling `LoginWizard.checkResetPasswordMailConfirmed`.
struct ResetPasswordData {
let newPassword: String
let addThreePIDSessionID: String
}