validateMFACode method

  1. @override
Future<AuthType> validateMFACode(
  1. String code
)
override

Validates the given multi-factor authentication with the given code and returns the AuthType of the sign-in process.

Implementation

@override
Future<AuthType> validateMFACode(
  String code,
) async {
  final completer = Completer<AuthType>();

  _amplifyAuth
      .confirmSignIn(
    confirmationValue: code,
  )
      .then(
    (result) async {
      _logger.fine('Successfully validated MFA code: $result');
      await _completeSignInNextStep(result.nextStep, completer);
    },
  ).onError<aws_cognito.CodeMismatchException>((e, stackTrace) {
    completer.completeError(
      InvalidCodeException(
        message: e.message,
        innerException: e,
        innerStackTrace: StackTrace.current,
      ),
    );
  }).onError<aws_cognito.ExpiredCodeException>((e, stackTrace) {
    completer.completeError(
      ExpiredCodeException(
        message: e.message,
        innerException: e,
        innerStackTrace: StackTrace.current,
      ),
    );
  }).onError<aws_cognito.AuthException>((e, stackTrace) {
    completer.completeError(
      MFACodeValidationException(
        message: 'Failed to validate MFA code for user login',
        innerException: e,
        innerStackTrace: StackTrace.current,
      ),
    );
  });

  return completer.future;
}