authenticate static method
Future<GoogleAuthSuccess>
authenticate(
- Session session, {
- required String idToken,
- Transaction? transaction,
Authenticates a user using an ID token.
If the external user ID is not yet known in the system, a new AuthUser
is created for it.
Implementation
static Future<GoogleAuthSuccess> authenticate(
final Session session, {
required final String idToken,
final Transaction? transaction,
}) async {
final accountDetails = await admin.fetchAccountDetails(
session,
idToken: idToken,
);
var googleAccount = await GoogleAccount.db.findFirstRow(
session,
where: (final t) => t.userIdentifier.equals(
accountDetails.userIdentifier,
),
transaction: transaction,
);
final authUserNewlyCreated = googleAccount == null;
if (googleAccount == null) {
await DatabaseUtil.runInTransactionOrSavepoint(
session.db,
transaction,
(final transaction) async {
final authUser = await AuthUsers.create(
session,
transaction: transaction,
);
googleAccount = await admin.linkGoogleAuthentication(
session,
authUserId: authUser.id,
accountDetails: accountDetails,
transaction: transaction,
);
},
);
}
return (
googleAccountId: googleAccount!.id!,
authUserId: googleAccount!.authUserId,
details: accountDetails,
authUserNewlyCreated: authUserNewlyCreated,
);
}