login method
Creates a new anonymous account and returns its session.
Invokes the AnonymousIdp.beforeAnonymousAccount callback if configured,
which may prevent account creation if the endpoint is protected.
Implementation
Future<AuthSuccess> login(
final Session session, {
final String? token,
final Transaction? transaction,
}) async {
return DatabaseUtil.runInTransactionOrSavepoint(
session.db,
transaction,
(final transaction) async {
if (config.onBeforeAnonymousAccountCreated != null) {
try {
await config.onBeforeAnonymousAccountCreated!(
session,
token: token,
transaction: transaction,
);
} on Exception catch (e, st) {
session.log(
'Exception in onBeforeAnonymousAccountCreated',
exception: e,
stackTrace: st,
);
throw AnonymousAccountBlockedException(
reason: AnonymousAccountBlockedExceptionReason.denied,
);
}
}
final result = await utils.createAnonymousAccount(
session,
transaction: transaction,
);
await _userProfiles.createUserProfile(
session,
result.authUserId,
UserProfileData(),
transaction: transaction,
);
return _tokenManager.issueToken(
session,
authUserId: result.authUserId,
method: method,
scopes: result.scopes,
transaction: transaction,
);
},
);
}