DEV Community

Discussion on: GraphQL Auth with Passport and Lighthouse PHP

Collapse
 
ramirezfer772 profile image
ramirezfer772

Hola gracias en verdad aprecio tu tiempo. Me estoy interesando mucho en esto de graphql pero ando algo confundido y tengo una duda ahora, sabes como puedo crear un middleware propio en el schema para que solo los admin puedan hacer ciertas queries/mutations (ejemplos ver productos protegidos o eliminar otros usuarios)? Ya sabes si NO son admin le salgan un mensaje tipo "unauthorized". Se me ocurre algo como hacer una consulta con "user" parecida a esto:
user {
id
rank
} y si rank es mayor o igual a 7 es admin (logica del sistema para ser un admin) pero como lo hago middleware para luego usarlo en las queries/mutations protejidos? Gracias

Thread Thread
 
joselfonseca profile image
Jose Luis Fonseca

Para eso nosotros usamos github.com/spatie/laravel-permission y la directiva de middleware lighthouse-php.com/4.7/api-referen... El paquete de Spatie tiene un middleware para revisar si un usuario tiene o no un rol o permiso.

Thread Thread
 
ramirezfer772 profile image
ramirezfer772 • Edited

Hola, ya estube revisando spatie, actualmente tengo un rol "writer" de ejemplo, ahora mi duda es: ¿sabes como le paso el rol writer desde la directiva middleware de lighthouse para que el middleware de spatie sepa que es writer?

Tengo esto actualmente en mi schema para traer a todos los paises de mi tabla:

countries: [Country!]! @middleware(checks: ["auth:api", "Spatie\Permission\Middlewares\RoleMiddleware"]) @all

El error dice que RoleMiddleware de spatie le falta un argumento que es precisamente el rol.

Error: imgur.com/a/QAwBJhS

Como le paso el rol writer al middleware de spatie? Te agradesco una vez más.

Thread Thread
 
ramirezfer772 profile image
ramirezfer772

Ya encontre la solución la dejo aquí por si le sirve a alguien en el futuro:

countries: [Country!]! @middleware(checks: ["auth:api", "role:writer"]) @all