Get expert guidance in a few days with a Laravel code review

Hexa Lite

hexters/hexa-lite image

Hexa Lite stats

Downloads
37
Stars
6
Open Issues
0
Forks
0

View on GitHub →

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

Filament Hexa Lite

Filament Hexa Lite is an effortless role & permission plugin for Filament, inspired by the concept of hexters/ladmin. This concept facilitates managing each role and permission inline with code and provides an easy-to-understand interface.

This plugin is intended only for Administrators, as it has a separate admin table from the user table provided by Laravel. Additionally, this plugin will replace the auth.php configuration file.

About Filament

FilamentPHP is a lightweight and flexible PHP framework designed for building web applications. It aims to simplify application development by providing a clear structure and high modularity. The framework emphasizes speed, efficiency, and comes with many built-in features that facilitate effective web application development.

Installation

Note
You need to install the filament package first. You can refer to the official site at FilamentPHP

You can install it by running the command below:

composer require hexters/hexa-lite

Then, proceed with the installation of the hexa plugin:

php artisan hexa:install

Install database migrations:

php artisan migrate

Create a superadmin account for admin login:

php artisan hexa:account --create

Plugin Setup

Add the Filament HexaLite plugin to the created panel. If you haven't created one yet, see how to do it here Creating a new panel.

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

Declaring Access Permissions

Resource & Page

To declare access permissions for Resources and Pages, for Clusters you need to upgrade to the hexters/hexa package.

use Hexters\HexaLite\Traits\HexAccess;
 
. . .
 
use HexAccess;
 
protected static ?string $permissionId = 'access.user';
 
protected static ?string $descriptionPermission = 'Admin can manage User accounts';
 
/**
* Additional permission (optional)
* You can add it or not depending on the needs of your application.
*/
protected static ?array $subPermissions = [
'access.user.create' => 'Can Create',
'access.user.edit' => 'Can Edit',
'access.user.delete' => 'Can Delete',
];
 
public static function canAccess(): bool
{
return hexa()->can(static::$permissionId);
}
 
. . .

Actions, etc.

You can use the visible() method on several Class Components. For example, let's try it on a button.

Tables\Actions\EditAction::make()
->visible(hexa()->can('access.user.edit')),

For giving access to classes extended to Filament\Resources\Pages\EditRecord, Filament\Resources\Pages\CreateRecord, Filament\Resources\Pages\ListRecords, Filament\Resources\Pages\ViewRecords, you can use:

/**
* @param array<string, mixed> $parameters
*/
public static function canAccess(array $parameters = []): bool
{
return hexa()->can('access.user.edit');
}

Checking Access Permissions

Access can be granted to Resources, Pages, Widgets, Button Actions, etc. The access can be given as shown below.

Using the hexa utility function:

hexa()->can('hexa.admin')

Using Laravel's auth can function:

auth()->user()?->can('hexa.admin')

Using Laravel's Gate class:

use Illuminate\Support\Facades\Gate;
 
. . .
 
Gate::allows('hexa.admin')

In a blade template, you can use it as shown below.

<div>
@can('hexa.admin')
// Content here ...
@endcan
</div>

License

This project is licensed under the MIT License - see the LICENSE file for details.

Issue

If you encounter any issues with this plugin, you can submit them to the repository: Filament Hexa Lite Issue

Thank you for using this plugin. We hope it speeds up your process in creating powerful applications.

Happy Coding πŸ§‘β€πŸ’» πŸ§‘β€πŸ’» πŸ§‘β€πŸ’»

hexters photo

Coding is an Art

Cube

Laravel Newsletter

Join 40k+ other developers and never miss out on new tips, tutorials, and more.


Hexters Hexa Lite Related Articles

Laravel 10.33 Released image

Laravel 10.33 Released

Read article
Kirschbaum logo

Kirschbaum

Providing innovation and stability to ensure your web application succeeds.

Kirschbaum
Statamic logo

Statamic

The drop-in ready Laravel CMS you’re been waiting for. Go full-stack or headless, flat file or database – it’s up to you.

Statamic
Acquaint Softtech logo

Acquaint Softtech

Acquaint Softtech offers AI-ready Laravel developers who onboard in 48 hours at $3000/Month with no lengthy sales process and a 100 percent money-back guarantee.

Acquaint Softtech
The Certification of Competence for Laravel logo

The Certification of Competence for Laravel

A community-driven, proctored assessment across 4 levels designed to validate real-world Laravel knowledge, from Junior to mastery-level Artisan. Official Vue.js, Official Nuxt, Angular, React, JS certifications also available.

The Certification of Competence for Laravel
LoadForge logo

LoadForge

Scalable load testing for web apps & APIs. Simulate real-world traffic and identify breaking points and performance limits with powerful, scalable load tests designed for Laravel.

LoadForge
Honeybadger logo

Honeybadger

Simple developer-focused application monitoring for Laravel. Error tracking, log management, uptime monitoring, status pages, and more!

Honeybadger