Files
Verde-Web/database/seeders/AdminUserSeeder.php
admin 6643b0b1da feat(web): add login + dashboard scaffold with Verde branding
Modern minimalist split-layout login (left brand panel, right form) at
/login. Sign-in posts to /api/v1/auth/login, stores the bearer token in
localStorage, redirects to /dashboard. Demo-account expander auto-fills
the form. Placeholder dashboard fetches /me, shows top nav + stat cards
(values pending), and supports sign-out.

AdminUserSeeder now seeds 4 demo admins (admin/ops/audit/demo @verde.local,
all "password"). Tailwind config gets a Verde green palette + Inter font;
component classes for buttons + form inputs.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-30 02:35:39 +08:00

60 lines
1.7 KiB
PHP

<?php
namespace Database\Seeders;
use App\Models\User;
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\Hash;
class AdminUserSeeder extends Seeder
{
public function run(): void
{
$admins = [
[
'email' => 'admin@verde.local',
'phone' => '+639000000001',
'first_name' => 'Verde',
'last_name' => 'Admin',
],
[
'email' => 'ops@verde.local',
'phone' => '+639000000002',
'first_name' => 'Olivia',
'last_name' => 'Operations',
],
[
'email' => 'audit@verde.local',
'phone' => '+639000000003',
'first_name' => 'Andres',
'last_name' => 'Audit',
],
[
'email' => 'demo@verde.local',
'phone' => '+639000000004',
'first_name' => 'Demo',
'last_name' => 'Admin',
],
];
foreach ($admins as $a) {
$user = User::firstOrCreate(
['email' => $a['email']],
[
'phone' => $a['phone'],
'password' => Hash::make('password'),
'first_name' => $a['first_name'],
'last_name' => $a['last_name'],
'role' => User::ROLE_ADMIN,
'status' => User::STATUS_ACTIVE,
'email_verified_at' => now(),
'phone_verified_at' => now(),
'preferred_language' => 'en',
],
);
$user->syncRoles([User::ROLE_ADMIN]);
}
}
}