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

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
Tighten logo

Tighten

We help companies turn great ideas into amazing apps, products, and services.

Tighten
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
No Compromises logo

No Compromises

Joel and Aaron, the two seasoned devs from the No Compromises podcast, are now available to hire for your Laravel project. ⬧ Flat rate of $9500/mo. ⬧ No lengthy sales process. ⬧ No contracts. ⬧ 100% money back guarantee.

No Compromises
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
Securing Laravel logo

Securing Laravel

The essential security resource for Laravel devs, covering everything you need to keep your apps secure. Sign up to receive weekly security tips and monthly in depth articles, diving deep into security concepts you need to know!

Securing Laravel