finishRegistration method
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:
- EmailAccountRequestExceptionReason.expired if the account request has already expired.
- EmailAccountRequestExceptionReason.policyViolation if the password does not comply with the password policy.
- EmailAccountRequestExceptionReason.invalid if the
registrationTokenis invalid.
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,
);
}),
);
}