index.php 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. <?php
  2. require __DIR__ . '/../vendor/autoload.php';
  3. use FrameworkX\App;
  4. use Middlewares\JwtAuthMiddleware;
  5. $path = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);
  6. $file = __DIR__ . $path;
  7. if (php_sapi_name() === 'cli-server' && is_file($file)) {
  8. return false;
  9. }
  10. if (class_exists(Dotenv\Dotenv::class) && file_exists(__DIR__ . '/../.env')) {
  11. Dotenv\Dotenv::createImmutable(
  12. dirname(__DIR__),
  13. null,
  14. true
  15. )->safeLoad();
  16. }
  17. error_reporting(E_ALL);
  18. $dsn = $_ENV['DB_DSN'] ?? (function () {
  19. $host = $_ENV['DB_HOST'] ?? 'localhost';
  20. $port = $_ENV['DB_PORT'] ?? '5432';
  21. $name = $_ENV['DB_NAME'] ?? 'postgres';
  22. return "pgsql:host={$host};port={$port};dbname={$name}";
  23. })();
  24. $dbUser = $_ENV['DB_USER'] ?? 'postgres';
  25. $dbPass = $_ENV['DB_PASSWORD'] ?? '';
  26. $GLOBALS['pdo'] = new \PDO($dsn, $dbUser, $dbPass);
  27. $GLOBALS['pdo']->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);
  28. $app = new App();
  29. $authJwt = new JwtAuthMiddleware();
  30. $app->get('/jwthelloworld', $authJwt,\Controllers\HelloController::class);
  31. $app->post('/login', \Controllers\LoginController::class);
  32. $app->post('/register', \Controllers\RegisterController::class);
  33. $app->post('/user/get', $authJwt, \Controllers\UserGetController::class);
  34. $app->post('/user/delete', $authJwt, \Controllers\UserDeleteController::class);
  35. // Public endpoint to create company, user, and wallet in a single transaction
  36. $app->post('/companyWithUser/create', \Controllers\CompanyWithUserController::class);
  37. // Authenticated user profile updates
  38. $app->post('/user/change-email', $authJwt, \Controllers\UserChangeEmailController::class);
  39. $app->post('/user/change-password', $authJwt, \Controllers\UserChangePasswordController::class);
  40. // Commodities (JWT-protected)
  41. $app->post('/commodity/create', $authJwt, \Controllers\CommodityCreateController::class);
  42. $app->post('/commodity/update', $authJwt, \Controllers\CommodityUpdateController::class);
  43. $app->post('/commodity/delete', $authJwt, \Controllers\CommodityDeleteController::class);
  44. $app->get('/commodities', $authJwt, \Controllers\CommoditiesGetController::class);
  45. $app->run();