create method

Future<AuthUserModel> create(
  1. Session session, {
  2. Set<Scope> scopes = const {},
  3. bool blocked = false,
  4. Transaction? transaction,
})

Creates a new auth user.

Implementation

Future<AuthUserModel> create(
  final Session session, {
  final Set<Scope> scopes = const {},
  final bool blocked = false,
  final Transaction? transaction,
}) async {
  return DatabaseUtil.runInTransactionOrSavepoint(session.db, transaction, (
    final transaction,
  ) async {
    final authUserToCreate =
        await _config.onBeforeAuthUserCreated?.call(
          session,
          scopes,
          blocked,
          transaction: transaction,
        ) ??
        (scopes: scopes, blocked: blocked);

    final authUser = await AuthUser.db.insertRow(
      session,
      AuthUser(
        blocked: authUserToCreate.blocked,
        scopeNames: authUserToCreate.scopes
            .map((final s) => s.name)
            .nonNulls
            .toSet(),
      ),
      transaction: transaction,
    );

    final createdAuthUser = authUser.toModel();

    await _config.onAfterAuthUserCreated?.call(
      session,
      createdAuthUser,
      transaction: transaction,
    );

    return createdAuthUser;
  });
}