2026-01-15 16:55:24 +08:00
|
|
|
|
<?php
|
|
|
|
|
|
|
|
|
|
|
|
namespace Database\Seeders;
|
|
|
|
|
|
|
|
|
|
|
|
use Illuminate\Database\Seeder;
|
2026-01-26 10:37:47 +08:00
|
|
|
|
use App\Modules\Core\Models\User;
|
2026-01-15 16:55:24 +08:00
|
|
|
|
use Spatie\Permission\Models\Role;
|
|
|
|
|
|
use Spatie\Permission\Models\Permission;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 租戶資料庫專用 Seeder
|
|
|
|
|
|
*
|
|
|
|
|
|
* 建立新租戶時會自動執行此 Seeder,負責:
|
|
|
|
|
|
* 1. 建立預設的超級管理員帳號
|
|
|
|
|
|
* 2. 設定權限與角色
|
|
|
|
|
|
*/
|
|
|
|
|
|
class TenantDatabaseSeeder extends Seeder
|
|
|
|
|
|
{
|
|
|
|
|
|
/**
|
|
|
|
|
|
* Seed the application's database.
|
|
|
|
|
|
*/
|
|
|
|
|
|
public function run(): void
|
|
|
|
|
|
{
|
|
|
|
|
|
// 建立預設管理員帳號
|
|
|
|
|
|
$admin = User::firstOrCreate(
|
|
|
|
|
|
['username' => 'admin'],
|
|
|
|
|
|
[
|
|
|
|
|
|
'name' => '系統管理員',
|
|
|
|
|
|
'email' => 'admin@example.com',
|
|
|
|
|
|
'password' => 'password',
|
|
|
|
|
|
]
|
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
// 呼叫權限 Seeder 設定權限與角色
|
|
|
|
|
|
$this->call(PermissionSeeder::class);
|
|
|
|
|
|
|
2026-01-29 09:38:23 +08:00
|
|
|
|
// 初始化基本單位資料
|
|
|
|
|
|
$this->call(UnitSeeder::class);
|
|
|
|
|
|
|
2026-02-02 13:16:06 +08:00
|
|
|
|
// 初始化預設商品分類
|
|
|
|
|
|
$this->call(CategorySeeder::class);
|
|
|
|
|
|
|
2026-01-15 16:55:24 +08:00
|
|
|
|
// 確保 admin 擁有 super-admin 角色
|
|
|
|
|
|
if (!$admin->hasRole('super-admin')) {
|
|
|
|
|
|
$admin->assignRole('super-admin');
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|