import { HttpConfig } from '../../http/server'; import { HttpWebDependencies } from '../server'; import { ErrorCode, ErrorInfo } from '../../http/send-error'; import { redirect_303_see_other } from '../../http/redirects'; import { FastifyInstance, FastifyReply, RouteShorthandOptions } from 'fastify'; import { csp_headers } from '../../http/content-security-policy'; export function register_login_page_endpoint(http_server: FastifyInstance, conf: HttpConfig, { pkce_cookie, session }: HttpWebDependencies) { const opts: RouteShorthandOptions = { schema: { }, }; http_server.get('/login', opts, async (req, res) => { try { await session.check_login(req); return redirect_303_see_other(res, conf.exposed_url, 'Already logged in'); } catch (error) { return send_login_page(res); } }); function send_login_page(res: FastifyReply) { res.status(200); res.header('content-type', 'text/html; charset=utf-8'); csp_headers(res, conf.exposed_url); session.reset(res); pkce_cookie.reset(res); return render_login_page(); } } export const render_login_page = (error_code?: ErrorCode, error?: ErrorInfo) => ` Login
${error_code ? `

Login failed

Error Code: ${error_code}
Error Message: ${error.message}
` : ''} `;