68. Crear crud de roles


2 comentarios

Inicia sesión para comentar

Comentarios:

  • John Mejia

    John Mejia hace 7 meses

    Modificación de la tabla de permisos

    Editamos el archivo de migración asociado (por ej. database\migrations\xxxx_create_permission_tables.php) para adicionar el campo "description":

    return new class extends Migration
    {
       public function up(): void
       {
     	   // ...
           Schema::create($tableNames['permissions'], function (Blueprint $table) {
               $table->bigIncrements('id');
               $table->string('name');
               $table->string('description');
               $table->string('guard_name');
               $table->timestamps();
               $table->unique(['name', 'guard_name']);
           });
     	   // ...
    	}
    }

    A continuación modificamos el seeder en database\seeders\RoleSeeder.php y asignamos una descripción para cada nombre, por ejemplo:

    Permission::create([
    			'name' => 'admin.home', 
    			'description' => 'Ver Dashboard'
    			])->syncRoles([$role1, $role2]);

    Aprovechamos para adicionar también el manejo de permisos para la gestión de roles (los asignamos al rol administrador o $role1):

    Permission::create([
     	'name' => 'admin.roles.index',
     	'description' => 'Listar roles'
     	])->assignRole($role1);
    Permission::create([
     	'name' => 'admin.roles.create',
     	'description' => 'Crear roles'
    	])->assignRole($role1);
    Permission::create([
    	'name' => 'admin.roles.edit',
    	'description' => 'Editar roles'
    	])->assignRole($role1);
    Permission::create([
    	'name' => 'admin.roles.destroy',
    	'description' => 'Eliminar roles'
    	])->assignRole($role1);

    Antes de reconstruir la base de datos, recuerda limpiar el directorio de imágenes (public\storage\posts). Este proceso puede ser realizado directamente desde el seeder adicionando la siguiente línea en el script database\seeders\PostSeeder.php:

    class PostSeeder extends Seeder
    {
       public function run(): void
       {
           // Creamos la carpeta si no existe ya
           if (!File::exists(public_path('storage/posts'))) {
               File::makeDirectory(public_path('storage/posts'), 0777, true);
           }
           else {
               // Si existe, remueve TODO contenido previo del directorio
               File::cleanDirectory(public_path('storage/posts'));
           }
     	// ...
    	}
    }

    Ahora si procedemos a reconstruir las tablas ejecutando por línea de comandos:

    php artisan migrate:fresh --seed

    Al finalizar el proceso, continuar con la creación del controlador y las vistas del CRUD.

  • John Mejia

    John Mejia hace 7 meses

    Creación del controlador para roles
    Ejecutar por línea de comandos:

    php artisan make:controler Admin\RoleController -r

    En el archivo routes\admin.php adicionamos el enrutamiento para roles:

    Route::resource('roles', RolController::class)
    	->except('show')
    	->names('admin.roles');

    Adicionamos el menú en el archivo config\adminlte.php:

      'menu' => [
      ...
           [
               'text' => 'Roles',
               'route' => 'admin.roles.index',
               'icon' => 'far fa-fw fa-users-cog',
      		   'can' => 'admin.roles.index'
           ],
    ...
    ]

    Modificamos el archivo de controlador en app\Http\Controllers\Admin\RolController.php.

    Y creamos las respectivas vistas en resources\views\admin\roles.