DEV Community

loading...

Discussion on: GraphQL Auth with Passport and Lighthouse PHP

Collapse
ramirezfer772 profile image
ramirezfer772

Hola, ya implemente el login en mi sistema y funciona bien, pero sabes los middleware de laravel como 'auth' y 'guest' dejaron de funcionar, es decir en mi web.php tengo algo como esto:

Route::get('/login', 'MainController@index')->middleware('guest');
Route::get('/protected', 'MainController@index')->middleware('auth');

Pero no funcionan ahora, es decir si un usuario logueado entra a /login el middleware 'guest' no funciona y por lo tanto puedo acceder, o si entro a /protected logueado no logro ver la pagina, no funciona 'auth'.

Estoy usando react.

Sabes algo al respecto o como lo hago funcionar?? Te agradesco mucho

Collapse
joselfonseca profile image
Jose Luis Fonseca Author

Hola, Este paquete no tiene nada que ver con esa funcionalidad, no la altera ni la usa. El guard que usa es API y es stateless por ende no tiene session persistente. No es el objetivo del paquete.

Saludos!

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 Author

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

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