Laravel Packages
1 min read
Grant: Enum-Based Roles and Permissions for Laravel
Grant is a modern, lightweight role and permission authorization package powered entirely by native PHP 8.2+ backed enums.
Grant: Enum-Based Roles and Permissions for Laravel
Traditional permission packages require database migrations for roles, permissions, and intermediate pivot tables. For many SaaS applications with static authorization trees, database lookups add unnecessary query overhead.
Defining Permissions with Native Enums
Grant replaces database tables with native PHP backed enums:
namespace App\Enums;
enum Permission: string
{
case ViewAnalytics = 'analytics.view';
case ManageBilling = 'billing.manage';
case InviteMembers = 'members.invite';
}
namespace App\Enums;
use Grant\Concerns\HasPermissions;
enum Role: string
{
use HasPermissions;
case Admin = 'admin';
case Member = 'member';
public function permissions(): array
{
return match($this) {
self::Admin => Permission::cases(),
self::Member => [Permission::ViewAnalytics],
};
}
}
Zero database queries, full static analysis, instant autocompletion, and zero authorization drift.