Skip to content

Commit af6f9c0

Browse files
committed
Reconfigure when fetching auth session if sharing keychain
1 parent 799fc0d commit af6f9c0

File tree

4 files changed

+19
-10
lines changed

4 files changed

+19
-10
lines changed

Amplify/Categories/Auth/Request/AuthFetchSessionRequest.swift

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,14 @@ public struct AuthFetchSessionRequest: AmplifyOperationRequest {
1212

1313
/// Extra request options defined in `AuthFetchSessionRequest.Options`
1414
public var options: Options
15+
16+
/// forceReconfigure flag when true will reconfigure the auth state machine.
17+
/// Should be used when sharing credentials via access group
18+
public let forceReconfigure: Bool
1519

16-
public init(options: Options) {
17-
20+
public init(options: Options, forceReconfigure: Bool = false) {
1821
self.options = options
22+
self.forceReconfigure = forceReconfigure
1923
}
2024
}
2125

AmplifyPlugins/Auth/Sources/AWSCognitoAuthPlugin/ClientBehavior/AWSCognitoAuthPlugin+ClientBehavior.swift

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -112,9 +112,9 @@ extension AWSCognitoAuthPlugin: AuthCategoryBehavior {
112112
}
113113

114114
public func fetchAuthSession(options: AuthFetchSessionRequest.Options?) async throws -> AuthSession {
115-
let options = options ?? AuthFetchSessionRequest.Options()
116-
let request = AuthFetchSessionRequest(options: options)
117-
let task = AWSAuthFetchSessionTask(request, authStateMachine: authStateMachine)
115+
var options = options ?? AuthFetchSessionRequest.Options()
116+
let request = AuthFetchSessionRequest(options: options, forceReconfigure: secureStoragePreferences?.accessGroup?.name != nil)
117+
let task = AWSAuthFetchSessionTask(request, authStateMachine: authStateMachine, configuration: authConfiguration)
118118
return try await taskQueue.sync {
119119
return try await task.value
120120
} as! AuthSession

AmplifyPlugins/Auth/Sources/AWSCognitoAuthPlugin/Models/AWSCognitoSecureStoragePreferences.swift

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,8 @@ public struct AWSCognitoSecureStoragePreferences {
1212

1313
/// The access group that the keychain will use for auth items
1414
public let accessGroup: AccessGroup?
15-
16-
public let migrateKeychainItemsOfUserSession: Bool
1715

18-
public init(accessGroup: AccessGroup? = nil, migrateKeychainItemsOfUserSession: Bool = true) {
16+
public init(accessGroup: AccessGroup? = nil) {
1917
self.accessGroup = accessGroup
20-
self.migrateKeychainItemsOfUserSession = migrateKeychainItemsOfUserSession
2118
}
2219
}

AmplifyPlugins/Auth/Sources/AWSCognitoAuthPlugin/Task/AWSAuthFetchSessionTask.swift

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,20 +13,28 @@ class AWSAuthFetchSessionTask: AuthFetchSessionTask, DefaultLogger {
1313
private let authStateMachine: AuthStateMachine
1414
private let fetchAuthSessionHelper: FetchAuthSessionOperationHelper
1515
private let taskHelper: AWSAuthTaskHelper
16+
private let configuration: AuthConfiguration
1617

1718
var eventName: HubPayloadEventName {
1819
HubPayload.EventName.Auth.fetchSessionAPI
1920
}
2021

21-
init(_ request: AuthFetchSessionRequest, authStateMachine: AuthStateMachine) {
22+
init(_ request: AuthFetchSessionRequest, authStateMachine: AuthStateMachine, configuration: AuthConfiguration) {
2223
self.request = request
2324
self.authStateMachine = authStateMachine
2425
self.fetchAuthSessionHelper = FetchAuthSessionOperationHelper()
2526
self.taskHelper = AWSAuthTaskHelper(authStateMachine: authStateMachine)
27+
self.configuration = configuration
2628
}
2729

2830
func execute() async throws -> AuthSession {
2931
log.verbose("Starting execution")
32+
let doesNeedForceReconfigure = request.forceReconfigure
33+
if doesNeedForceReconfigure {
34+
log.verbose("Reconfiguring for keychain sharing")
35+
let event = AuthEvent(eventType: .reconfigure(configuration))
36+
await authStateMachine.send(event)
37+
}
3038
await taskHelper.didStateMachineConfigured()
3139
let doesNeedForceRefresh = request.options.forceRefresh
3240
return try await fetchAuthSessionHelper.fetch(authStateMachine,

0 commit comments

Comments
 (0)