- Added main application entry point (app.jsx) and bootstrap file for React setup. - Created Wiki index page (Index.jsx) for documentation and file management. - Implemented utility functions for formatting and status handling in utils.js. - Set up Blade template (app.blade.php) for Inertia.js integration. - Defined API routes for metrics and terminal access in api.php. - Established console commands for scheduled tasks in console.php. - Created web routes for various application features including authentication, hypervisors, containers, cloud accounts, security, backups, and wiki management in web.php. - Developed setup scripts for Windows (setup.ps1) and Linux (setup.sh) environments. - Configured Tailwind CSS for styling with custom themes and animations in tailwind.config.js. - Set up Vite for asset bundling and development server in vite.config.js.
97 lines
3.5 KiB
PHP
97 lines
3.5 KiB
PHP
<?php
|
|
|
|
namespace Database\Seeders;
|
|
|
|
use App\Models\User;
|
|
use Illuminate\Database\Seeder;
|
|
use Illuminate\Support\Facades\Hash;
|
|
use Spatie\Permission\Models\Permission;
|
|
use Spatie\Permission\Models\Role;
|
|
|
|
class DatabaseSeeder extends Seeder
|
|
{
|
|
public function run(): void
|
|
{
|
|
// Create roles
|
|
$superAdmin = Role::firstOrCreate(['name' => 'super-admin']);
|
|
$admin = Role::firstOrCreate(['name' => 'admin']);
|
|
$operator = Role::firstOrCreate(['name' => 'operator']);
|
|
$viewer = Role::firstOrCreate(['name' => 'viewer']);
|
|
|
|
// Create permissions
|
|
$permissions = [
|
|
// Hypervisors
|
|
'hypervisors.view', 'hypervisors.create', 'hypervisors.edit', 'hypervisors.delete',
|
|
'vms.view', 'vms.power', 'vms.create', 'vms.delete',
|
|
'templates.view', 'templates.create', 'templates.edit', 'templates.delete', 'templates.deploy',
|
|
// Containers
|
|
'containers.view', 'containers.manage',
|
|
'stacks.view', 'stacks.create', 'stacks.edit', 'stacks.delete',
|
|
// Cloud
|
|
'cloud.view', 'cloud.create', 'cloud.edit', 'cloud.delete',
|
|
// Security
|
|
'security.view', 'security.scan',
|
|
// Backups
|
|
'backups.view', 'backups.create', 'backups.restore', 'backups.delete',
|
|
// Monitoring
|
|
'monitoring.view', 'monitoring.alerts',
|
|
// Identity
|
|
'identity.view', 'identity.create', 'identity.edit', 'identity.delete',
|
|
// Wiki
|
|
'wiki.view', 'wiki.create', 'wiki.edit', 'wiki.delete',
|
|
// ACL
|
|
'acl.view', 'acl.manage',
|
|
// Admin
|
|
'admin.view', 'admin.manage',
|
|
];
|
|
|
|
foreach ($permissions as $permission) {
|
|
Permission::firstOrCreate(['name' => $permission]);
|
|
}
|
|
|
|
// Assign permissions to roles
|
|
$admin->syncPermissions(Permission::whereNotIn('name', ['admin.manage', 'acl.manage'])->get());
|
|
$operator->syncPermissions([
|
|
'hypervisors.view', 'vms.view', 'vms.power',
|
|
'containers.view', 'containers.manage',
|
|
'stacks.view', 'cloud.view',
|
|
'security.view', 'backups.view',
|
|
'monitoring.view', 'monitoring.alerts',
|
|
'identity.view', 'wiki.view', 'wiki.create', 'wiki.edit',
|
|
]);
|
|
$viewer->syncPermissions([
|
|
'hypervisors.view', 'vms.view', 'containers.view',
|
|
'stacks.view', 'cloud.view', 'security.view',
|
|
'backups.view', 'monitoring.view', 'identity.view', 'wiki.view',
|
|
]);
|
|
|
|
// Create default super admin user
|
|
$user = User::firstOrCreate(
|
|
['email' => 'admin@infra.local'],
|
|
[
|
|
'name' => 'Super Admin',
|
|
'password' => Hash::make('Admin@123456'),
|
|
'is_active' => true,
|
|
]
|
|
);
|
|
$user->assignRole('super-admin');
|
|
|
|
// Default settings
|
|
\App\Models\Setting::firstOrCreate(['key' => 'app.name'], [
|
|
'group' => 'general',
|
|
'value' => 'Infra Manager',
|
|
'type' => 'string',
|
|
]);
|
|
\App\Models\Setting::firstOrCreate(['key' => 'app.theme'], [
|
|
'group' => 'general',
|
|
'value' => 'dark',
|
|
'type' => 'string',
|
|
]);
|
|
\App\Models\Setting::firstOrCreate(['key' => 'security.session_timeout'], [
|
|
'group' => 'security',
|
|
'value' => '480',
|
|
'type' => 'integer',
|
|
]);
|
|
}
|
|
}
|