import type { Request, Response } from "express"; import type { User } from "@chessu/types"; import xss from "xss"; export const getCurrentSession = async (req: Request, res: Response) => { try { if (req.session.user) { res.status(200).json(req.session.user); } else { res.status(404).end(); } } catch (err: unknown) { console.log(err); res.status(500).end(); } }; export const guestSession = async (req: Request, res: Response) => { try { const name = xss(req.body.name); const pattern = /^[A-Za-z0-9_]+$/; if (!pattern.test(name)) { res.status(400).end(); return; } if (!req.session.user || !req.session.user?.id) { // create guest session const user: User = { id: req.session.id, name }; req.session.user = user; } else if (typeof req.session.user.id === "string" && req.session.user.name !== name) { // update guest name req.session.user.name = name; } req.session.save(() => { res.status(201).json(req.session.user); }); } catch (err: unknown) { console.log(err); res.status(500).end(); } }; export const logoutSession = async (req: Request, res: Response) => { try { req.session.destroy(() => { res.status(204).end(); }); } catch (err: unknown) { console.log(err); res.status(500).end(); } };