diff --git a/app/Filament/Pages/Auth/Login.php b/app/Filament/Pages/Auth/Login.php
new file mode 100644
index 0000000..929d2ad
--- /dev/null
+++ b/app/Filament/Pages/Auth/Login.php
@@ -0,0 +1,21 @@
+environment('local')) {
+ $this->form->fill([
+ '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/app/Models/User.php b/app/Models/User.php
index 4dc8360..81aebc4 100644
--- a/app/Models/User.php
+++ b/app/Models/User.php
@@ -7,6 +7,7 @@
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\Foundation\Auth\User as Authenticatable;
@@ -62,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) {
diff --git a/app/Providers/Filament/AdminPanelProvider.php b/app/Providers/Filament/AdminPanelProvider.php
index 1f49f1e..542e201 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',
])
@@ -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,
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/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
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();
}