> Faqs > Cómo asegurar una instalación de Laravel Nova para el acceso por roles

Cómo asegurar una instalación de Laravel Nova para el acceso por roles

Tengo una instalación de Nova, para la administración de contenido de una aplicación Laravel.

En la web de documentación de Nova explican cómo crear un gate para comprobar el email del usuario que accede a la aplicación, pero no me parece lo suficientemente seguro ni versátil.

En mi aplicación ya uso un sistema de roles para Laravel, implementado mediante el package "spatie/laravel-permission". Quisiera que mi instalación de Nova usase los permisos definidos en este sistema de roles.

¿Cómo puedo modificar el sistema de seguridad de Nova para hacer que solo los usuarios con rol "admin" puedan acceder al sistema de administración?

Respuestas

Lo primero y más importante! Nova permite el acceso a cualquier usuario cuando el enviroment es "local". Por lo tanto, ten en cuenta que en producción tienes que tener el .env asignando una variable APP_NEV que no sea "local". Por ejemplo:

APP_ENV=production

Ese detalle es bien importante, ya que si no lo cambias, por mucho que modifiques el gate de Laravel Nova, estarías dejando acceso a cualquier persona al sistema de administración.

Luego, ya para modificar el gate de nova tienes que ir al archivo de la ruta:

app/Providers/NovaServiceProvider.php

Allí modificar el gate "viewNova" para usar el sistema de roles. Te quedaría un código así:

protected function gate()
{
    Gate::define('viewNova', function ($user) {
        return $user->hasRole('admin');
    });
}
Miguel Angel
3090 138 206 17