Skip to content

Commit

Permalink
wip
Browse files Browse the repository at this point in the history
Signed-off-by: Lloric Mayuga Garcia <[email protected]>
  • Loading branch information
lloricode committed Aug 24, 2024
1 parent dbfe334 commit 6909d3f
Show file tree
Hide file tree
Showing 5 changed files with 23 additions and 51 deletions.
45 changes: 1 addition & 44 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,50 +41,7 @@ php artisan vendor:publish --tag="filament-permission-config"

This is the contents of the published config file:

```php
<?php

declare(strict_types=1);

return [
/**
* You can add as many guards as you want with as many role names as you want,
* as long as super admin and admin are required.
*
* role_names.*.super_admin is required
* role_names.*.admin is required
*/
'role_names' => [

// keyed by guard name
'web' => [

// required this cannot rename or delete or modify permissions
/**
* no permission attached to this role, but it always skips gate checks
* see https://freek.dev/1325-when-to-use-gateafter-in-laravel
*/
'super_admin' => 'super_admin',

/**
* all permissions attached to this role
*/
'admin' => 'admin',

// as many as you want, below it can edit permissions but cannot rename or delete role names
// sample 'user' => 'user',
],
],

'seeders' => [
'roles' => \Lloricode\FilamentSpatieLaravelPermissionPlugin\Database\Seeders\DefaultRoleSeeder::class,
'permissions' => \Lloricode\FilamentSpatieLaravelPermissionPlugin\Database\Seeders\DefaultPermissionSeeder::class,
],

'translated' => false,
];

```
https://github.com/lloricode/filament-spatie-laravel-permission-plugin/blob/main/config/filament-permission.php

## Usage

Expand Down
15 changes: 15 additions & 0 deletions config/filament-permission.php
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,23 @@
],
],

/**
* You can use this seeder class to your own project level seeder.
* But this is also able to sync your adjusted permissions name by using the ready made artisan command
*
* `php artisan permission:sync`
*/
'seeders' => [

'roles' => \Lloricode\FilamentSpatieLaravelPermissionPlugin\Database\Seeders\DefaultRoleSeeder::class,

/**
* All permissions are generated base on your your setup.
*
* - public methods from Model policies class from your filament resources.
* - filament pages that's implements `\Lloricode\FilamentSpatieLaravelPermissionPlugin\Contracts\HasPermissionPages`.
* - filament widgets that's implements `\Lloricode\FilamentSpatieLaravelPermissionPlugin\Contracts\HasPermissionWidgets`.
*/
'permissions' => \Lloricode\FilamentSpatieLaravelPermissionPlugin\Database\Seeders\DefaultPermissionSeeder::class,
],

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

namespace Lloricode\FilamentSpatieLaravelPermissionPlugin\Contracts;

interface HasPermissionPage
interface HasPermissionPages
{
public static function canBeSeed(): bool;
}
4 changes: 2 additions & 2 deletions src/Database/Seeders/DefaultPermissionSeeder.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
use Filament\Panel;
use Illuminate\Support\Facades\Gate;
use Lloricode\FilamentSpatieLaravelPermissionPlugin\Config\PermissionConfig;
use Lloricode\FilamentSpatieLaravelPermissionPlugin\Contracts\HasPermissionPage;
use Lloricode\FilamentSpatieLaravelPermissionPlugin\Contracts\HasPermissionPages;
use Lloricode\FilamentSpatieLaravelPermissionPlugin\Contracts\HasPermissionWidgets;
use Lloricode\FilamentSpatieLaravelPermissionPlugin\Database\Seeders\Support\PermissionSeeder;
use Lloricode\FilamentSpatieLaravelPermissionPlugin\Database\Seeders\Support\ResourceSeeder;
Expand Down Expand Up @@ -104,7 +104,7 @@ private static function getPermissionsFromPages(): array
$permissionNames = collect();

foreach (Filament::getPages() as $page) {
if (app($page) instanceof HasPermissionPage && $page::canBeSeed()) {
if (app($page) instanceof HasPermissionPages && $page::canBeSeed()) {
$permissionNames->push(FilamentPermissionGenerateName::getPagePermissionName($page));
}
}
Expand Down
8 changes: 4 additions & 4 deletions src/FilamentPermissionGenerateName.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
use Filament\Facades\Filament;
use Filament\Panel;
use Illuminate\Support\Str;
use Lloricode\FilamentSpatieLaravelPermissionPlugin\Contracts\HasPermissionPage;
use Lloricode\FilamentSpatieLaravelPermissionPlugin\Contracts\HasPermissionPages;
use Lloricode\FilamentSpatieLaravelPermissionPlugin\Contracts\HasPermissionWidgets;

final class FilamentPermissionGenerateName
Expand Down Expand Up @@ -40,10 +40,10 @@ function () use ($panel) {
);
}

/** @param \Lloricode\FilamentSpatieLaravelPermissionPlugin\Contracts\HasPermissionPage|class-string<\Lloricode\FilamentSpatieLaravelPermissionPlugin\Contracts\HasPermissionPage> $page */
public static function getPagePermissionName(HasPermissionPage | string $page): string
/** @param \Lloricode\FilamentSpatieLaravelPermissionPlugin\Contracts\HasPermissionPages|class-string<\Lloricode\FilamentSpatieLaravelPermissionPlugin\Contracts\HasPermissionPages> $page */
public static function getPagePermissionName(HasPermissionPages | string $page): string
{
if ($page instanceof HasPermissionPage) {
if ($page instanceof HasPermissionPages) {
$page = $page::class;
}

Expand Down

0 comments on commit 6909d3f

Please sign in to comment.