diff --git a/ExpressAPI/src/routes/ApiRoutesManager.ts b/ExpressAPI/src/routes/ApiRoutesManager.ts
index e8ff6deba9b3b529f29d6173b38130766fec33b2..64f4fdf7a86c1a5e2ad90c3cc36e56f099038d49 100644
--- a/ExpressAPI/src/routes/ApiRoutesManager.ts
+++ b/ExpressAPI/src/routes/ApiRoutesManager.ts
@@ -1,6 +1,7 @@
 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);
     }
 }
 
diff --git a/ExpressAPI/src/routes/SessionRoutes.ts b/ExpressAPI/src/routes/SessionRoutes.ts
new file mode 100644
index 0000000000000000000000000000000000000000..d370fec020109f7148ec2a846d4f86e31d57ea33
--- /dev/null
+++ b/ExpressAPI/src/routes/SessionRoutes.ts
@@ -0,0 +1,60 @@
+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;