🚀 Available for Freelance, Remote, and Full-Time Opportunities. Let's build something amazing together.

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.

A

Author

3 weeks ago

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.