signInWithEmailAndPassword method

Future<UserCredential> signInWithEmailAndPassword(
  1. {required String email,
  2. required String password}
)

Signs in a user with email and password.

email The user's email address. password The user's password.

Authenticates the user and sets up session.

Returns a Future containing the UserCredential.

Throws FusabaseAuthException if email or password is invalid or authentication fails.

Example:

UserCredential credential = await auth.signInWithEmailAndPassword(
  email: 'user@example.com',
  password: 'password123'
);

Implementation

Future<UserCredential> signInWithEmailAndPassword({
  required String email,
  required String password,
}) async {
  await _initFuture;
  if (email == "" || password == "") {
    throw AuthUtils.authErrorHandler(
      status: globals.ErrorMap[globals.ErrorCode.INVALID_ARGS] ?? 999,
      message: AuthErrorMessageTemplates.format(
        AuthErrorMessageTemplates.INVALID_PARAM,
        ['email or password'],
      ),
      authType: null,
      stackTrace: null,
    );
  }
  final credDetails = await this._authHelper.authenticateAndGetDetails(
    email: email,
    password: password,
  );
  final User user = User(
    user: credDetails["userDetails"],
    auth: this,
    accessToken: credDetails["accessToken"],
    refreshToken: credDetails["refreshToken"],
  );

  await __setCredTokens({
    "accessToken": credDetails["accessToken"],
    "refreshToken": credDetails["refreshToken"],
  });
  await user.getFUSABASEToken();

  final AuthCredential creds = EmailAuthProvider.credential(email: email);
  final userCred = UserCredential(user: user, credential: creds);

  __updateCurrentUser(user);

  _syncLoginPersistence(
    credDetails["accessToken"].token,
    credDetails["refreshToken"],
  );

  return userCred;
}