chore: add env variables for filament panel management

This commit is contained in:
idevakk
2025-09-29 00:41:01 +05:30
parent af52ef6ba6
commit 166bcce967
6 changed files with 73 additions and 8 deletions

View File

@@ -68,3 +68,7 @@ ACTIVITY_LOGGER_ENABLED=true
ACTIVITY_LOGGER_TABLE_NAME=activity_log ACTIVITY_LOGGER_TABLE_NAME=activity_log
FILAMENT_LOG_VIEWER_DRIVER=raw FILAMENT_LOG_VIEWER_DRIVER=raw
FILAMENT_ROUTE=dash
FILAMENT_ENABLE_LOGIN=true
FILAMENT_ENABLE_REGISTER=false
FILAMENT_ENABLE_PROFILE=false

View File

@@ -2,6 +2,8 @@
namespace App\Models; namespace App\Models;
use Filament\Models\Contracts\FilamentUser;
use Filament\Panel;
use Illuminate\Auth\MustVerifyEmail; use Illuminate\Auth\MustVerifyEmail;
use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Foundation\Auth\User as Authenticatable; use Illuminate\Foundation\Auth\User as Authenticatable;
@@ -10,7 +12,7 @@ use Illuminate\Support\Str;
use Laravel\Fortify\TwoFactorAuthenticatable; use Laravel\Fortify\TwoFactorAuthenticatable;
use Spatie\Permission\Traits\HasRoles; use Spatie\Permission\Traits\HasRoles;
class User extends Authenticatable class User extends Authenticatable implements FilamentUser
{ {
/** @use HasFactory<\Database\Factories\UserFactory> */ /** @use HasFactory<\Database\Factories\UserFactory> */
use HasFactory, Notifiable, TwoFactorAuthenticatable, MustVerifyEmail, HasRoles; use HasFactory, Notifiable, TwoFactorAuthenticatable, MustVerifyEmail, HasRoles;
@@ -61,4 +63,9 @@ class User extends Authenticatable
->map(fn ($word) => Str::substr($word, 0, 1)) ->map(fn ($word) => Str::substr($word, 0, 1))
->implode(''); ->implode('');
} }
public function canAccessPanel(Panel $panel): bool
{
return $this->hasPermissionTo('manage panels');
}
} }

View File

@@ -28,14 +28,11 @@ class DashPanelProvider extends PanelProvider
{ {
public function panel(Panel $panel): Panel public function panel(Panel $panel): Panel
{ {
return $panel $panel = $panel
->default() ->default()
->id('dash') ->id('dash')
->path('dash') ->path(config('filament-php.route'))
->login() ->colors(config('filament-php.colors'))
->colors([
'primary' => Color::Amber,
])
->discoverResources(in: app_path('Filament/Resources'), for: 'App\Filament\Resources') ->discoverResources(in: app_path('Filament/Resources'), for: 'App\Filament\Resources')
->discoverPages(in: app_path('Filament/Pages'), for: 'App\Filament\Pages') ->discoverPages(in: app_path('Filament/Pages'), for: 'App\Filament\Pages')
->pages([ ->pages([
@@ -81,5 +78,19 @@ class DashPanelProvider extends PanelProvider
}), }),
]) ])
->routes(fn () => FilamentMails::routes()); ->routes(fn () => FilamentMails::routes());
if (config('filament-php.enable_login')) {
$panel->login();
}
if (config('filament-php.enable_registration')) {
$panel->register();
}
if (config('filament-php.enable_profile')) {
$panel->profile();
}
return $panel;
} }
} }

18
config/filament-php.php Normal file
View File

@@ -0,0 +1,18 @@
<?php
use Filament\Support\Colors\Color;
return [
'route' => env('FILAMENT_ROUTE', 'dash'),
'colors' => [
'primary' => Color::Teal,
'danger' => Color::Red,
'gray' => Color::Zinc,
'info' => Color::Blue,
'success' => Color::Green,
'warning' => Color::Amber,
],
'enable_login' => env('FILAMENT_ENABLE_LOGIN', true),
'enable_registration' => env('FILAMENT_ENABLE_REGISTER', false),
'enable_profile' => env('FILAMENT_ENABLE_PROFILE', false),
];

View File

@@ -17,7 +17,7 @@ class DatabaseSeeder extends Seeder
$this->call([ $this->call([
RoleSeeder::class, RoleSeeder::class,
FilamentAdminSeeder::class, FilamentAdminSeeder::class,
]); ]);
} }
} }

View File

@@ -26,6 +26,31 @@
--color-accent: var(--color-neutral-800); --color-accent: var(--color-neutral-800);
--color-accent-content: var(--color-neutral-800); --color-accent-content: var(--color-neutral-800);
--color-accent-foreground: var(--color-white); --color-accent-foreground: var(--color-white);
--color-primary-50: #f0f3fd;
--color-primary-100: #e5eafa;
--color-primary-200: #cfd8f6;
--color-primary-300: #b2beef;
--color-primary-400: #929ce7;
--color-primary-500: #787ddc;
--color-primary-600: #615dce;
--color-primary-700: #5853b7;
--color-primary-800: #444192;
--color-primary-900: #3b3a75;
--color-primary-950: #232244;
--color-app-primary-50: oklch(0.958 0.012 291.4);
--color-app-primary-100: oklch(0.915 0.027 292.8);
--color-app-primary-200: oklch(0.839 0.051 291.47);
--color-app-primary-300: oklch(0.755 0.081 290.76);
--color-app-primary-400: oklch(0.674 0.11 290.49);
--color-app-primary-500: oklch(0.589 0.137 290.02);
--color-app-primary-600: oklch(0.506 0.16 288.92);
--color-app-primary-700: oklch(0.418 0.144 288.02);
--color-app-primary-800: oklch(0.321 0.111 288.33);
--color-app-primary-900: oklch(0.232 0.08 287.92);
--color-app-primary-950: oklch(0.183 0.064 288.2);
} }
@layer theme { @layer theme {