La mejor manera de enumerar los usuarios con customClaims

votos
1

Acabo de intentar enumerar los usuarios en función de Firebase

Y quiero enumerar sólo los usuarios si un administrador (customClaims)

Ahora me gusta este trabajo y su

exports.listAdmins = functions.https.onRequest(async (req, res) => {
  cors(req, res, () => {});
  const token = req.body.token;
  try {
    const decodedToken = await admin.auth().verifyIdToken(token);
    if (decodedToken) {
      let users = [];
      const list = async (nextPageToken) => {
        await admin.auth().listUsers(1000, nextPageToken).then(async (result) => {
          result.users.forEach((userRecord) => {
            const user = userRecord.toJSON();
            if (user.customClaims && user.customClaims.admin) {
              users.push(user);
            }
          });
          if (result.pageToken) {
            await list(result.pageToken)
          }
        })
      };
      await list()
      res.status(200).send({
        success: 'SUCCESS',
        users: users
      });
    }
  } catch (error) {
    res.status(500).send({error: 'SOMETHING_WRONG'});
  }
});

Pero me preguntaba sobre el rendimiento si tuviera muchos usuarios 100000?

Cualquier forma mejor para filtrar la lista? utilizando admin.auth().listUsers()?

Publicado el 19/12/2018 a las 14:16
fuente por usuario
En otros idiomas...                            


1 respuestas

votos
3

Como se puede ver en la documentación de la API para Auth.listUsers () , no sólo Listusers (), y no hay otra alternativa para filtrar los usuarios por cualquier criterio. Listado muchos usuarios podrían evidentemente tipo de una operación costosa. Considere lugar almacenar información acerca de sus usuarios en una base de datos y consulta la base de datos en su lugar.

También es libre de presentar una solicitud de función para la funcionalidad que usted piensa que le falta a cualquier SDK Firebase.

Respondida el 19/12/2018 a las 17:08
fuente por usuario

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more