Restringir accesos a controllers y views con un policy

php artisan make:policy PostPolicy

En AuthServiceProvider.php añadirlo:
protected $policies = [
        // 'App\Model' => 'App\Policies\ModelPolicy',
        Entry::class => EntryPolicy::class
    ];

En EntryPolicy.php:
public function update(User $user, Entry $entry) {
        return $user->id === $entry->user_id; // dará true o false
}

Y ahora ya solo llamar a ese policie desde una vista:
@can ('update',$entry) <!-- por defecto es el user logueado -->
...
@endcan

desde un controller:
$this->authorize('update',$entry); // el id_user coge el user logueado por defecto

O desde routes/web.php con un middleware:
Route::get('/entries/{entry}/edit', 'EntryController@edit')->middleware('can:update,entry');


No hay comentarios:

Publicar un comentario