Skip to content

Commit 773fe8a

Browse files
committed
Install and setup Filament v4
1 parent 9d090ab commit 773fe8a

File tree

5 files changed

+1862
-74
lines changed

5 files changed

+1862
-74
lines changed

app/Models/User.php

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,11 @@
55
use App\Concerns\HasTimestamps;
66
use App\Concerns\PreparesSearch;
77
use App\Enums\NotificationType;
8+
use App\Policies\UserPolicy;
89
use Carbon\Carbon;
10+
use Filament\Facades\Filament;
11+
use Filament\Models\Contracts\FilamentUser;
12+
use Filament\Panel;
913
use Illuminate\Contracts\Auth\MustVerifyEmail;
1014
use Illuminate\Database\Eloquent\Builder;
1115
use Illuminate\Database\Eloquent\Factories\HasFactory;
@@ -17,7 +21,7 @@
1721
use Laravel\Sanctum\HasApiTokens;
1822
use Laravel\Scout\Searchable;
1923

20-
final class User extends Authenticatable implements MustVerifyEmail
24+
final class User extends Authenticatable implements MustVerifyEmail, FilamentUser
2125
{
2226
use HasApiTokens;
2327
use HasFactory;
@@ -456,4 +460,11 @@ public function isNotificationAllowed(string $notification): bool
456460
return NotificationType::from($notificationType)->getClass() === $notification;
457461
});
458462
}
463+
464+
public function canAccessPanel(Panel $panel): bool
465+
{
466+
$guard = Filament::getAuthGuard();
467+
468+
return Auth::guard($guard)->user()->can(UserPolicy::ADMIN, User::class);
469+
}
459470
}
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
<?php
2+
3+
namespace App\Providers\Filament;
4+
5+
use Filament\Http\Middleware\Authenticate;
6+
use Filament\Http\Middleware\AuthenticateSession;
7+
use Filament\Http\Middleware\DisableBladeIconComponents;
8+
use Filament\Http\Middleware\DispatchServingFilamentEvent;
9+
use Filament\Pages\Dashboard;
10+
use Filament\Panel;
11+
use Filament\PanelProvider;
12+
use Filament\Support\Colors\Color;
13+
use Filament\Widgets\AccountWidget;
14+
use Filament\Widgets\FilamentInfoWidget;
15+
use Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse;
16+
use Illuminate\Cookie\Middleware\EncryptCookies;
17+
use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken;
18+
use Illuminate\Routing\Middleware\SubstituteBindings;
19+
use Illuminate\Session\Middleware\StartSession;
20+
use Illuminate\View\Middleware\ShareErrorsFromSession;
21+
22+
class AdminPanelProvider extends PanelProvider
23+
{
24+
public function panel(Panel $panel): Panel
25+
{
26+
return $panel
27+
->default()
28+
->id('admint')
29+
->path('admin-filament')
30+
->login()
31+
->colors([
32+
'primary' => '#18bc9c',
33+
])
34+
->discoverResources(in: app_path('Filament/Resources'), for: 'App\Filament\Resources')
35+
->discoverPages(in: app_path('Filament/Pages'), for: 'App\Filament\Pages')
36+
->pages([
37+
Dashboard::class,
38+
])
39+
->discoverWidgets(in: app_path('Filament/Widgets'), for: 'App\Filament\Widgets')
40+
->widgets([
41+
AccountWidget::class,
42+
FilamentInfoWidget::class,
43+
])
44+
->middleware([
45+
EncryptCookies::class,
46+
AddQueuedCookiesToResponse::class,
47+
StartSession::class,
48+
AuthenticateSession::class,
49+
ShareErrorsFromSession::class,
50+
VerifyCsrfToken::class,
51+
SubstituteBindings::class,
52+
DisableBladeIconComponents::class,
53+
DispatchServingFilamentEvent::class,
54+
])
55+
->authMiddleware([
56+
Authenticate::class,
57+
])
58+
->brandLogo(asset('images/laravelio-logo.svg'))
59+
->unsavedChangesAlerts()
60+
->spa();
61+
}
62+
}

bootstrap/providers.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
<?php
22

33
return [
4-
App\Providers\AppServiceProvider::class,
54
App\Markdown\MarkdownServiceProvider::class,
5+
App\Providers\AppServiceProvider::class,
6+
App\Providers\Filament\AdminPanelProvider::class,
67
];

composer.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
"blade-ui-kit/blade-icons": "^1.6",
1111
"codeat3/blade-simple-icons": "^7.1",
1212
"embed/embed": "^4.4",
13+
"filament/filament": "^4.0",
1314
"guzzlehttp/guzzle": "^7.2",
1415
"guzzlehttp/psr7": "^2.7",
1516
"innocenzi/bluesky-notification-channel": "^0.2.0",
@@ -79,7 +80,8 @@
7980
],
8081
"post-autoload-dump": [
8182
"Illuminate\\Foundation\\ComposerScripts::postAutoloadDump",
82-
"@php artisan package:discover --ansi"
83+
"@php artisan package:discover --ansi",
84+
"@php artisan filament:upgrade"
8385
],
8486
"setup": [
8587
"php -r \"file_exists('.env') || copy('.env.example', '.env');\"",

0 commit comments

Comments
 (0)