| Server IP : 65.108.144.40 / Your IP : 216.73.217.165 Web Server : Apache/2.4.52 (Ubuntu) System : Linux ubuntu-8gb-hel1-1 5.15.0-173-generic #183-Ubuntu SMP Fri Mar 6 13:29:34 UTC 2026 x86_64 User : dev ( 1000) PHP Version : 8.2.30 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /var/www/html/project-slim/app/Routes/ |
Upload File : |
<?php
namespace App\Routes;
use Slim\App;
use Slim\Routing\RouteCollectorProxy;
class RoutesLoader
{
private App $app;
public function __construct(App $app)
{
$this->app = $app;
}
/**
* Load all route groups
*/
public function loadRoutes(): void
{
// API v1 group
$this->app->group('/api/v1', function (RouteCollectorProxy $group) {
$this->loadAuthRoutes($group);
$this->loadUserRoutes($group);
$this->loadCompanyRoutes($group);
$this->loadReportRoutes($group);
$this->loadAdminRoutes($group);
});
// Health and system routes
$this->loadSystemRoutes();
// API v2 group (for future expansion)
$this->app->group('/api/v2', function (RouteCollectorProxy $group) {
// Future API versions
});
}
/**
* Load authentication routes
*/
private function loadAuthRoutes(RouteCollectorProxy $group): void
{
$group->group('/auth', function (RouteCollectorProxy $auth) {
// Core authentication
(require __DIR__ . '/Groups/AuthGroup.php')($auth);
});
}
/**
* Load user management routes
*/
private function loadUserRoutes(RouteCollectorProxy $group): void
{
$group->group('/users', function (RouteCollectorProxy $users) {
// User CRUD and management
(require __DIR__ . '/Groups/UserGroup.php')($users);
});
}
/**
* Load company management routes
*/
private function loadCompanyRoutes(RouteCollectorProxy $group): void
{
$group->group('/companies', function (RouteCollectorProxy $companies) {
// Company CRUD and management
(require __DIR__ . '/Groups/CompanyGroup.php')($companies);
});
}
/**
* Load report management routes
*/
private function loadReportRoutes(RouteCollectorProxy $group): void
{
$group->group('/reports', function (RouteCollectorProxy $reports) {
// Report generation and management
(require __DIR__ . '/Groups/ReportGroup.php')($reports);
});
}
/**
* Load admin routes
*/
private function loadAdminRoutes(RouteCollectorProxy $group): void
{
$group->group('/admin', function (RouteCollectorProxy $admin) {
// Admin panel routes
(require __DIR__ . '/Groups/AdminGroup.php')($admin);
});
}
/**
* Load system and health check routes
*/
private function loadSystemRoutes(): void
{
// Health check
$this->app->get('/health', function ($request, $response) {
$response->getBody()->write(json_encode([
'status' => 'healthy',
'timestamp' => date('Y-m-d H:i:s'),
'version' => '1.0.0',
'environment' => $_ENV['APP_ENV'] ?? 'production'
]));
return $response->withHeader('Content-Type', 'application/json');
});
// API info
$this->app->get('/api', function ($request, $response) {
$response->getBody()->write(json_encode([
'message' => 'Slim Framework API',
'version' => '1.0.0',
'endpoints' => [
'auth' => '/api/v1/auth',
'users' => '/api/v1/users',
'companies' => '/api/v1/companies',
'reports' => '/api/v1/reports',
'admin' => '/api/v1/admin',
'health' => '/health'
]
]));
return $response->withHeader('Content-Type', 'application/json');
});
// Root redirect
$this->app->get('/', function ($request, $response) {
return $response->withHeader('Location', '/api')->withStatus(302);
});
}
}