Lauta Problema con sistema de roles y permisos

Lauta Publicada hace 3 meses | 6

Problema con sistema de roles y permisos

↑ Me gusta (0)

Hola, tengo un problema con el sistema de roles y permisos shinobi, es que no funcionan los permisos, es decir, puedo crear los roles, agregarle los permisos pero cuando relaciono un rol con un usuario, los permisos no funcionan, el usuario puede ingresar libremente a cualquier parte del sistema como si no existiera el rol con sus debidos permisos. No logro encontrar la raiz de dicho problema.

Estoy usando laravel 5.8.

Decirme que parte del codigo se necesita que comparta. Gracias!


  • Hola Lauta, El problema que tienes es que seguramente trabajabas con la versión anterior en la que se usaban los middleware 'has.role' y 'has.premission'; a partir de la versión 4 de shinobi el middleware quedó en desuso pues laravel 5.8 provee el midleware 'can' y cumple la misma función.

    La sintaxis para usar el middleware en las rutas sería algo así: Route::get('/', '[email protected]')->name('nombre.de.ruta')->middleware('can:nombre.del.permiso*');

    Además puedes usar el herper @can para mostrar u ocultar información en las vistas. La sintaxis sería algo así: @can('nombre.del.permiso') tú código para cuando el usuario tiene permiso @else tu código para cuando el usuario NO tiene permiso @endcan

    Espero que te sirva. Saludos

    Gabriel Sosa Publicada hace 3 meses ↑ Me gusta (2)

  • En las rutas para usar el middleware estoy usando can y aun asi no me funcionan. Los roles los puedo crear, agregarle permisos y asociar a usuarios sin problemas, pero como dije, los permisos no hacen efecto.

    Lauta Publicada hace 2 meses ↑ Me gusta (0)

  • Tienes que usar la versión 4, ya que es basicamente lo mismo.

    Aquí: https://caffeinatedpackages.com/guide/packages/shinobi.html#usage

    Aquí puedes usuar @can , igual que en la versión 3.4, pero sin el middleware: 'has.permission', ya que va utilizar el método de Laravel 'can' => \Illuminate\Auth\Middleware\Authorize::class

    Ángel De La Cruz Publicada hace 2 meses ↑ Me gusta (0)

  • Hola estimados, yo tengo el mismo problema, tengo todo configurado para la versión de laravel 5.8 y shinobi 4.2 pero el metodo @can no me filtra los permisos asignados al rol ni dentro de la vista ni en la ruta utilizando el ->middleware('can:xxx'); intente reinstalar shinobi y sigue sin funcionar, pero si utilizo el middleware('role:admin'); por ejemplo si funcional.
    Alguien tendra alguna solución? faltara algo? Saludos.

    Sr Misterioso Publicada hace 2 meses ↑ Me gusta (0)

  • Acabo de encontrar la respuesta... la versión de shinobi 4.2 tiene un problema con "can". elimine esa instalación e instale "composer require "caffeinated/shinobi":"4.0.0" y funciono de forma correcta inmediatamente. Saludos y espero que sirva.

    Sr Misterioso Publicada hace 2 meses ↑ Me gusta (0)

  • Muchas gracias por la explicacion y la orientacion de todos. realmente dure dias tratando de entender que tenia mal y la documentacion del paquete no la veo clara. tan solo tenia q usar el 'can' en la ruta.

    Jose Gregorio Publicada hace 1 mes ↑ Me gusta (0)

Inicia sesión para responderle a Lauta