Enable OIDC token refresh in the NSE. (#1711)

Update the SDK and handle API changes.
This commit is contained in:
Doug
2023-09-15 10:01:09 +01:00
committed by GitHub
parent 058fe79f25
commit 64d5ba7a69
19 changed files with 64 additions and 52 deletions
@@ -16,6 +16,7 @@
import Foundation
import KeychainAccess
import MatrixRustSDK
enum KeychainControllerService: String {
case sessions
@@ -86,4 +87,20 @@ class KeychainController: KeychainControllerProtocol {
MXLog.error("Failed removing all tokens")
}
}
// MARK: - ClientSessionDelegate
func retrieveSessionFromKeychain(userId: String) throws -> Session {
MXLog.info("Retrieving an updated Session from the keychain.")
guard let session = restorationTokenForUsername(userId)?.session else {
throw ClientError.Generic(msg: "Failed to find RestorationToken in the Keychain.")
}
return session
}
func saveSessionInKeychain(session: Session) {
MXLog.info("Saving session changes in the keychain.")
let restorationToken = RestorationToken(session: session)
setRestorationToken(restorationToken, forUsername: session.userId)
}
}
@@ -15,13 +15,14 @@
//
import Foundation
import MatrixRustSDK
struct KeychainCredentials {
let userID: String
let restorationToken: RestorationToken
}
protocol KeychainControllerProtocol {
protocol KeychainControllerProtocol: ClientSessionDelegate {
func setRestorationToken(_ restorationToken: RestorationToken, forUsername: String)
func restorationTokenForUsername(_ username: String) -> RestorationToken?
func restorationTokens() -> [KeychainCredentials]