import {Application, Request, Response} from "express"; import Jwt from "jsonwebtoken"; import {BAD_REQUEST, OK} from "http-status-codes"; import {SECRET_KEY, URL_ROOM_STARTED} from "../Enum/EnvironmentVariable"; //TODO fix import by "_Enum/..." import { uuid } from 'uuidv4'; export interface TokenInterface { name: string, userId: string } export class AuthenticateController { App : Application; constructor(App : Application) { this.App = App; this.login(); } //permit to login on application. Return token to connect on Websocket IO. login(){ // For now, let's completely forget the /login route. this.App.post("/login", (req: Request, res: Response) => { const param = req.body; /*if(!param.name){ return res.status(BAD_REQUEST).send({ message: "email parameter is empty" }); }*/ //TODO check user email for The Coding Machine game const userId = uuid(); const token = Jwt.sign({name: param.name, userId: userId} as TokenInterface, SECRET_KEY, {expiresIn: '24h'}); return res.status(OK).send({ token: token, mapUrlStart: URL_ROOM_STARTED, userId: userId, }); }); } }