aiinJwtEmail function

String? aiinJwtEmail(
  1. String token
)

The email claim of an AIIN JWT payload, or null when the token carries none or is not a JWT. Used to name provider entries after the account.

Implementation

String? aiinJwtEmail(String token) {
  final parts = token.split('.');
  if (parts.length != 3) return null;
  final Object? claims;
  try {
    claims = jsonDecode(
      utf8.decode(base64Url.decode(base64Url.normalize(parts[1]))),
    );
  } on FormatException {
    return null;
  } on ArgumentError {
    return null;
  }
  if (claims is! Map) return null;
  final email = claims['email'];
  return email is String && email.isNotEmpty ? email : null;
}