mirror of
https://gitlab.opencode.de/bwi/bundesmessenger/clients/bundesmessenger-ios.git
synced 2026-04-19 16:13:42 +02:00
Add AuthenticationService and RegistrationWizard. (#6056)
This commit is contained in:
@@ -0,0 +1,89 @@
|
||||
//
|
||||
// Copyright 2022 New Vector Ltd
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
|
||||
enum RegisterThreePID {
|
||||
case email(String)
|
||||
case msisdn(msisdn: String, countryCode: String)
|
||||
}
|
||||
|
||||
struct ThreePIDCredentials: Codable {
|
||||
var clientSecret: String?
|
||||
|
||||
var identityServer: String?
|
||||
|
||||
var sessionID: String?
|
||||
|
||||
enum CodingKeys: String, CodingKey {
|
||||
case clientSecret = "client_secret"
|
||||
case identityServer = "id_server"
|
||||
case sessionID = "sid"
|
||||
}
|
||||
}
|
||||
|
||||
struct ThreePIDData {
|
||||
let threePID: RegisterThreePID
|
||||
let registrationResponse: RegistrationThreePIDTokenResponse
|
||||
let registrationParameters: RegistrationParameters
|
||||
}
|
||||
|
||||
// TODO: This could potentially become an MXJSONModel?
|
||||
struct RegistrationThreePIDTokenResponse {
|
||||
/// Required. The session ID. Session IDs are opaque strings that must consist entirely of the characters [0-9a-zA-Z.=_-].
|
||||
/// Their length must not exceed 255 characters and they must not be empty.
|
||||
let sessionID: String
|
||||
|
||||
/// An optional field containing a URL where the client must submit the validation token to, with identical parameters to the Identity
|
||||
/// Service API's POST /validate/email/submitToken endpoint. The homeserver must send this token to the user (if applicable),
|
||||
/// who should then be prompted to provide it to the client.
|
||||
///
|
||||
/// If this field is not present, the client can assume that verification will happen without the client's involvement provided
|
||||
/// the homeserver advertises this specification version in the /versions response (ie: r0.5.0).
|
||||
var submitURL: String? = nil
|
||||
|
||||
// MARK: - Additional data that may be needed
|
||||
|
||||
var msisdn: String? = nil
|
||||
var formattedMSISDN: String? = nil
|
||||
var success: Bool? = nil
|
||||
|
||||
enum CodingKeys: String, CodingKey {
|
||||
case sessionID = "sid"
|
||||
case submitURL = "submit_url"
|
||||
case msisdn
|
||||
case formattedMSISDN = "intl_fmt"
|
||||
case success
|
||||
}
|
||||
}
|
||||
|
||||
struct ThreePIDValidationCodeBody: Codable {
|
||||
let clientSecret: String
|
||||
|
||||
let sessionID: String
|
||||
|
||||
let code: String
|
||||
|
||||
enum CodingKeys: String, CodingKey {
|
||||
case clientSecret = "client_secret"
|
||||
case sessionID = "sid"
|
||||
case code = "token"
|
||||
}
|
||||
|
||||
func jsonData() throws -> Data {
|
||||
try JSONEncoder().encode(self)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user