Skip to content
Snippets Groups Projects
Commit 2f7ee7ec authored by michael.minelli's avatar michael.minelli
Browse files

Routes: Add sessions routes (with login)

parent 83dc1d86
No related branches found
No related tags found
No related merge requests found
import { Express } from 'express-serve-static-core';
import RoutesManager from '../express/RoutesManager';
import BaseRoutes from './BaseRoutes';
import SessionRoutes from './SessionRoutes';
class AdminRoutesManager implements RoutesManager {
......@@ -18,6 +19,7 @@ class AdminRoutesManager implements RoutesManager {
registerOnBackend(backend: Express) {
BaseRoutes.registerOnBackend(backend);
SessionRoutes.registerOnBackend(backend);
}
}
......
import { Express } from 'express-serve-static-core';
import express from 'express';
import * as ExpressValidator from 'express-validator';
import { StatusCodes } from 'http-status-codes';
import * as bcrypt from 'bcryptjs';
import RoutesManager from '../express/RoutesManager';
import ParamsValidatorMiddleware from '../middlewares/ParamsValidatorMiddleware';
import ApiRequest from '../models/ApiRequest';
import UserManager from '../managers/UserManager';
import User from '../models/User';
class SessionRoutes implements RoutesManager {
private static _instance: SessionRoutes;
private constructor() { }
public static get instance(): SessionRoutes {
if ( !SessionRoutes._instance ) {
SessionRoutes._instance = new SessionRoutes();
}
return SessionRoutes._instance;
}
private readonly loginValidator: ExpressValidator.Schema = {
mail : {
trim : true,
notEmpty: true
},
password: {
trim : true,
notEmpty: true
}
};
registerOnBackend(backend: Express) {
backend.post('/login', ParamsValidatorMiddleware.validate(this.loginValidator), this.login);
}
private async login(req: ApiRequest, res: express.Response) {
const params: { mail: string, password: string } = req.body;
const user: User | undefined = await UserManager.getByMail(params.mail);
if ( user ) {
if ( bcrypt.compareSync(params.password, user.userPassword) ) {
req.session.profile = user;
req.session.sendResponse(res, StatusCodes.OK);
return;
}
}
req.session.sendResponse(res, StatusCodes.NOT_FOUND);
}
}
export default SessionRoutes.instance;
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment