/** * Required External Modules and Interfaces */ import express, {Request, Response} from 'express'; import * as UserService from '../user/user.service'; import logger from '../../../middleware/logger'; /** * Router Definition */ export const loginRouter = express.Router(); loginRouter.post('/:isDevCall', async (req: Request, res: Response) => { try { let username: string = ''; let email: string = ''; let password: string = ''; let useDev: boolean = (req.params.isDevCall ?? '') === 'dev'; // TBD // API accepts both JSON in body and HTTP parameters if (req.headers['content-type'] === 'application/json') { username = req.body.username; email = req.body.email; password = req.body.password; } else if (req.headers['content-type'] === 'application/x-www-form-urlencoded') { username = (req.query.username ?? '').toString(); email = (req.query.email ?? '').toString(); password = (req.query.password ?? '').toString(); } let userIP = req.socket.remoteAddress ?? ''; let deviceInfo = req.headers['user-agent'] ?? ''; if ((username === '' && email === '') || password === '') { res.status(400).send({ 'status': 'WRONG_PARAMS', 'message': 'Missing or wrong parameters' }); return; } // Check password and create session let session = await UserService.loginUser(useDev, username, email, password, userIP, deviceInfo); res.status(200).send(session); } catch (e) { logger.error('Error handling a request: ' + e.message); res.status(500).send({'message': 'Internal Server Error. Try again later.'}); } });