use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
...
use AuthorizesRequests;
...
$this->authorize('esSuyo', $this->order);
Mostrando entradas con la etiqueta Policy. Mostrar todas las entradas
Mostrando entradas con la etiqueta Policy. Mostrar todas las entradas
Aplicar una policy a un componente de Livewire
El policy se define como siempre pero en el componente Livewire:
Policy
Los policy devuelven un booleano para autorizar o no autorizar seguir con la acción.
En app\Policies\PostPolicy.php:
SIEMPRE a todos los métodos hay que pasarle el método User, si queremos un policy que no se necesite estar autorizado entonces pasarlo como opcional con una ?:
Ejemplo:
Y en nuestro controller
php artisan make:policy PostPolicy
En app\Policies\PostPolicy.php:
SIEMPRE a todos los métodos hay que pasarle el método User, si queremos un policy que no se necesite estar autorizado entonces pasarlo como opcional con una ?:
public function estaPublicado(?User $user, Post $post) { ... }
Ejemplo:
public function esAutorDelPost(User $user, Post $post) {
if ($user->id == $post->user_id) {
return true;
}
else {
return false;
}
}
Y en nuestro controller
$this->authorize('esAutorDelPost', $post);
// Si ese Post no pertenece a ese user ya no deja seguir ejecutando el resto del método.
Restringir accesos a controllers y views con un policy
php artisan make:policy PostPolicy
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');
Suscribirse a:
Entradas (Atom)