From ed7041a9c820a219cb984e8348938c365489b389 Mon Sep 17 00:00:00 2001 From: Seb Kay Date: Thu, 28 Nov 2024 20:31:42 +0000 Subject: [PATCH 1/9] Create Login.php --- app/Filament/Pages/Auth/Login.php | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 app/Filament/Pages/Auth/Login.php diff --git a/app/Filament/Pages/Auth/Login.php b/app/Filament/Pages/Auth/Login.php new file mode 100644 index 0000000..50f5cf8 --- /dev/null +++ b/app/Filament/Pages/Auth/Login.php @@ -0,0 +1,23 @@ +environment('local')) { + $this->form->fill([ + 'email' => User::whereHas('roles', fn ($q) => $q->whereIn('name', [Role::ADMIN->value]))->first()->email, + 'password' => '12345', + 'remember' => true, + ]); + } + } +} From 7f29ce6dca74b5b52a84ed633fbdc742de847386 Mon Sep 17 00:00:00 2001 From: Seb Kay Date: Thu, 28 Nov 2024 20:41:07 +0000 Subject: [PATCH 2/9] Update AdminPanelProvider.php --- app/Providers/Filament/AdminPanelProvider.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Providers/Filament/AdminPanelProvider.php b/app/Providers/Filament/AdminPanelProvider.php index 1f49f1e..7afcb06 100644 --- a/app/Providers/Filament/AdminPanelProvider.php +++ b/app/Providers/Filament/AdminPanelProvider.php @@ -29,7 +29,7 @@ public function panel(Panel $panel): Panel ->default() ->id('admin') ->path('admin') - ->login() + ->login(\App\Filament\Pages\Auth\Login::class) ->colors([ 'primary' => '#1e293b', ]) From 9d634a8a82ad98ea573b5c5d06ac333bfbcc7c8d Mon Sep 17 00:00:00 2001 From: Seb Kay Date: Thu, 28 Nov 2024 20:45:18 +0000 Subject: [PATCH 3/9] Update User.php --- app/Models/User.php | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/app/Models/User.php b/app/Models/User.php index 4dc8360..73f1bd0 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -9,6 +9,7 @@ use Illuminate\Contracts\Auth\MustVerifyEmail; use Illuminate\Database\Eloquent\Casts\Attribute; use Illuminate\Database\Eloquent\Factories\HasFactory; +use Illuminate\Database\Eloquent\Builder; use Illuminate\Foundation\Auth\User as Authenticatable; use Illuminate\Notifications\Notifiable; use Illuminate\Support\Facades\Hash; @@ -55,6 +56,11 @@ protected function fullName(): Attribute ); } + protected function scopeHasRoles(Builder $query, array $roles): void + { + $query->whereHas('roles', fn (Builder $query) => $query->whereIn('name', $roles)); + } + protected function allPermissions(): Attribute { return Attribute::make( From 0d8c9bb3c7a948b0f23deef691f244cc6e4f43f0 Mon Sep 17 00:00:00 2001 From: Seb Kay Date: Thu, 28 Nov 2024 20:45:37 +0000 Subject: [PATCH 4/9] Update Login.php --- app/Filament/Pages/Auth/Login.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Filament/Pages/Auth/Login.php b/app/Filament/Pages/Auth/Login.php index 50f5cf8..5b21a82 100644 --- a/app/Filament/Pages/Auth/Login.php +++ b/app/Filament/Pages/Auth/Login.php @@ -14,7 +14,7 @@ public function mount(): void if (\app()->environment('local')) { $this->form->fill([ - 'email' => User::whereHas('roles', fn ($q) => $q->whereIn('name', [Role::ADMIN->value]))->first()->email, + 'email' => User::hasRoles([Role::ADMIN->value])->first()->email, 'password' => '12345', 'remember' => true, ]); From b43eeff13494117b43d6815048b850e855cad264 Mon Sep 17 00:00:00 2001 From: Seb Kay Date: Thu, 28 Nov 2024 20:46:01 +0000 Subject: [PATCH 5/9] Update User.php --- app/Models/User.php | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/app/Models/User.php b/app/Models/User.php index 73f1bd0..41eb5a2 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -56,11 +56,6 @@ protected function fullName(): Attribute ); } - protected function scopeHasRoles(Builder $query, array $roles): void - { - $query->whereHas('roles', fn (Builder $query) => $query->whereIn('name', $roles)); - } - protected function allPermissions(): Attribute { return Attribute::make( @@ -68,6 +63,11 @@ protected function allPermissions(): Attribute ); } + protected function scopeHasRoles(Builder $query, array $roles): void + { + $query->whereHas('roles', fn (Builder $query) => $query->whereIn('name', $roles)); + } + public function updatePassword(?string $new_password = '') { if ($new_password && $new_password != $this->password) { From 0c7170d372acc3ad1a06623eb2aed23c33e419b8 Mon Sep 17 00:00:00 2001 From: Seb Kay Date: Thu, 28 Nov 2024 20:46:30 +0000 Subject: [PATCH 6/9] Update User.php --- app/Models/User.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Models/User.php b/app/Models/User.php index 41eb5a2..81aebc4 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -7,9 +7,9 @@ use Filament\Models\Contracts\HasName; use Filament\Panel; use Illuminate\Contracts\Auth\MustVerifyEmail; +use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Casts\Attribute; use Illuminate\Database\Eloquent\Factories\HasFactory; -use Illuminate\Database\Eloquent\Builder; use Illuminate\Foundation\Auth\User as Authenticatable; use Illuminate\Notifications\Notifiable; use Illuminate\Support\Facades\Hash; From de65feab05b4afb38918ad8d5e009eedc375aa74 Mon Sep 17 00:00:00 2001 From: Seb Kay Date: Thu, 28 Nov 2024 20:54:51 +0000 Subject: [PATCH 7/9] Change seed config to have email and password --- app/Filament/Pages/Auth/Login.php | 6 ++---- app/Http/Controllers/LoginController.php | 4 ++-- config/app.php | 17 +++++++++++++---- database/factories/UserFactory.php | 13 ++++++++----- .../Feature/Controllers/LoginControllerTest.php | 4 ++-- tests/Pest.php | 4 ++-- 6 files changed, 29 insertions(+), 19 deletions(-) diff --git a/app/Filament/Pages/Auth/Login.php b/app/Filament/Pages/Auth/Login.php index 5b21a82..929d2ad 100644 --- a/app/Filament/Pages/Auth/Login.php +++ b/app/Filament/Pages/Auth/Login.php @@ -2,8 +2,6 @@ namespace App\Filament\Pages\Auth; -use App\Enums\Role; -use App\Models\User; use Filament\Pages\Auth\Login as BasePage; class Login extends BasePage @@ -14,8 +12,8 @@ public function mount(): void if (\app()->environment('local')) { $this->form->fill([ - 'email' => User::hasRoles([Role::ADMIN->value])->first()->email, - 'password' => '12345', + 'email' => \config('app.seed.users.super.email'), + 'password' => \config('app.seed.users.super.password'), 'remember' => true, ]); } diff --git a/app/Http/Controllers/LoginController.php b/app/Http/Controllers/LoginController.php index 609ebbe..9d9cb60 100644 --- a/app/Http/Controllers/LoginController.php +++ b/app/Http/Controllers/LoginController.php @@ -11,8 +11,8 @@ class LoginController extends Controller public function show(Request $request) { return inertia('Login/Show', app()->environment('local', 'testing') ? [ - 'email' => config('app.seed.emails.super'), - 'password' => '12345', + 'email' => config('app.seed.users.super.email'), + 'password' => config('app.seed.users.super.password'), 'remember' => true, 'redirect' => $request->query('redirect', ''), ] : []); diff --git a/config/app.php b/config/app.php index 5739a6f..41da6c5 100644 --- a/config/app.php +++ b/config/app.php @@ -3,10 +3,19 @@ return [ 'seed' => [ - 'emails' => [ - 'super' => env('SEED_SUPER_ADMIN_EMAIL', 'super@laravel-inertia-template.test'), - 'admin' => env('SEED_ADMIN_EMAIL', 'admin@laravel-inertia-template.test'), - 'user' => env('SEED_USER_EMAIL', 'user@laravel-inertia-template.test'), + 'users' => [ + 'super' => [ + 'email' => env('SEED_SUPER_ADMIN_EMAIL', 'super@laravel-inertia-template.test'), + 'password' => env('SEED_SUPER_ADMIN_PASSWORD', '12345'), + ], + 'admin' => [ + 'email' => env('SEED_ADMIN_EMAIL', 'admin@laravel-inertia-template.test'), + 'password' => env('SEED_ADMIN_PASSWORD', '12345'), + ], + 'user' => [ + 'email' => env('SEED_USER_EMAIL', 'user@laravel-inertia-template.test'), + 'password' => env('SEED_USER_PASSWORD', '12345'), + ], ], ], diff --git a/database/factories/UserFactory.php b/database/factories/UserFactory.php index b1c666d..4e906c0 100644 --- a/database/factories/UserFactory.php +++ b/database/factories/UserFactory.php @@ -35,29 +35,32 @@ public function superAdmin(?string $email = null) { return $this ->state(fn (array $attributes) => [ - 'email' => $email ?: \config('app.seed.emails.super'), + 'email' => \config('app.seed.users.super.email'), + 'password' => \config('app.seed.users.super.password'), ]) ->afterCreating(function (User $user) { $user->assignRole(Role::SUPER_ADMIN->value); }); } - public function admin(?string $email = null) + public function admin() { return $this ->state(fn (array $attributes) => [ - 'email' => $email ?: \config('app.seed.emails.admin'), + 'email' => \config('app.seed.users.admin.email'), + 'password' => \config('app.seed.users.admin.password'), ]) ->afterCreating(function (User $user) { $user->assignRole(Role::ADMIN->value); }); } - public function user(?string $email = null) + public function user() { return $this ->state(fn (array $attributes) => [ - 'email' => $email ?: \config('app.seed.emails.user'), + 'email' => \config('app.seed.users.user.email'), + 'password' => \config('app.seed.users.user.password'), ]) ->afterCreating(function (User $user) { $user->assignRole(Role::USER->value); diff --git a/tests/Feature/Controllers/LoginControllerTest.php b/tests/Feature/Controllers/LoginControllerTest.php index bfbc0e0..c743703 100644 --- a/tests/Feature/Controllers/LoginControllerTest.php +++ b/tests/Feature/Controllers/LoginControllerTest.php @@ -28,8 +28,8 @@ ->assertInertia( fn (Assert $page) => $page ->component('Login/Show') - ->where('email', config('app.seed.emails.super')) - ->where('password', '12345') + ->where('email', config('app.seed.users.super.email')) + ->where('password', config('app.seed.users.super.password')) ->where('remember', true) ->where('redirect', '') ); diff --git a/tests/Pest.php b/tests/Pest.php index 173d526..bd8abaa 100644 --- a/tests/Pest.php +++ b/tests/Pest.php @@ -55,10 +55,10 @@ function superAdminUser() { - return User::whereEmail(\config('app.seed.emails.super'))->first(); + return User::whereEmail(\config('app.seed.users.super.email'))->first(); } function adminUser() { - return User::whereEmail(\config('app.seed.emails.admin'))->first(); + return User::whereEmail(\config('app.seed.users.admin.email'))->first(); } From b8b23cfb000ee6a70f7d222cbca061af7186bd29 Mon Sep 17 00:00:00 2001 From: Seb Kay Date: Thu, 28 Nov 2024 20:57:24 +0000 Subject: [PATCH 8/9] Update phpunit.xml --- phpunit.xml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/phpunit.xml b/phpunit.xml index 27fcdde..cd5de4a 100644 --- a/phpunit.xml +++ b/phpunit.xml @@ -8,8 +8,8 @@ ./tests/Feature - tests/Architecture - + tests/Architecture + @@ -20,6 +20,7 @@ ./app/Filament ./app/Providers/Filament ./app/Providers/HorizonServiceProvider.php + ./app/Providers/TelescopeServiceProvider.php From 7b36c9023363315aa9f398671323a21618aca8a4 Mon Sep 17 00:00:00 2001 From: Seb Kay Date: Thu, 28 Nov 2024 20:58:20 +0000 Subject: [PATCH 9/9] Update AdminPanelProvider.php --- app/Providers/Filament/AdminPanelProvider.php | 1 + 1 file changed, 1 insertion(+) diff --git a/app/Providers/Filament/AdminPanelProvider.php b/app/Providers/Filament/AdminPanelProvider.php index 7afcb06..542e201 100644 --- a/app/Providers/Filament/AdminPanelProvider.php +++ b/app/Providers/Filament/AdminPanelProvider.php @@ -43,6 +43,7 @@ public function panel(Panel $panel): Panel FilamentSpatieRolesPermissionsPlugin::make(), EnvironmentIndicatorPlugin::make() ->visible(fn () => \auth()->user()?->hasRole(Role::SUPER_ADMIN) && \app()->environment() !== 'production') + ->showBorder(false) ->color(fn () => match (app()->environment()) { 'production' => Color::Green, 'staging' => Color::Blue,