// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 import 'package:amplify_auth_cognito_dart/amplify_auth_cognito_dart.dart'; // ignore: implementation_imports import 'package:amplify_auth_cognito_dart/src/flows/hosted_ui/hosted_ui_platform.dart'; import 'package:amplify_core/amplify_core.dart'; import 'package:amplify_secure_storage_dart/amplify_secure_storage_dart.dart'; import 'amplifyconfiguration.dart'; Future configure({ String? environmentName, HostedUiPlatformFactory? hostedUiPlatformFactory, }) async { if (Amplify.isConfigured) { return; } await Amplify.addPlugin( AmplifyAuthCognitoDart( secureStorageFactory: AmplifySecureStorageWorker.factoryFrom( // ignore: invalid_use_of_visible_for_testing_member macOSOptions: MacOSSecureStorageOptions(useDataProtection: false), ), hostedUiPlatformFactory: hostedUiPlatformFactory, ), ); environmentName ??= const String.fromEnvironment( 'AMPLIFY_ENVIRONMENT', defaultValue: 'main', ); await Amplify.configure(amplifyEnvironments[environmentName]!); } Future signIn({ required String username, required String password, }) async { return Amplify.Auth.signIn( username: username, password: password, ); } Future hostedSignIn({ AuthProvider? provider, }) async { return Amplify.Auth.signInWithWebUI(provider: provider); } Future forgotPassword({required String username}) { return Amplify.Auth.resetPassword(username: username); } Future confirmSignIn( String confirmationValue, { Map? userAttributes, }) { return Amplify.Auth.confirmSignIn( confirmationValue: confirmationValue, options: ConfirmSignInOptions( pluginOptions: CognitoConfirmSignInPluginOptions( userAttributes: userAttributes, ), ), ); } Future resetPassword({ required String username, }) { return Amplify.Auth.resetPassword(username: username); } Future confirmResetPassword({ required String username, required String newPassword, required String confirmationCode, }) { return Amplify.Auth.confirmResetPassword( username: username, newPassword: newPassword, confirmationCode: confirmationCode, ); } Future changePassword({ required String oldPassword, required String newPassword, }) async { await Amplify.Auth.updatePassword( oldPassword: oldPassword, newPassword: newPassword, ); } Future fetchAuthSession() async { final res = await Amplify.Auth.fetchAuthSession(); return res as CognitoAuthSession; } Future> fetchUserAttributes() async { return Amplify.Auth.fetchUserAttributes(); } Future> fetchDevices() async { return Amplify.Auth.fetchDevices(); } Future rememberDevice() async { await Amplify.Auth.rememberDevice(); } Future forgetDevice() async { await Amplify.Auth.forgetDevice(); } Future updateUserAttribute({ required AuthUserAttributeKey key, required String value, UpdateUserAttributeOptions? options, }) async { return Amplify.Auth.updateUserAttribute( userAttributeKey: key, value: value, options: options, ); } Future> updateUserAttributes({ required List attributes, UpdateUserAttributesOptions? options, }) async { return Amplify.Auth.updateUserAttributes( attributes: attributes, options: options, ); } Future confirmUserAttribute({ required AuthUserAttributeKey key, required String confirmationCode, }) async { return Amplify.Auth.confirmUserAttribute( userAttributeKey: key, confirmationCode: confirmationCode, ); } Future resendUserAttributeConfirmationCode({ required AuthUserAttributeKey key, ResendUserAttributeConfirmationCodeOptions? options, }) async { return Amplify.Auth.resendUserAttributeConfirmationCode( userAttributeKey: key, options: options, ); } Future signOut({required bool globalSignOut}) async { final plugin = Amplify.Auth.getPlugin(AmplifyAuthCognitoDart.pluginKey); return plugin.signOut( options: SignOutOptions(globalSignOut: globalSignOut), ); } Future deleteUser() async { await Amplify.Auth.deleteUser(); }