From 894c6b44059cb3609dcae713cc28fc891ebbe9c6 Mon Sep 17 00:00:00 2001 From: yuxiang-midships Date: Mon, 20 Jan 2025 09:44:23 +0800 Subject: [PATCH 1/4] Expose TokenManager Instance via FRAuth Similar to android SDK 's Config.getInstance().getTokenManager() to get token manager instance --- FRAuth/FRAuth/FRAuth.swift | 2 +- FRAuth/FRAuth/Manager/TokenManager.swift | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/FRAuth/FRAuth/FRAuth.swift b/FRAuth/FRAuth/FRAuth.swift index 957b0246..125ac965 100644 --- a/FRAuth/FRAuth/FRAuth.swift +++ b/FRAuth/FRAuth/FRAuth.swift @@ -50,7 +50,7 @@ public final class FRAuth: NSObject { /// OAuth2Client instance for FRAuth; OAuth2Client values are retrieved from .plist configuration file var oAuth2Client: OAuth2Client? /// TokenManager instance for FRAuth to perform any token related operation - var tokenManager: TokenManager? + public var tokenManager: TokenManager? /// SessionManager instance for FRAuth to perform manage, and persist session var sessionManager: SessionManager /// KeychainManager instance for FRAuth to perform any keychain related operation to persist and/or retrieve credentials diff --git a/FRAuth/FRAuth/Manager/TokenManager.swift b/FRAuth/FRAuth/Manager/TokenManager.swift index 79b7c62f..96d10b86 100644 --- a/FRAuth/FRAuth/Manager/TokenManager.swift +++ b/FRAuth/FRAuth/Manager/TokenManager.swift @@ -12,7 +12,7 @@ import Foundation /// TokenManager class is a management class responsible for persisting, retrieving, and refreshing OAuth2 token(s) -struct TokenManager { +public struct TokenManager { var oAuth2Client: OAuth2Client var keychainManager: KeychainManager @@ -22,7 +22,7 @@ struct TokenManager { /// - Parameters: /// - oAuth2Client: OAuth2Client instance for OAuth2 token protocols /// - keychainManager: KeychainManager instance for secure credentials management - public init(oAuth2Client: OAuth2Client, keychainManager: KeychainManager) { + init(oAuth2Client: OAuth2Client, keychainManager: KeychainManager) { self.oAuth2Client = oAuth2Client self.keychainManager = keychainManager } From e2cc0396f1523eb122947a8b5b9abba93732b26e Mon Sep 17 00:00:00 2001 From: yuxiang-midships Date: Mon, 20 Jan 2025 09:47:29 +0800 Subject: [PATCH 2/4] Expose clearCredential method in Token Manager Similar to Android SDK's TokenManger.clear() method --- FRAuth/FRAuth/Manager/TokenManager.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/FRAuth/FRAuth/Manager/TokenManager.swift b/FRAuth/FRAuth/Manager/TokenManager.swift index 96d10b86..31a2ca85 100644 --- a/FRAuth/FRAuth/Manager/TokenManager.swift +++ b/FRAuth/FRAuth/Manager/TokenManager.swift @@ -357,7 +357,7 @@ public struct TokenManager { /// Clears all credentials locally as there is no more valid credentials to renew user's session - func clearCredentials() { + public func clearCredentials() { self.keychainManager.cookieStore.deleteAll() let _ = try? self.keychainManager.setAccessToken(token: nil) self.keychainManager.setSSOToken(ssoToken: nil) From c05f05d73397447f07579eab7f5a7f4922d448b6 Mon Sep 17 00:00:00 2001 From: yuxiang-midships Date: Mon, 20 Jan 2025 09:50:24 +0800 Subject: [PATCH 3/4] Add persistAccess token method in TokenManager Similar to Android SDK's TokenManger.persist(AccessToken) method --- FRAuth/FRAuth/Manager/TokenManager.swift | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/FRAuth/FRAuth/Manager/TokenManager.swift b/FRAuth/FRAuth/Manager/TokenManager.swift index 31a2ca85..496c0b99 100644 --- a/FRAuth/FRAuth/Manager/TokenManager.swift +++ b/FRAuth/FRAuth/Manager/TokenManager.swift @@ -366,6 +366,10 @@ public struct TokenManager { Browser.currentBrowser = nil } + public func persistToken(token: AccessToken) { + let _ = try? self.keychainManager.setAccessToken(token: token) + } + /// Revoke given Access Token without using the Refresh Token func revokeToken(_ token: AccessToken, completion: @escaping CompletionCallback) { From b6fa6e03a1bcae426c53a51d81b472255e9beede Mon Sep 17 00:00:00 2001 From: Yuxiang Lin Date: Wed, 12 Feb 2025 19:39:54 +0800 Subject: [PATCH 4/4] Expose oAuth2 Client via token manager --- FRAuth/FRAuth/Manager/TokenManager.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/FRAuth/FRAuth/Manager/TokenManager.swift b/FRAuth/FRAuth/Manager/TokenManager.swift index 496c0b99..7b0c1135 100644 --- a/FRAuth/FRAuth/Manager/TokenManager.swift +++ b/FRAuth/FRAuth/Manager/TokenManager.swift @@ -14,7 +14,7 @@ import Foundation /// TokenManager class is a management class responsible for persisting, retrieving, and refreshing OAuth2 token(s) public struct TokenManager { - var oAuth2Client: OAuth2Client + public var oAuth2Client: OAuth2Client var keychainManager: KeychainManager /// Initializes TokenMAnager instance with optional Access Group for shared Keychain Group identifier