Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found
Select Git revision
  • jw_sonar
  • v6.0.0
  • bedran_exercise-list
  • ask-user-to-delete-exercises-on-duplicates
  • update-dependencies
  • main
  • jw_sonar_backup
  • add_route_assignments
  • 2.0.0
  • 2.1.0
  • 2.2.0
  • 3.0.0
  • 3.0.1
  • 3.1.0
  • 3.1.1
  • 3.1.2
  • 3.1.3
  • 3.2.0
  • 3.3.0
  • 3.4.0
  • 3.4.1
  • 3.4.2
  • 3.5.0
  • 3.5.1
  • 3.5.2
  • 3.5.3
  • 4.0.0
  • 4.1.0
  • 5.0.0
  • 5.0.1
  • 6.0.0-dev
  • v1.0.1
32 results

Target

Select target project
  • Dojo_Project_Nguyen / Backend / DojoBackendAPI
  • Dojo Project (HES-SO) / Projects / Backend / DojoBackendAPI
2 results
Select Git revision
  • jw_sonar
  • v6.0.0
  • bedran_exercise-list
  • ask-user-to-delete-exercises-on-duplicates
  • update-dependencies
  • main
  • jw_sonar_backup
  • add_route_assignments
  • 2.0.0
  • 2.1.0
  • 2.2.0
  • 3.0.0
  • 3.0.1
  • 3.1.0
  • 3.1.1
  • 3.1.2
  • 3.1.3
  • 3.2.0
  • 3.3.0
  • 3.4.0
  • 3.4.1
  • 3.4.2
  • 3.5.0
  • 3.5.1
  • 3.5.2
  • 3.5.3
  • 4.0.0
  • 4.1.0
  • 5.0.0
  • 5.0.1
  • 6.0.0-dev
  • v1.0.1
32 results
Show changes

Commits on Source 3

5 files
+ 105
1
Compare changes
  • Side-by-side
  • Inline

Files

+40 −0
Original line number Original line Diff line number Diff line
import User from '../models/User';
import db   from '../helpers/DatabaseHelper';


class UserManager {
    private static _instance: UserManager;

    private constructor() { }

    public static get instance(): UserManager {
        if ( !UserManager._instance ) {
            UserManager._instance = new UserManager();
        }

        return UserManager._instance;
    }

    createObjectFromRawSql(raw: any): User {
        return User.createFromSql(raw);
    }

    async getByMail(mail: string): Promise<User | undefined> {
        const raw = await db<User>(User.tableName).where('userMail', mail).first();

        return raw ? this.createObjectFromRawSql(raw) : undefined;
    }

    async getById(id: number): Promise<User | undefined> {
        const raw = await db<User>(User.tableName).where('userID', id).first();

        return raw ? this.createObjectFromRawSql(raw) : undefined;
    }

    async getByIds(ids: Array<number>): Promise<Array<User>> {
        return Promise.all(ids.map(userId => this.getById(userId)));
    }
}


export default UserManager.instance;
+1 −1

File changed.

Contains only whitespace changes.

+2 −0
Original line number Original line Diff line number Diff line
@@ -7,6 +7,8 @@ import db from '../helpers/DatabaseHelper';




class User extends Model {
class User extends Model {
    static tableName: string = 'Users';

    userID: number = null;
    userID: number = null;
    userFirstName: string = '';
    userFirstName: string = '';
    userLastName: string = '';
    userLastName: string = '';
+2 −0
Original line number Original line Diff line number Diff line
import { Express }   from 'express-serve-static-core';
import { Express }   from 'express-serve-static-core';
import RoutesManager from '../express/RoutesManager';
import RoutesManager from '../express/RoutesManager';
import BaseRoutes    from './BaseRoutes';
import BaseRoutes    from './BaseRoutes';
import SessionRoutes from './SessionRoutes';




class AdminRoutesManager implements RoutesManager {
class AdminRoutesManager implements RoutesManager {
@@ -18,6 +19,7 @@ class AdminRoutesManager implements RoutesManager {


    registerOnBackend(backend: Express) {
    registerOnBackend(backend: Express) {
        BaseRoutes.registerOnBackend(backend);
        BaseRoutes.registerOnBackend(backend);
        SessionRoutes.registerOnBackend(backend);
    }
    }
}
}


+60 −0
Original line number Original line Diff line number Diff line
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;