getUserClaims<T extends Enum> method

  1. @override
Future<Map<T, bool>> getUserClaims<T extends Enum>({
  1. required List<T> enumValues,
  2. bool forceRefresh = false,
})
override

Pass the UserClaims type to get the claims for that user

Implementation

@override
Future<Map<T, bool>> getUserClaims<T extends Enum>({
  required List<T> enumValues,
  bool forceRefresh = false,
}) async {
  // Handle if they are not logged in
  if (_fbAuth.currentUser == null) {
    logd('AuthService: Current user is null! (getUserClaims()');
    return <T, bool>{};
  }

  var userClaims = <T, bool>{};
  var tokenResult = await _fbAuth.currentUser!.getIdTokenResult(forceRefresh);

  // For each tokenResult.claims, add it to the userClaims list if it matches an enum value
  for (var entry in tokenResult.claims!.entries) {
    var key = entry.key;
    var value = entry.value;

    for (var enumValue in enumValues) {
      if (enumValue.name == key) {
        userClaims[enumValue] = value as bool;
      }
    }
  }

  return userClaims;
}