PHP code example of soyhuce / laravel-fluent-policy
1. Go to this page and download the library: Download soyhuce/laravel-fluent-policy library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
soyhuce / laravel-fluent-policy example snippets
class PostPolicy extends FluentPolicy
{
public function delete(User $user, Post $post): Response
{
return $this->denyWhen($post->user_id !== $user->id)
->denyWhen($post->published_at !== null)
->allow();
}
}
use Illuminate\Auth\Access\HandlesAuthorization;
class PostPolicy
{
use HandlesAuthorization;
public function delete(User $user, Post $post): bool
{
if ($post->user_id !== $user->id) {
return false;
}
if ($post->published_at !== null) {
return false;
}
return true;
}
}
use Illuminate\Auth\Access\Response;
use Soyhuce\FluentPolicy\FluentPolicy;
class PostPolicy extends FluentPolicy
{
public function delete(User $user, Post $post): Response
{
return $this->denyWhen($post->user_id !== $user->id)
->denyWhen($post->published_at !== null)
->allow();
}
}
return $this->denyWhen($post->published_at !== null, 'You cannot delete a published post')
->allow();
return $this->denyWithStatusWhen($post->user_id !== $user->id, 404)
->allow();
// or $this->>allowWhen(...)->denyWithStatus(404);
return $this->denyAsNotFoundWhen($post->user_id !== $user->id)
->allow();
// or $this->>allowWhen(...)->denyAsNotFound();
use Illuminate\Auth\Access\Response;
use Soyhuce\FluentPolicy\FluentPolicy;
class PostPolicy extends FluentPolicy
{
public function delete(User $user, Post $post): Response
{
// Here, $post->published_at is Carbon or null
return $this->denyWhen($post->user_id !== $user->id)
->allowWhen($post->published_at === null) // 1
->allowWhen($post->published_at->isFuture()) // 2
->deny();
}
}
public function delete(User $user, Post $post): Response
{
return $this->denyWhen($post->user_id !== $user->id)
->allowWhen($post->published_at === null) // 1
->allowWhen($post->published_at->isFuture()) // 2
->deny();
}
public function delete(User $user, Post $post): Response
{
$this->denyWhen($post->user_id !== $user->id)
->allowWhen($post->published_at === null);
// From here, PHPStan understands that $post->published_at is not null
return $this->allowWhen($post->published_at->isFuture())
->deny();
}
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.