finishRegistration method

Future<AuthSuccess> finishRegistration(
  1. Session session, {
  2. required String registrationToken,
  3. required String password,
  4. Transaction? transaction,
})

Completes a new account registration, creating a new auth user with a profile and attaching the given email account to it.

Throws an EmailAccountRequestException in case of errors, with reason:

Throws an AuthUserBlockedException if the auth user is blocked.

Returns a session for the newly created user.

Implementation

Future<AuthSuccess> finishRegistration(
  final Session session, {
  required final String registrationToken,
  required final String password,
  final Transaction? transaction,
}) async {
  return DatabaseUtil.runInTransactionOrSavepoint(
    session.db,
    transaction,
    (final transaction) =>
        EmailIdpUtils.withReplacedServerEmailException(() async {
          final result = await utils.accountCreation.completeAccountCreation(
            session,
            completeAccountCreationToken: registrationToken,
            password: password,
            transaction: transaction,
          );

          await _userProfiles.createUserProfile(
            session,
            result.authUserId,
            UserProfileData(
              email: result.email,
            ),
            transaction: transaction,
          );

          return _tokenManager.issueToken(
            session,
            authUserId: result.authUserId,
            method: method,
            scopes: result.scopes,
            transaction: transaction,
          );
        }),
  );
}