Skip to content

Commit 11ba134

Browse files
authored
chore(auth): cognito keys to not use AmplifyConfig types (#5243)
1 parent 9b6b47b commit 11ba134

20 files changed

+74
-77
lines changed

packages/auth/amplify_auth_cognito/example/integration_test/federated_sign_in_test.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,7 @@ void main() {
145145
// Clear but do not sign out so that tokens are still valid.
146146
// ignore: invalid_use_of_protected_member
147147
await cognitoPlugin.stateMachine.clearCredentials(
148-
CognitoUserPoolKeys(userPoolConfig),
148+
CognitoUserPoolKeys(userPoolConfig.appClientId),
149149
);
150150

151151
final session = await cognitoPlugin.federateToIdentityPool(

packages/auth/amplify_auth_cognito_dart/example/integration_test/hosted_ui_web_test.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -375,7 +375,7 @@ callback(JSON.stringify(items));
375375
final data =
376376
(jsonDecode(json) as Map<String, Object?>).cast<String, String?>();
377377
final keys = HostedUiKeys(
378-
config.auth!.awsPlugin!.auth!.default$!.oAuth!,
378+
config.auth!.awsPlugin!.auth!.default$!.oAuth!.appClientId,
379379
);
380380
CognitoUserPoolTokens? userPoolTokens;
381381
final accessToken = data[keys[HostedUiKey.accessToken]];
@@ -390,7 +390,7 @@ callback(JSON.stringify(items));
390390
}
391391

392392
final awsKeys = CognitoIdentityPoolKeys(
393-
config.auth!.awsPlugin!.credentialsProvider!.default$!,
393+
config.auth!.awsPlugin!.credentialsProvider!.default$!.poolId,
394394
);
395395
AWSCredentials? awsCredentials;
396396
final identityId = data[awsKeys[CognitoIdentityPoolKey.identityId]];

packages/auth/amplify_auth_cognito_dart/lib/src/asf/asf_context_data_provider.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ final class ASFContextDataProvider with AWSDebuggable, AWSLoggerMixin {
2929

3030
/// The unique device ID (`DeviceID`).
3131
Future<String> get _deviceId async {
32-
final userPoolKeys = CognitoUserPoolKeys(_userPoolConfig!);
32+
final userPoolKeys = CognitoUserPoolKeys(_userPoolConfig!.appClientId);
3333
var deviceId = await _secureStorage.read(
3434
key: userPoolKeys[CognitoUserPoolKey.asfDeviceId],
3535
);

packages/auth/amplify_auth_cognito_dart/lib/src/auth_plugin_impl.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -307,7 +307,7 @@ class AmplifyAuthCognitoDart extends AuthPluginInterface
307307
}
308308
await stateMachine.acceptAndComplete(
309309
CredentialStoreEvent.clearCredentials(
310-
CognitoIdentityPoolKeys(identityPoolConfig),
310+
CognitoIdentityPoolKeys(identityPoolConfig.poolId),
311311
),
312312
);
313313
}

packages/auth/amplify_auth_cognito_dart/lib/src/credentials/cognito_keys.dart

Lines changed: 16 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ import 'dart:collection';
99
import 'package:amplify_auth_cognito_dart/amplify_auth_cognito_dart.dart';
1010
import 'package:amplify_auth_cognito_dart/src/sdk/cognito_identity_provider.dart'
1111
show AuthFlowType;
12-
import 'package:amplify_core/amplify_core.dart';
1312
import 'package:meta/meta.dart';
1413

1514
/// {@template amplify_auth_cognito_dart.cognito_user_pool_key}
@@ -110,17 +109,16 @@ enum HostedUiKey {
110109
final class CognitoIdentityPoolKeys
111110
extends CognitoKeys<CognitoIdentityPoolKey> {
112111
/// {@macro amplify_auth_cognito.cognito_identity_pool_keys}
113-
const CognitoIdentityPoolKeys(this.config);
112+
const CognitoIdentityPoolKeys(this.identityPoolId);
114113

115-
/// The Cognito identity pool configuration, used to determine the key
116-
/// prefixes.
117-
final CognitoIdentityCredentialsProvider config;
114+
/// The Cognito identity pool Id, used to determine the key prefixes.
115+
final String identityPoolId;
118116

119117
@override
120118
List<CognitoIdentityPoolKey> get _values => CognitoIdentityPoolKey.values;
121119

122120
@override
123-
String get prefix => config.poolId;
121+
String get prefix => identityPoolId;
124122
}
125123

126124
/// {@template amplify_auth_cognito.cognito_user_pool_keys}
@@ -129,16 +127,16 @@ final class CognitoIdentityPoolKeys
129127
/// {@endtemplate}
130128
final class CognitoUserPoolKeys extends CognitoKeys<CognitoUserPoolKey> {
131129
/// {@macro amplify_auth_cognito.cognito_user_pool_keys}
132-
const CognitoUserPoolKeys(this.config);
130+
const CognitoUserPoolKeys(this.userPoolClientId);
133131

134-
/// The Cognito user pool configuration, used to determine the key prefixes.
135-
final CognitoUserPoolConfig config;
132+
/// The Cognito user pool client Id, used to determine the key prefixes.
133+
final String userPoolClientId;
136134

137135
@override
138136
List<CognitoUserPoolKey> get _values => CognitoUserPoolKey.values;
139137

140138
@override
141-
String get prefix => config.appClientId;
139+
String get prefix => userPoolClientId;
142140
}
143141

144142
/// {@template amplify_auth_cognito.cognito_user_pool_keys}
@@ -147,10 +145,10 @@ final class CognitoUserPoolKeys extends CognitoKeys<CognitoUserPoolKey> {
147145
/// {@endtemplate}
148146
final class CognitoDeviceKeys extends CognitoKeys<CognitoDeviceKey> {
149147
/// {@macro amplify_auth_cognito.cognito_user_pool_keys}
150-
const CognitoDeviceKeys(this.config, this.username);
148+
const CognitoDeviceKeys(this.userPoolClientId, this.username);
151149

152-
/// The Cognito user pool configuration, used to determine the key prefixes.
153-
final CognitoUserPoolConfig config;
150+
/// The Cognito user pool client Id, used to determine the key prefixes.
151+
final String userPoolClientId;
154152

155153
/// Device keys are tracked by username.
156154
final String username;
@@ -159,7 +157,7 @@ final class CognitoDeviceKeys extends CognitoKeys<CognitoDeviceKey> {
159157
List<CognitoDeviceKey> get _values => CognitoDeviceKey.values;
160158

161159
@override
162-
String get prefix => '${config.appClientId}.$username';
160+
String get prefix => '$userPoolClientId.$username';
163161
}
164162

165163
/// {@template amplify_auth_cognito.hosted_ui_keys}
@@ -168,16 +166,16 @@ final class CognitoDeviceKeys extends CognitoKeys<CognitoDeviceKey> {
168166
/// {@endtemplate}
169167
final class HostedUiKeys extends CognitoKeys<HostedUiKey> {
170168
/// {@macro amplify_auth_cognito.hosted_ui_keys}
171-
const HostedUiKeys(this.config);
169+
const HostedUiKeys(this.userPoolClientId);
172170

173-
/// The Cognito OAuth configuration, used to determine the key prefixes.
174-
final CognitoOAuthConfig config;
171+
/// The Cognito user pool client Id, used to determine the key prefixes.
172+
final String userPoolClientId;
175173

176174
@override
177175
List<HostedUiKey> get _values => HostedUiKey.values;
178176

179177
@override
180-
String get prefix => '${config.appClientId}.hostedUi';
178+
String get prefix => '$userPoolClientId.hostedUi';
181179
}
182180

183181
/// {@template amplify_auth_cognito.cognito_keys}

packages/auth/amplify_auth_cognito_dart/lib/src/credentials/device_metadata_repository.dart

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ class DeviceMetadataRepository {
3232
/// Retrieves the device secrets for [username].
3333
Future<CognitoDeviceSecrets?> get(String username) async {
3434
CognitoDeviceSecrets? deviceSecrets;
35-
final deviceKeys = CognitoDeviceKeys(_userPoolConfig, username);
35+
final deviceKeys = CognitoDeviceKeys(_userPoolConfig.appClientId, username);
3636
final deviceKey = await _secureStorage.read(
3737
key: deviceKeys[CognitoDeviceKey.deviceKey],
3838
);
@@ -61,7 +61,7 @@ class DeviceMetadataRepository {
6161

6262
/// Save the [deviceSecrets] for [username].
6363
Future<void> put(String username, CognitoDeviceSecrets deviceSecrets) async {
64-
final deviceKeys = CognitoDeviceKeys(_userPoolConfig, username);
64+
final deviceKeys = CognitoDeviceKeys(_userPoolConfig.appClientId, username);
6565
await _secureStorage.write(
6666
key: deviceKeys[CognitoDeviceKey.deviceKey],
6767
value: deviceSecrets.deviceKey,
@@ -82,7 +82,7 @@ class DeviceMetadataRepository {
8282

8383
/// Clears the device secrets for [username].
8484
Future<void> remove(String username) async {
85-
final deviceKeys = CognitoDeviceKeys(_userPoolConfig, username);
85+
final deviceKeys = CognitoDeviceKeys(_userPoolConfig.appClientId, username);
8686
for (final key in deviceKeys) {
8787
await _secureStorage.delete(key: key);
8888
}

packages/auth/amplify_auth_cognito_dart/lib/src/flows/hosted_ui/hosted_ui_platform.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ abstract class HostedUiPlatform implements Closeable {
4040
CognitoOAuthConfig get config => dependencyManager.expect();
4141

4242
/// The Hosted UI storage keys.
43-
late final HostedUiKeys _keys = HostedUiKeys(config);
43+
late final HostedUiKeys _keys = HostedUiKeys(config.appClientId);
4444

4545
/// The secure storage plugin.
4646
SecureStorageInterface get _secureStorage => dependencyManager.getOrCreate();

packages/auth/amplify_auth_cognito_dart/lib/src/state/machines/credential_store_state_machine.dart

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ final class CredentialStoreStateMachine
105105
CognitoUserPoolTokens? userPoolTokens;
106106
final userPoolConfig = authConfig.userPoolConfig;
107107
if (userPoolConfig != null) {
108-
final keys = CognitoUserPoolKeys(userPoolConfig);
108+
final keys = CognitoUserPoolKeys(userPoolConfig.appClientId);
109109
final accessToken = await _secureStorage.read(
110110
key: keys[CognitoUserPoolKey.accessToken],
111111
);
@@ -140,7 +140,7 @@ final class CredentialStoreStateMachine
140140

141141
final hostedUiConfig = authConfig.hostedUiConfig;
142142
if (hostedUiConfig != null) {
143-
final keys = HostedUiKeys(hostedUiConfig);
143+
final keys = HostedUiKeys(hostedUiConfig.appClientId);
144144
final accessToken = await _secureStorage.read(
145145
key: keys[HostedUiKey.accessToken],
146146
);
@@ -174,7 +174,7 @@ final class CredentialStoreStateMachine
174174
AWSCredentials? awsCredentials;
175175
final identityPoolConfig = authConfig.identityPoolConfig;
176176
if (identityPoolConfig != null) {
177-
final keys = CognitoIdentityPoolKeys(identityPoolConfig);
177+
final keys = CognitoIdentityPoolKeys(identityPoolConfig.poolId);
178178
identityId = await _secureStorage.read(
179179
key: keys[CognitoIdentityPoolKey.identityId],
180180
);
@@ -239,7 +239,7 @@ final class CredentialStoreStateMachine
239239

240240
final userPoolConfig = authConfig.userPoolConfig;
241241
if (userPoolConfig != null) {
242-
final keys = CognitoUserPoolKeys(userPoolConfig);
242+
final keys = CognitoUserPoolKeys(userPoolConfig.appClientId);
243243
if (userPoolTokens != null &&
244244
userPoolTokens.signInMethod == CognitoSignInMethod.default$) {
245245
signInDetails as CognitoSignInDetailsApiBased?;
@@ -258,7 +258,7 @@ final class CredentialStoreStateMachine
258258

259259
final hostedUiConfig = authConfig.hostedUiConfig;
260260
if (hostedUiConfig != null) {
261-
final keys = HostedUiKeys(hostedUiConfig);
261+
final keys = HostedUiKeys(hostedUiConfig.appClientId);
262262
if (userPoolTokens != null &&
263263
(userPoolTokens.signInMethod == CognitoSignInMethod.hostedUi)) {
264264
signInDetails as CognitoSignInDetailsHostedUi?;
@@ -275,7 +275,7 @@ final class CredentialStoreStateMachine
275275

276276
final identityPoolConfig = authConfig.identityPoolConfig;
277277
if (identityPoolConfig != null) {
278-
final keys = CognitoIdentityPoolKeys(identityPoolConfig);
278+
final keys = CognitoIdentityPoolKeys(identityPoolConfig.poolId);
279279
if (identityId != null) {
280280
items[keys[CognitoIdentityPoolKey.identityId]] = identityId;
281281
}
@@ -356,7 +356,8 @@ final class CredentialStoreStateMachine
356356
Future<void> _migrateDeviceSecrets(String username) async {
357357
final credentialProvider = get<LegacyCredentialProvider>();
358358
final authConfig = expect<AuthConfiguration>();
359-
final userPoolKeys = CognitoUserPoolKeys(authConfig.userPoolConfig!);
359+
final userPoolKeys =
360+
CognitoUserPoolKeys(authConfig.userPoolConfig!.appClientId);
360361
if (credentialProvider == null) return;
361362
try {
362363
final legacySecrets = await credentialProvider.fetchLegacyDeviceSecrets(
@@ -439,7 +440,7 @@ final class CredentialStoreStateMachine
439440

440441
final userPoolConfig = authConfig.userPoolConfig;
441442
if (userPoolConfig != null) {
442-
final userPoolKeys = CognitoUserPoolKeys(userPoolConfig);
443+
final userPoolKeys = CognitoUserPoolKeys(userPoolConfig.appClientId);
443444
for (final key in userPoolKeys) {
444445
if (shouldDelete(key)) {
445446
deletions.add(key);
@@ -449,7 +450,7 @@ final class CredentialStoreStateMachine
449450

450451
final hostedUiConfig = authConfig.hostedUiConfig;
451452
if (hostedUiConfig != null) {
452-
final hostedUiKeys = HostedUiKeys(hostedUiConfig);
453+
final hostedUiKeys = HostedUiKeys(hostedUiConfig.appClientId);
453454
for (final key in hostedUiKeys) {
454455
if (shouldDelete(key)) {
455456
deletions.add(key);
@@ -459,7 +460,8 @@ final class CredentialStoreStateMachine
459460

460461
final identityPoolConfig = authConfig.identityPoolConfig;
461462
if (identityPoolConfig != null) {
462-
final identityPoolKeys = CognitoIdentityPoolKeys(identityPoolConfig);
463+
final identityPoolKeys =
464+
CognitoIdentityPoolKeys(identityPoolConfig.poolId);
463465
for (final key in identityPoolKeys) {
464466
if (shouldDelete(key)) {
465467
deletions.add(key);

packages/auth/amplify_auth_cognito_dart/lib/src/state/machines/fetch_auth_session_state_machine.dart

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -56,11 +56,6 @@ final class FetchAuthSessionStateMachine
5656
/// The registered auth outputs.
5757
AuthOutputs? get _authConfig => get();
5858

59-
/// The registered identity pool config
60-
// TODO(nikahsn): remove after refactoring CognitoIdentityPoolKeys to use
61-
// AmplifyOutputs type
62-
CognitoIdentityCredentialsProvider? get _identityPoolConfig => get();
63-
6459
/// Invalidates the current session, forcing a refresh on the next retrieval
6560
/// of credentials.
6661
///
@@ -464,7 +459,7 @@ final class FetchAuthSessionStateMachine
464459
String? existingIdentityId,
465460
_FederatedIdentity? federatedIdentity,
466461
}) async {
467-
if (_identityPoolConfig == null || _authConfig?.identityPoolId == null) {
462+
if (_authConfig?.identityPoolId == null) {
468463
throw const InvalidAccountTypeException.noIdentityPool();
469464
}
470465
try {
@@ -501,7 +496,7 @@ final class FetchAuthSessionStateMachine
501496
// session expired in an identity pool not supporting unauthenticated
502497
// access and we should prevent further attempts at refreshing.
503498
await manager.clearCredentials(
504-
CognitoIdentityPoolKeys(_identityPoolConfig!),
499+
CognitoIdentityPoolKeys(_authConfig!.identityPoolId!),
505500
);
506501
Error.throwWithStackTrace(
507502
e.toSessionExpired('The AWS credentials could not be retrieved'),
@@ -573,15 +568,20 @@ final class FetchAuthSessionStateMachine
573568
late Iterable<String> keys;
574569
switch (userPoolTokens.signInMethod) {
575570
case CognitoSignInMethod.default$:
576-
keys = CognitoUserPoolKeys(expect());
571+
if (_authConfig?.userPoolClientId != null) {
572+
keys = CognitoUserPoolKeys(_authConfig!.userPoolClientId!);
573+
}
574+
577575
case CognitoSignInMethod.hostedUi:
578-
keys = HostedUiKeys(expect());
576+
if (_authConfig?.userPoolClientId != null) {
577+
keys = HostedUiKeys(_authConfig!.userPoolClientId!);
578+
}
579579
}
580580
await manager.clearCredentials([
581581
...keys,
582-
if (_identityPoolConfig != null)
582+
if (_authConfig?.identityPoolId != null)
583583
// Clear associated AWS credentials
584-
...CognitoIdentityPoolKeys(_identityPoolConfig!),
584+
...CognitoIdentityPoolKeys(_authConfig!.identityPoolId!),
585585
]);
586586
Error.throwWithStackTrace(
587587
e.toSessionExpired('The tokens could not be refreshed'),

packages/auth/amplify_auth_cognito_dart/lib/src/state/machines/hosted_ui_state_machine.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ final class HostedUiStateMachine
3232
String get runtimeTypeName => 'HostedUiStateMachine';
3333

3434
CognitoOAuthConfig get _config => expect();
35-
HostedUiKeys get _keys => HostedUiKeys(_config);
35+
HostedUiKeys get _keys => HostedUiKeys(_config.appClientId);
3636
SecureStorageInterface get _secureStorage => getOrCreate();
3737

3838
/// The platform-specific behavior.
@@ -194,7 +194,7 @@ final class HostedUiStateMachine
194194
// credentials.
195195
if (_identityPoolConfig != null) {
196196
await manager.clearCredentials(
197-
CognitoIdentityPoolKeys(_identityPoolConfig!),
197+
CognitoIdentityPoolKeys(_identityPoolConfig!.poolId),
198198
);
199199

200200
await manager.loadSession();

packages/auth/amplify_auth_cognito_dart/lib/src/state/machines/sign_in_state_machine.dart

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -61,11 +61,6 @@ final class SignInStateMachine
6161
/// Parameters to the flow.
6262
late SignInParameters parameters;
6363

64-
/// The configured identity pool.
65-
// TODO(nikahsn): remove after refactoring CognitoIdentityPoolKeys to use
66-
// AmplifyOutputs type
67-
CognitoIdentityCredentialsProvider? get identityPoolConfig => get();
68-
6964
AuthOutputs get _authOutputs {
7065
final authOutputs = get<AuthOutputs>();
7166
if (authOutputs?.userPoolId == null ||
@@ -741,9 +736,9 @@ final class SignInStateMachine
741736

742737
// Clear anonymous credentials, if there were any, and fetch authenticated
743738
// credentials.
744-
if (identityPoolConfig case final identityPoolConfig?) {
739+
if (_authOutputs.identityPoolId case final identityPoolId?) {
745740
await manager.clearCredentials(
746-
CognitoIdentityPoolKeys(identityPoolConfig),
741+
CognitoIdentityPoolKeys(identityPoolId),
747742
);
748743

749744
await manager.loadSession();

packages/auth/amplify_auth_cognito_test/lib/common/mock_config.dart

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -135,9 +135,11 @@ final hostedUiConfig = CognitoOAuthConfig.fromAuthOutputs(mockConfig.auth!);
135135
final authConfig = AuthConfiguration.fromAmplifyOutputs(mockConfig);
136136
final userPoolConfig = authConfig.userPoolConfig!;
137137
final identityPoolConfig = authConfig.identityPoolConfig!;
138-
final userPoolKeys = CognitoUserPoolKeys(userPoolConfig);
139-
final deviceKeys = CognitoDeviceKeys(userPoolConfig, userSub);
140-
final identityPoolKeys = CognitoIdentityPoolKeys(identityPoolConfig);
138+
final userPoolKeys = CognitoUserPoolKeys(mockConfig.auth!.userPoolClientId!);
139+
final deviceKeys =
140+
CognitoDeviceKeys(mockConfig.auth!.userPoolClientId!, userSub);
141+
final identityPoolKeys =
142+
CognitoIdentityPoolKeys(mockConfig.auth!.identityPoolId!);
141143
final userPoolTokens = CognitoUserPoolTokens(
142144
accessToken: accessToken,
143145
idToken: idToken,

packages/auth/amplify_auth_cognito_test/test/flows/hostedui/hosted_ui_platform_test.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ void main() {
2626
late SecureStorageInterface secureStorage;
2727
late HostedUiPlatform platform;
2828
late DependencyManager dependencyManager;
29-
final keys = HostedUiKeys(hostedUiConfig);
29+
final keys = HostedUiKeys(hostedUiConfig.appClientId);
3030

3131
AWSLogger().logLevel = LogLevel.verbose;
3232

packages/auth/amplify_auth_cognito_test/test/plugin/auth_providers_test.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -66,8 +66,8 @@ void main() {
6666

6767
seedStorage(
6868
secureStorage,
69-
userPoolKeys: CognitoUserPoolKeys(userPoolConfig),
70-
identityPoolKeys: CognitoIdentityPoolKeys(identityPoolConfig),
69+
userPoolKeys: CognitoUserPoolKeys(userPoolConfig.appClientId),
70+
identityPoolKeys: CognitoIdentityPoolKeys(identityPoolConfig.poolId),
7171
);
7272

7373
await plugin.addPlugin(authProviderRepo: testAuthRepo);

0 commit comments

Comments
 (0)