Permisos y roles en Laravel con SPATIE

Más
2 años 2 meses antes - 1 año 11 meses antes #27 por luispindola
Permisos y roles en Laravel con SPATIE Publicado por luispindola
spatie.be/docs/laravel-permission/v5/introduction

Instalacion:
composer require spatie/laravel-permission

Agregar en config/app.php
'providers' => [
// ...
Spatie\Permission\PermissionServiceProvider::class,
];

Creamos los archivos de las migraciones y los permisos con:
php artisan vendor:publish --provider="Spatie\Permission\PermissionServiceProvider"


Creamos las tablas con:
php artisan migrate

Cargando los middlewires en:
app/Http/Kernel.php[/
$routeMiddleware = [
// ...
'role' => \Spatie\Permission\Middlewares\RoleMiddleware::class,
'permission' => \Spatie\Permission\Middlewares\PermissionMiddleware::class,
'role_or_permission' => \Spatie\Permission\Middlewares\RoleOrPermissionMiddleware::class,
];


Creamos controlador para Roles:
php artisan make:controller RolController --resource

Creamos las rutas:
Route::group(['middleware' => ['auth']],function(){
Route::resource('roles',RolController::class);
});



Definir un SuperAdmin

en App/Providers/AuthServiceProvider.php
public function boot()
{
$this->registerPolicies();

Gate::before(function ($user, $ability) {return $user->email == '[email protected]' ?? null;});
//
}


Crear un seeder con los permisos:
php artisan make:seeder SeaderTablaPermisos

<?php

namespace Database\Seeders;

use Illuminate\Database\Seeder;


//spatie
use Spatie\Permission\Models\Permission;

class SeaderTablaPermisos extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        $permisos = [
            //Operaciones sobre tabla roles
            'ver-rol',
            'crear-rol',
            'editar-rol',
            'borrar-rol',

            //Operacions sobre tabla blogs
            'ver-user',
            'crear-user',
            'editar-user',
            'borrar-user'
        ];

        

        foreach($permisos as $permiso) {
            Permission::create(['name'=>$permiso]);
        }
    }
}


php artisan db:seed --class=SeaderTablaPermisos


SE AGREGA AL MODELO QUE SE QUIERA CONTROLAR
//Agregamos spatie
use Spatie\Permission\Traits\HasRoles;

y en cada controlador:
use Spatie\Permission\Models\Role;

Para controlar el acceso a los menú de AdminLTE con Spatie:
[code][
'text' => 'Users',
'url' => 'users',
'icon' => 'file',
'label_color' => 'success',
'can' => 'manage-blog',
'role' => 'User',
],
[/code]


github.com/jeroennoten/Laravel-AdminLTE/wiki/Menu-Configuration

TUTORIAL:
programmerclick.com/article/35711507664/
 
Última Edición: 1 año 11 meses antes por luispindola.

Por favor, Identificarse o Crear cuenta para unirse a la conversación.

Tiempo de carga de la página: 0.093 segundos