PHP code example of eduardoribeirodev / base-policies
1. Go to this page and download the library: Download eduardoribeirodev/base-policies 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/ */
eduardoribeirodev / base-policies example snippets
return [
// Namespace onde suas políticas serão criadas
'namespace' => env('BASE_POLICIES_NAMESPACE', 'Policies'),
// Caminho onde seus modelos estão localizados
'models_path' => app_path('Models'),
// Formato de permissões: snake, kebab, camel, pascal, lower, upper
'permission_format' => env('BASE_POLICIES_PERMISSION_FORMAT', 'snake'),
// Separador de permissões: underscore, dot, hyphen, space, colon, slash, pipe
'permission_separator' => env('BASE_POLICIES_PERMISSION_SEPARATOR', 'colon'),
// Mapeamento de ações para permissões (customizável)
'permission_mappings' => [
'viewAny' => 'view',
'view' => 'view',
'create' => 'create',
'update' => 'update',
'delete' => 'delete',
'restore' => 'restore',
'forceDelete' => 'force_delete',
],
];
namespace App\Policies;
use App\Models\Post;
use App\Models\User;
use EduardoRibeiroDev\BasePolicies\Policies\BasePolicy;
class PostPolicy extends BasePolicy
{
// Herda automaticamente: viewAny, view, create, update, delete, restore, forceDelete
}
// Autorizar visualização
if ($user->can('view', $post)) {
// Usuário pode visualizar este post
}
// Autorizar criação
if ($user->can('create', Post::class)) {
// Usuário pode criar posts
}
// Usar no controller
$this->authorize('view', $post);
$this->authorize('delete', $post);
use EduardoRibeiroDev\BasePolicies\Facades\BasePolicies;
// Obter o nome formatado da permissão
$permissionName = BasePolicies::getPermissionName('view', 'Post');
// Resultado: 'view:post'
// Verificar permissão
$allowed = BasePolicies::checkPermission($user, 'view', 'Post');
// Obter rótulo formatado da permissão
$label = BasePolicies::getPermissionLabel('view:post');
// Resultado: 'Ver Post'
class PostPolicy extends BasePolicy
{
public function publish(User $user, Post $post): bool
{
return $user->hasPermissionTo('publish:post');
}
public function archive(User $user, Post $post): bool
{
return $user->hasPermissionTo('archive:post');
}
}