En este articulo aprenderas a crear un panel administrativo haciendo uso de Laravel 11 + Laravel breeze + Spatie permission, negando el acceso a usuarios que no sean administradores del sitio.
Laravel new admin
composer require spatie/laravel-permission
'providers' => [
// ...
Spatie\Permission\PermissionServiceProvider::class,
];
php artisan vendor:publish --provider="Spatie\Permission\PermissionServiceProvider"
Php artisan migrate
use Spatie\Permission\Traits\HasRoles;
use HasRoles;
$middleware->alias([
'role' => \Spatie\Permission\Middleware\RoleMiddleware::class,
'permission' => \Spatie\Permission\Middleware\PermissionMiddleware::class,
'role_or_permission' => \Spatie\Permission\Middleware\RoleOrPermissionMiddleware::class
]);
use Spatie\Permission\Models\Role;
$role = Role::create(['name' => 'admin']);
$role = Role::create(['name' => 'cliente']);
php artisan make:middleware administrador
use Illuminate\Support\Facades\Auth; public function handle(Request $request, Closure $next): Response
{
if(auth()->check() && Auth::user()->hasRole('admin')){
return $next($request);
}
return redirect('/');
}
->withMiddleware(function (Middleware $middleware) {
$middleware->alias([
'admin' => \App\Http\Middleware\administrador::class,
]);
})
use App\Http\Middleware\administrador;
use App\Http\Controllers\admin\DashBoardController;
Route::middleware([administrador::class])->group(function () {
Route::get('/dashboard', [DashBoardController::class, 'index'])->name('dashboard');
Route::get('/profile', [ProfileController::class, 'edit'])->name('profile.edit');
Route::patch('/profile', [ProfileController::class, 'update'])->name('profile.update');
Route::delete('/profile', [ProfileController::class, 'destroy'])->name('profile.destroy');
});
php artisan make:controller admin\DashBoardController
public function index(){
return view('dashboard');
}
])->assignRole('cliente');
<form method="POST" action="{{ route('logout') }}">
@csrf
<a href="route('logout')" onclick="event.preventDefault();
this.closest('form').submit();" class="text-black ring-transparent text-white">
{{ __('Log Out') }}
</a>
</form>
Etiquetas:
Gusto por las motos Harley Davidson, el rock n roll y la informática, creador de este blog para difusión del conocimiento libre, interesado en el mundo open source.
Configurar interfaces Fortigate, VPN IPSEC Telmex Infinitum
Compra tu dominio y correo corporativo para tu negocio al mejor precio del mercado
No se pudo completar la operación (error 0x00000709) en Windows
Como editar las rutas de autenticacion en Laravel Jetsream
Admin panel + breeze + spatie permission - Laravel 11
How to config Enlace Punto a punto con antenas Ubiquiti