API-9: PartyPlaner Login endpoint (#5)
Jenkins Production Deployment

Co-authored-by: Patrick Müller <patrick@mueller-patrick.tech>
Reviewed-on: #5
Co-authored-by: Patrick Müller <patrick@plutodev.de>
Co-committed-by: Patrick Müller <patrick@plutodev.de>
This commit was merged in pull request #5.
This commit is contained in:
2021-08-20 18:51:01 +00:00
parent 915c2e7917
commit b4f25c1831
12 changed files with 184 additions and 24 deletions
@@ -0,0 +1,51 @@
/**
* Required External Modules and Interfaces
*/
import express, {Request, Response} from 'express';
import * as UserService from '../userService/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 firstName: string = '';
let lastName: 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.'});
}
});