Home > Net >  How to modify a users firebase authentication token claims?
How to modify a users firebase authentication token claims?

Time:08-07

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()
        .getUserByEmail("[email protected]");

    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 at com.google.common.collect.ImmutableMap.put(ImmutableMap.java:468)

Firebase Github

CodePudding user response:

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)

CodePudding user response:

Looking at that doc, it seems you can set claims by specifying a Map with the new values (ie. no need to specify values you are not modifying).

  • Related