How to modify a users firebase authentication token claims?

How can I update a users claims if the map returned is an immutable map?

This is example code from Firebase Auth docs on how to update claims:

    UserRecord user = FirebaseAuth.getInstance()

    Map<String, Object> currentClaims = user.getCustomClaims(); //This returns an immutable map
    if (Boolean.TRUE.equals(currentClaims.get("admin"))) {
      currentClaims.put("level", 10); //This will throw an exception

      FirebaseAuth.getInstance().setCustomUserClaims(user.getUid(), currentClaims);

Firebase doc src

Exception thrown: UnsupportedOperationException: null

Firebase Github

>Solution :

You can simply make a copy of the map to make modifications to it using the HashMap copy constructor.

Map<String, Object> immutableCustomClaims = user.getCustomClaims();
Map<String, Object> mutableCustomClaims = new HashMap<>(immutableCustomClaims)

Leave a Reply