signIn method

  1. @override
Future<AuthType> signIn(
  1. String username,
  2. String password
)
override

Signs in the given username with the given password and returns the AuthType of the sign-in process.

Implementation

@override
Future<AuthType> signIn(
  String username,
  String password,
) async {
  final completer = Completer<AuthType>();

  _amplifyAuth
      .signIn(
    username: username,
    password: password,
  )
      .then(
    (result) async {
      _logger.fine('Successfully signed in: $result');
      await _completeSignInNextStep(result.nextStep, completer);
    },
  ).onError<aws_cognito.NotAuthorizedServiceException>(
    (e, stackTrace) {
      completer.completeError(
        SignInNotAllowedException(
          message: e.message,
          innerException: e,
          innerStackTrace: stackTrace,
        ),
      );
    },
  ).onError<aws_cognito.InvalidStateException>(
    (e, stackTrace) {
      // sign out the user to
      // clear the invalid state
      signOut();

      completer.completeError(
        SignInException(
          message: 'failed to sign in user: ${e.message}',
          innerException: e,
          innerStackTrace: stackTrace,
        ),
      );
    },
  ).onError<aws_cognito.AuthException>(
    (e, stackTrace) {
      completer.completeError(
        SignInException(
          message: 'failed to sign in user: ${e.message}',
          innerException: e,
          innerStackTrace: stackTrace,
        ),
      );
    },
  );

  return completer.future;
}