hexters/hexa-lite

Filament Hexa Lite is a effortless role and permission management plugin for Filament

2.0.0 2025-05-14 14:27 UTC

This package is auto-updated.

Last update: 2025-05-14 14:49:06 UTC


README

Latest Stable Version Total Downloads License

Filament Hexa Lite is a free and developer-friendly role and permission management plugin for FilamentPHP.
It helps you manage user roles and access permissions across Resources, Pages, and Widgets — with support for multi-panel apps via custom guards.

Currently in version 2, Hexa Lite is more intuitive, customizable, and production-ready.

Banner

Versions

Version Doc.
V1 Read Doc.
V2 Read Doc.

Index

Installation

Install the package via Composer:

composer require hexters/hexa-lite

Run the database migration:

php artisan migrate

Register the plugin in your Filament panel:

use Filament\Panel;
use Hexters\HexaLite\HexaLite;

public function panel(Panel $panel): Panel
{
    return $panel
        ->plugins([
            HexaLite::make(),
        ]);
}

Apply the trait to your User model:

use Hexters\HexaLite\HexaLiteRolePermission;

class User extends Authenticatable
{
    use HasFactory, Notifiable;
    use HexaLiteRolePermission;
}

Adding Role Selection

To allow role assignment via the admin panel, add a select input to your UserResource form:

use Filament\Forms;

public static function form(Form $form): Form
{
    return $form
        ->schema([
            Forms\Components\TextInput::make('email')
                ->unique(ignoreRecord: true)
                ->required(),

            Forms\Components\Select::make('roles')
                ->label(__('Role Name'))
                ->relationship('roles', 'name')
                ->placeholder(__('Superuser')),
        ]);
}

Multi Panel Support

Hexa Lite supports multiple panels, each with its own auth guard.

public function panel(Panel $panel): Panel
{
    return $panel->authGuard('reseller');
}
public function panel(Panel $panel): Panel
{
    return $panel->authGuard('customer');
}

Configure guards in config/auth.php.

Defining Permissions

Define permissions using the defineGates() method on Resources, Pages, or Widgets:

use Hexters\HexaLite\HasHexaLite;

class UserResource extends Resource
{
    use HasHexaLite;

    public function defineGates(): array
    {
        return [
            'user.index' => __('Allows viewing the user list'),
            'user.create' => __('Allows creating a new user'),
            'user.update' => __('Allows updating users'),
            'user.delete' => __('Allows deleting users'),
        ];
    }
}

Access Control

Users with no assigned role are treated as Superusers and have full access by default.

To restrict access to a resource:

public static function canAccess(): bool
{
    return hexa()->can('user.index');
}

Check Permissions in Code

Useful in queued jobs, commands, or background services:

return hexa()->user(User::first())->can('user.index');

Visible Access

Use visible() to conditionally display UI elements:

Actions\CreateAction::make('create')
    ->visible(fn() => hexa()->can(['user.index', 'user.create']));

Laravel Integration

You can still use Laravel’s native authorization:

Auth::user()->can('user.create');

Gate::allows('user.create');

Gate::forUser(User::first())->allows('user.create');

@can('user.create')
    // Blade directive
@endcan

Available Traits

Trait Description
HexaLiteRolePermission Apply to your Authenticatable user model
HasHexaLite Use in Resources, Pages, Widgets, or Clusters
UuidGenerator Use on models with uuid fields
UlidGenerator Use on models with ulid fields

Features in Pro Version

Need more flexibility and control?

Filament Hexa Pro v2 unlocks powerful features designed for serious projects:

  • Role & permission descriptions
  • Custom role sorting
  • Gate grouping (with nested access)
  • Multi-tenancy support
  • Meta option storage

All of this — starting at just $1 per license.
A small investment for a much more capable permission system.

Learn more in the official documentation:
👉 Hexa Pro Documentation

License

This project is open-source and licensed under the MIT License. You are free to use, modify, and distribute it with attribution.

Issues & Feedback

Found a bug or want to contribute?

Open an issue at: https://github.com/hexters/hexa-lite/issues

Thank you for using Filament Hexa Lite!