I am trying to give custom claims to certain users for my react web app and I couldn't get past this error.
Error:
TypeError: getCurves is not a function
./node_modules/jose/lib/registry/ec_curves.js
2 |
3 | const curves = new Set()
4 |
> 5 | if (getCurves().includes('prime256v1')) {
6 | curves.add('P-256')
7 | }
8 |
and this is the function the function which triggers it
admin.auth().setCustomUserClaims(uid, {
admin: true,
})
this is how my admin sdk looks like
import * as admin from 'firebase-admin';
import serviceAccount from './Servicekey.json';
admin.initializeApp({
credential: admin.credential.cert(serviceAccount),
databaseURL: <databaseURL>
});
export default admin;
I used to update user profile (password, email) in similar fashion from my system but cannot do that either.
firebase-admin
? You must not use it on frontend. That has admin privileges, doesn't obey security rules and has full access to your Firebase project. You should use that in secure env like server or cloud functions only. It's not supposed to be used in frontend. In my case I used getToken() from next-auth
I know it's been a couple of months, but I just spent several days figuring this out, I ended up reverting to an older version of firebase-admin. Try reverting to version 9.0.0.
I reverted by going to the package.json file and changing the firebase-admin version to 9.0.0 then running "npm i".
I was also getting this error from firebase-admin
v11.5 which was running in a NextJS v12 getServerSideProps
function. The server was not erroring, but the client was which wasn't making any sense.
It turned out that I was running the firebase-admin
verifyIdToken
in my _app.tsx
file in this function
MyApp.getServerSideProps = async (appContext: AppContext) => { ... }
is attached to the page component, and isn't server-side only at all, instead of this
export async function getServerSideProps(appContext: AppContext) { ... }