| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- <?php
- require __DIR__ . '/../vendor/autoload.php';
- $path = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);
- $file = __DIR__ . $path;
- if (php_sapi_name() === 'cli-server' && is_file($file)) {
- return false;
- }
- if (class_exists(Dotenv\Dotenv::class) && file_exists(__DIR__ . '/../.env')) {
- Dotenv\Dotenv::createImmutable(
- dirname(__DIR__),
- null,
- true
- )->safeLoad();
- }
- error_reporting(E_ALL);
- ini_set('display_errors', 1); // Para depuração
- ini_set('display_startup_errors', 1);
- use FrameworkX\App;
- use Middlewares\HmacAuthMiddleware;
- use Middlewares\JWTAuthMiddleware;
- use Middlewares\CorsControl;
- use Psr\Http\Message\ServerRequestInterface;
- use React\Http\Message\Response;
- $app = new App();
- // Instancia os middlewares
- $authHmac = new HmacAuthMiddleware();
- $authJwt = new JWTAuthMiddleware();
- $cors = new CorsControl();
- // Função para envolver rotas com CORS
- $withCors = function ($handler) use ($cors) {
- return function (ServerRequestInterface $request) use ($handler, $cors) {
- return $cors($request, $handler);
- };
- };
- // Função para lidar com requisições OPTIONS
- $handleOptions = function (ServerRequestInterface $request) {
- $corsHeaders = [
- 'Access-Control-Allow-Origin' => '*',
- 'Access-Control-Allow-Methods' => '*',
- 'Access-Control-Allow-Headers' => '*'
- ];
- return new Response(200, $corsHeaders);
- };
- // Rotas com CORS aplicado
- $app->get('/hmachelloworld', $withCors($authHmac), \Controllers\HelloController::class);
- $app->options('/hmachelloworld', $handleOptions);
- $app->get('/jwthelloworld', $withCors($authJwt), \Controllers\HelloController::class);
- $app->options('/jwthelloworld', $handleOptions);
- $app->post('/login', $withCors(\Controllers\LoginController::class));
- $app->options('/login', $handleOptions);
- $app->post('/register', $withCors(\Controllers\RegisterController::class));
- $app->options('/register', $handleOptions);
- $app->run();
|