getAuthenticatorAssuranceLevel method
Returns the Authenticator Assurance Level (AAL) for the active session.
You can use this to check whether the current user needs to be shown a screen to verify their MFA factors.
Implementation
AuthMFAGetAuthenticatorAssuranceLevelResponse
getAuthenticatorAssuranceLevel() {
final session = _client.currentSession;
if (session == null) {
return AuthMFAGetAuthenticatorAssuranceLevelResponse(
currentLevel: null,
nextLevel: null,
currentAuthenticationMethods: [],
);
}
final payload = Jwt.parseJwt(session.accessToken);
final currentLevel = AuthenticatorAssuranceLevels.values
.firstWhereOrNull((level) => level.name == payload['aal']);
var nextLevel = currentLevel;
if (session.user.factors
?.any((factor) => factor.status == FactorStatus.verified) ??
false) {
nextLevel = AuthenticatorAssuranceLevels.aal2;
}
final amr = (payload['amr'] as List)
.map((e) => AMREntry.fromJson(Map.from(e)))
.toList();
return AuthMFAGetAuthenticatorAssuranceLevelResponse(
currentLevel: currentLevel,
nextLevel: nextLevel,
currentAuthenticationMethods: amr,
);
}