Skip to content
Snippets Groups Projects
Select Git revision
  • 83e811a7bd78f6059d23c6d58ff2933e230ef40b
  • main default protected
  • jw_sonar
  • v6.0.0 protected
  • bedran_exercise-list
  • ask-user-to-delete-exercises-on-duplicates
  • update-dependencies
  • jw_sonar_backup
  • add_route_assignments
  • 6.0.0-dev
  • 5.0.1
  • 5.0.0
  • 4.1.0
  • 4.0.0
  • 3.5.3
  • 3.5.2
  • 3.5.1
  • 3.5.0
  • 3.4.2
  • 3.4.1
  • 3.4.0
  • 3.3.0
  • 3.2.0
  • 3.1.3
  • 3.1.2
  • 3.1.1
  • 3.1.0
  • 3.0.1
  • 3.0.0
29 results

SessionRoutes.ts

Blame
  • SessionRoutes.ts 1.77 KiB
    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 UserManager               from '../managers/UserManager';
    import SecurityMiddleware        from '../middlewares/SecurityMiddleware';
    import { User }                  from '../types/DatabaseTypes';
    
    
    class SessionRoutes implements RoutesManager {
        private readonly loginValidator: ExpressValidator.Schema = {
            user       : {
                trim: true, notEmpty: true
            }, password: {
                trim: true, notEmpty: true
            }
        };
    
        registerOnBackend(backend: Express) {
            backend.post('/login', ParamsValidatorMiddleware.validate(this.loginValidator), this.login);
            backend.get('/test_session', SecurityMiddleware.check(true), (req: express.Request, res: express.Response) => req.session.sendResponse(res, StatusCodes.OK));
        }
    
        private async login(req: express.Request, res: express.Response) {
            const params: {
                user: string, password: string
            } = req.body;
    
            const user: User | undefined = await UserManager.getByMail(params.user);
    
            if ( user ) {
                if ( bcrypt.compareSync(params.password, user.password ?? '') ) {
                    req.session.profile = user;
    
                    req.session.sendResponse(res, StatusCodes.OK);
                    return;
                }
            }
    
            req.session.sendResponse(res, StatusCodes.NOT_FOUND);
        }
    }
    
    
    export default new SessionRoutes();