Initial commit of the Asset Management System, including project structure, Docker configuration, database migrations, and core application files. Added user authentication, asset management features, and basic UI components.

This commit is contained in:
2025-08-22 21:41:02 +02:00
parent b43a98f0ec
commit 677f70a19c
52 changed files with 5186 additions and 2 deletions

123
config/routes.php Normal file
View File

@@ -0,0 +1,123 @@
<?php
/**
* Application Routes
*/
use App\Core\Router;
use App\Controllers\AuthController;
use App\Controllers\DashboardController;
use App\Controllers\AssetController;
use App\Controllers\InventoryController;
use App\Controllers\ReportController;
use App\Controllers\UserController;
use App\Controllers\CategoryController;
use App\Controllers\LocationController;
use App\Controllers\DepartmentController;
use App\Controllers\FileController;
use App\Controllers\ExportController;
use App\Controllers\ImportController;
$router = Router::getInstance();
// Authentication routes
$router->get('/login', [AuthController::class, 'showLogin']);
$router->post('/login', [AuthController::class, 'login']);
$router->post('/logout', [AuthController::class, 'logout']);
$router->get('/password/forgot', [AuthController::class, 'showForgotPassword']);
$router->post('/password/forgot', [AuthController::class, 'forgotPassword']);
$router->get('/password/reset', [AuthController::class, 'showResetPassword']);
$router->post('/password/reset', [AuthController::class, 'resetPassword']);
// Protected routes (require authentication)
$router->group(['middleware' => 'auth'], function($router) {
// Dashboard
$router->get('/', [DashboardController::class, 'index']);
$router->get('/dashboard', [DashboardController::class, 'index']);
// Assets
$router->get('/assets', [AssetController::class, 'index']);
$router->get('/assets/create', [AssetController::class, 'create']);
$router->post('/assets', [AssetController::class, 'store']);
$router->get('/assets/{id}', [AssetController::class, 'show']);
$router->get('/assets/{id}/edit', [AssetController::class, 'edit']);
$router->post('/assets/{id}', [AssetController::class, 'update']);
$router->post('/assets/{id}/delete', [AssetController::class, 'delete']);
$router->post('/assets/{id}/assign', [AssetController::class, 'assign']);
$router->post('/assets/{id}/checkout', [AssetController::class, 'checkout']);
$router->post('/assets/{id}/checkin', [AssetController::class, 'checkin']);
// Asset files
$router->post('/assets/{id}/files', [FileController::class, 'upload']);
$router->get('/files/{id}/download', [FileController::class, 'download']);
$router->post('/files/{id}/delete', [FileController::class, 'delete']);
// Inventory
$router->get('/inventories', [InventoryController::class, 'index']);
$router->get('/inventories/create', [InventoryController::class, 'create']);
$router->post('/inventories', [InventoryController::class, 'store']);
$router->get('/inventories/{id}', [InventoryController::class, 'show']);
$router->post('/inventories/{id}/close', [InventoryController::class, 'close']);
$router->post('/inventories/{id}/scan', [InventoryController::class, 'scan']);
$router->get('/inventories/{id}/report', [InventoryController::class, 'report']);
// Reports
$router->get('/reports', [ReportController::class, 'index']);
$router->get('/reports/assets', [ReportController::class, 'assets']);
$router->get('/reports/warranty', [ReportController::class, 'warranty']);
$router->get('/reports/retired', [ReportController::class, 'retired']);
$router->get('/reports/location', [ReportController::class, 'location']);
$router->get('/reports/category', [ReportController::class, 'category']);
// Exports
$router->get('/exports/csv', [ExportController::class, 'csv']);
$router->get('/exports/xlsx', [ExportController::class, 'xlsx']);
$router->get('/exports/labels', [ExportController::class, 'labels']);
// Imports
$router->get('/imports/csv', [ImportController::class, 'show']);
$router->post('/imports/csv', [ImportController::class, 'import']);
// Master data
$router->get('/categories', [CategoryController::class, 'index']);
$router->get('/categories/create', [CategoryController::class, 'create']);
$router->post('/categories', [CategoryController::class, 'store']);
$router->get('/categories/{id}/edit', [CategoryController::class, 'edit']);
$router->post('/categories/{id}', [CategoryController::class, 'update']);
$router->post('/categories/{id}/delete', [CategoryController::class, 'delete']);
$router->get('/locations', [LocationController::class, 'index']);
$router->get('/locations/create', [LocationController::class, 'create']);
$router->post('/locations', [LocationController::class, 'store']);
$router->get('/locations/{id}/edit', [LocationController::class, 'edit']);
$router->post('/locations/{id}', [LocationController::class, 'update']);
$router->post('/locations/{id}/delete', [LocationController::class, 'delete']);
$router->get('/departments', [DepartmentController::class, 'index']);
$router->get('/departments/create', [DepartmentController::class, 'create']);
$router->post('/departments', [DepartmentController::class, 'store']);
$router->get('/departments/{id}/edit', [DepartmentController::class, 'edit']);
$router->post('/departments/{id}', [DepartmentController::class, 'update']);
$router->post('/departments/{id}/delete', [DepartmentController::class, 'delete']);
// Admin routes
$router->group(['middleware' => 'admin'], function($router) {
$router->get('/users', [UserController::class, 'index']);
$router->get('/users/create', [UserController::class, 'create']);
$router->post('/users', [UserController::class, 'store']);
$router->get('/users/{id}/edit', [UserController::class, 'edit']);
$router->post('/users/{id}', [UserController::class, 'update']);
$router->post('/users/{id}/delete', [UserController::class, 'delete']);
$router->post('/users/{id}/toggle', [UserController::class, 'toggleStatus']);
});
});
// Error routes
$router->get('/404', function() {
http_response_code(404);
require APP_PATH . '/Views/errors/404.php';
});
$router->get('/500', function() {
http_response_code(500);
require APP_PATH . '/Views/errors/500.php';
});