Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

281
Views
Limite las páginas a cierto tipo de usuario Nuxt y Firebase Firestore (autorización basada en roles)

necesita algunos consejos aquí.

La aplicación web My Nuxt & Firebase/Firestore tendrá 3 tipos diferentes de usuarios:

  1. subcontratista
  2. contratista
  3. trabajador

Primero, quiero que mis usuarios, cada vez que inicien sesión, inicien sesión en la página relacionada con su tipo de usuario. por ejemplo: inicio de sesión de subcontratista empujar a /subcontratista, inicio de sesión de contratista empujar a /contratista, etc.

También quiero que el usuario solo pueda ver páginas relacionadas con sus tipos. (el usuario A solo puede ver /A y /Atwo, el usuario B solo puede ver /B y /Btwo, el usuario C solo puede ver /C y /Ctwo, etc.)

Quiero evitar el uso de funciones en la nube si puedo, por lo que entiendo, no puede implementar su aplicación en el plan gratuito si su aplicación tiene funciones en la nube.

De todos modos, ¿está por debajo de la forma correcta de hacerlo?

  1. Cree en firestore, un documento de usuarios que contenga detalles del tipo de usuario, por ejemplo: "tipo de usuario: subcontratista"
  2. En el middleware, haga la lógica, según el tipo de usuario. (en mi caso, necesito tener un archivo js de middleware de 3 diferencias (isSubcontractor.js, isContractor.js, isWorker.js)
  3. agregue middleware: "el archivo de middleware", dentro de mi página

Si es correcto, ¿cómo hacer los pasos 1 y 2? ¿Hay algún artículo o código fuente de la aplicación de la vida real que explique brevemente lo que quería?

Principiante aquí. Ya he buscado por aquí y por allá en Internet, pero no puedo encontrar la respuesta que quería :(

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Las reclamaciones personalizadas son definitivamente una opción, pero eso requeriría funciones en la nube o un servidor. Sí, puede almacenar el tipo de usuario en su documento de Firestore y verificarlo antes de que se muestre la página o cuando sea necesario. Sin embargo, debe asegurarse de que solo los usuarios autorizados puedan cambiar su función.

El flujo sería tan simple como:

  1. El usuario inicia sesión
  2. Lectura de su función del documento de Firestore
  3. Redirigir a la página relevante
 import { getAuth, signInWithEmailAndPassword } from "firebase/auth"; import { getFirestore, doc, getDoc } from "firebase/firestore"; const auth = getAuth(); const firestore = getFirestore(); const login = async () => { const { user } = await signInWithEmailAndPassword(auth, email, password); // Reading user document const docRef = doc(firestore, "users", user.uid); const docSnap = await getDoc(docRef); const { userType } = docSnap.data() switch (userType) { case 'contractor': // redirect to /contractor break; case 'sub-contractor': // redirect to /sub-contractor break; default: // redirect to default page break; } }

También quiero que el usuario solo pueda ver páginas relacionadas con sus tipos.

Puede seguir el mismo método en un middleware del lado del servidor. Primero lea el tipo de usuario y luego verifique si el usuario está autorizado para visitar la página. Si no, redirija a cualquier otra página.

La mejor parte de usar Reclamos personalizados es que también puede leerlos en las reglas de seguridad de Realtime Database, Firestore y Storage. Si almacena el tipo de usuario en Firestore, no podrá leerlo en las reglas de seguridad de ningún otro servicio de Firebase. El uso de Firestore también incurre en un cargo adicional por leer el rol del usuario cada vez. Necesita una función en la nube para configurar solo el reclamo personalizado y no leer el reclamo cada vez.

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!