De acuerdo con la documentación, para verificar el rol del usuario, debe verificar el idToken del usuario actual. ¿Pero dónde conseguirlo? Acabo de encontrar el recibo en el cliente.
Traté de hacer esto:
app.get("/admin-cp", function (req, res) { const sessionCookie = req.cookies.session || ""; admin .auth() .verifySessionCookie(sessionCookie, true ) .then((userData) => { console.log("Logged in:", userData.email) console.log('Авторизован. Доступ в админ панель открыт') const customToken = admin.auth().createCustomToken(userData.uid) admin .auth() .verifyIdToken(customToken) .then((claims) => { if (claims.admin === true) { // Allow access to admin resource. } }); res.sendFile(path.join(initial_path, "admin-cp/main-admin_cp.html")); }) .catch((error) => { console.log('Не авторизован. Ошибка', error, ' отсутвует userData') res.redirect("/login"); }); }); code: 'auth/argument-error', message: 'First argument to verifyIdToken() must be a Firebase ID token string.'Idealmente, debería pasar el token de identificación en los encabezados de su solicitud de API desde el lado del cliente.
const idToken = await firebase.auth().currentUser.getIdToken() const res = await fetch('/api-url', { headers: { authorization: idToken } })Luego puede leer el token en el lado del servidor:
const idToken = req.headers.authorization; if (!idToken) return res.status(401).send("Unauthorized") // verify token using verifySessionCookie() here