index.php 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. <?php
  2. require __DIR__ . '/../vendor/autoload.php';
  3. use FrameworkX\App;
  4. use Middlewares\CorsMiddleware;
  5. use Middlewares\JwtAuthMiddleware;
  6. $requestUri = $_SERVER['REQUEST_URI'] ?? null;
  7. $path = $requestUri !== null ? parse_url($requestUri, PHP_URL_PATH) : '/';
  8. $file = __DIR__ . $path;
  9. if (php_sapi_name() === 'cli-server' && is_file($file)) {
  10. return false;
  11. }
  12. if (class_exists(Dotenv\Dotenv::class) && file_exists(__DIR__ . '/../.env')) {
  13. Dotenv\Dotenv::createImmutable(
  14. dirname(__DIR__),
  15. null,
  16. true
  17. )->safeLoad();
  18. }
  19. error_reporting(E_ALL);
  20. $dsn = $_ENV['DB_DSN'] ?? (function () {
  21. $host = $_ENV['DB_HOST'] ?? 'localhost';
  22. $port = $_ENV['DB_PORT'] ?? '5432';
  23. $name = $_ENV['DB_NAME'] ?? 'postgres';
  24. return "pgsql:host={$host};port={$port};dbname={$name}";
  25. })();
  26. $dbUser = $_ENV['DB_USER'] ?? 'postgres';
  27. $dbPass = $_ENV['DB_PASSWORD'] ?? '';
  28. $GLOBALS['pdo'] = new \PDO($dsn, $dbUser, $dbPass);
  29. $GLOBALS['pdo']->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);
  30. $corsEnabled = filter_var($_ENV['CORS'] ?? 'false', FILTER_VALIDATE_BOOLEAN);
  31. $globalMiddleware = $corsEnabled ? [CorsMiddleware::class] : [];
  32. $app = new App(...$globalMiddleware);
  33. $authJwt = new JwtAuthMiddleware();
  34. $app->post('/verify/jwt', $authJwt,\Controllers\HelloController::class);
  35. $app->post('/login', \Controllers\LoginController::class);
  36. $app->post('/register', $authJwt, \Controllers\RegisterController::class);
  37. $app->post('/user/get', $authJwt, \Controllers\UserGetController::class);
  38. $app->post('/user/delete', $authJwt, \Controllers\UserDeleteController::class);
  39. // Public endpoint to create company, user, and wallet in a single transaction
  40. $app->post('/company/user/create', \Controllers\CompanyWithUserController::class);
  41. $app->post('/company/user/kyc/status', \Controllers\CompanyCheckStatus::class);
  42. $app->post('/user/kyc/status', \Controllers\UserCheckStatus::class);
  43. // Authenticated user profile updates
  44. $app->post('/user/change-email', $authJwt, \Controllers\UserChangeEmailController::class);
  45. $app->post('/user/change-password', $authJwt, \Controllers\UserChangePasswordController::class);
  46. // Commodities (JWT-protected)
  47. $app->post('/commodity/create', $authJwt, \Controllers\CommodityCreateController::class);
  48. $app->post('/commodity/update', $authJwt, \Controllers\CommodityUpdateController::class);
  49. $app->post('/commodity/delete', $authJwt, \Controllers\CommodityDeleteController::class);
  50. $app->post('/commodities/get', $authJwt, \Controllers\CommoditiesGetController::class);
  51. // CPR registration
  52. $app->post('/cpr/create', $authJwt, \Controllers\RegisterCprController::class);
  53. // CPR history
  54. $app->post('/cpr/history', $authJwt, \Controllers\CprQueryController::class);
  55. $app->post('/wallet/tokens', $authJwt, \Controllers\WalletTokensController::class);
  56. $app->post('/token/get', $authJwt, \Controllers\TokenGetController::class);
  57. $app->post('/b3/token', \Controllers\B3TokenController::class);
  58. $app->post('/b3/cpr/register', $authJwt, \Controllers\B3CprRegisterController::class);
  59. $app->post('/b3/payment/confirm', $authJwt, \Controllers\PaymentConfirmController::class);
  60. $app->run();