groups(['web']) ->inject('request') ->inject('response') ->action(function (Request $request, Response $response) { $response ->addHeader('X-Frame-Options', 'SAMEORIGIN') // Avoid console and homepage from showing in iframes ->addHeader('X-XSS-Protection', '1; mode=block; report=/v1/xss?url=' . \urlencode($request->getURI())) ->addHeader('X-UA-Compatible', 'IE=Edge') // Deny IE browsers from going into quirks mode ; }); App::get('/console/*') ->alias('/') ->alias('auth/*') ->alias('/invite') ->alias('/login') ->alias('/mfa') ->alias('/card/*') ->alias('/recover') ->alias('/register/*') ->groups(['web']) ->label('permission', 'public') ->label('scope', 'home') ->inject('request') ->inject('response') ->action(function (Request $request, Response $response) { $fallback = file_get_contents(__DIR__ . '/../../../console/index.html'); // Card SSR if (\str_starts_with($request->getURI(), '/card')) { $urlCunks = \explode('/', $request->getURI()); $userId = $urlCunks[\count($urlCunks) - 1] ?? ''; $domain = $request->getProtocol() . '://' . $request->getHostname(); if (!empty($userId)) { $ogImageUrl = $domain . '/v1/cards/cloud-og?userId=' . $userId; } else { $ogImageUrl = $domain . '/v1/cards/cloud-og?mock=normal'; } $ogTags = [ 'Appwrite Cloud Card', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ]; $fallback = \str_replace('', \implode('', $ogTags), $fallback); } $response->html($fallback); });