feat: initialize Infra Manager with React, Tailwind CSS, and Inertia.js
- 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.
This commit is contained in:
96
database/seeders/DatabaseSeeder.php
Normal file
96
database/seeders/DatabaseSeeder.php
Normal file
@@ -0,0 +1,96 @@
|
||||
<?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',
|
||||
]);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user