// The CipherText decoding object
struct CipherTextResult: Codable {
var cipherText: String
}
// Your API URL
let yourApiUrl = "https://YOUR_API_URL.com"
// The user id
let userId = "THE-USER-ID"
// Set the user's password.
// Important note: this is only needed for the password BackupMethod
try portal.setPassword("THE-USER-PASSWORD")
// Obtain your API's URL for retrieving the encrypted user backup share.
// TODO: - replace the `BackupMethods.Password.rawValue` with the proper backup method you are using
guard let url = URL(string: "\(yourApiUrl)/users/\(userId)/encrypted-user-backup-shares?backupMethod=\(BackupMethods.Password.rawValue)") else {
throw URLError(.badURL)
}
// Retrieve the encrypted user backup share on your API.
let requests = PortalRequests()
let yourApiResponse = try await requests.get(url)
let decodedResponse = try decoder.decode(CipherTextResult.self, from: yourApiResponse)
let encryptedUserBackupShare = decodedResponse.cipherText
// TODO: - replace the `.Password` with the proper backup method you are using
try await portal?.recoverWallet(.Password, withCipherText: encryptedUserBackupShare) { _ in
// (Optional) Create a progress indicator here in the progress callback.
}
// ✅ The user has now recovered with their password successfully!