login method

Future<AuthSuccess> login(
  1. Session session, {
  2. required PasskeyLoginRequest request,
  3. Transaction? transaction,
})

Authenticates the client with the given Passkey credentials.

Returns the AuthUser's ID upon successful login.

Implementation

Future<AuthSuccess> login(
  final Session session, {
  required final PasskeyLoginRequest request,
  final Transaction? transaction,
}) async {
  return DatabaseUtil.runInTransactionOrSavepoint(session.db, transaction, (
    final transaction,
  ) async {
    final authUserId = await utils.authenticate(
      session,
      request: request,
      transaction: transaction,
    );

    final authUser = await _authUsers.get(
      session,
      authUserId: authUserId,
      transaction: transaction,
    );

    if (authUser.blocked) {
      throw AuthUserBlockedException();
    }

    return _tokenIssuer.issueToken(
      session,
      authUserId: authUserId,
      method: method,
      scopes: authUser.scopes,
      transaction: transaction,
    );
  });
}