getAuthenticatorAssuranceLevel method

AuthMFAGetAuthenticatorAssuranceLevelResponse getAuthenticatorAssuranceLevel()

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,
  );
}