ParsedToken type does not support allowed value types in Firebase custom claims (original) (raw)

[REQUIRED] Describe your environment

[REQUIRED] Describe the problem

When receiving an IdTokenResult for a user, the claims property is of type ParsedToken. This only provides for custom claim fields with the following signature:
[key: string]: string | object | undefined

But Firebase (and firebase-admin) support other types such as boolean and number. This results in confusion if you try to use a ParsedToken object as argument to match against custom claims. For example, my user can have the claim admin: true but that is invalid in a ParsedToken, you can only set admin: 'true' which does not match the boolean value.

I noticed this while using the reactfire library, as they use a ParsedToken to validate required claims.

Steps to reproduce:

1 - attempt to create a ParsedToken object with a boolean or numeric value.

Relevant Code:

const invalidClaims: ParsedToken = { admin: true, // not valid score: 500 // not valid }