diff --git a/index.js b/index.js
index 12cb830e931db54f43350194a0a01f23895efb34..d307bc5d409eec01a6c3049a08337f6eff3090c6 100644
--- a/index.js
+++ b/index.js
@@ -4,12 +4,21 @@ const bodyParser = require('body-parser');
 const User = require('./models/user');
 const mongoose = require('mongoose');
 const bcrypt = require('bcrypt');
+const morgan = require('morgan');
 
 const config = require('./config.json');
 
+// Utils
+const render = (req, res, view, options) => res.render(view, {
+  ...options,
+  user: req.session.user,
+  nextUrl: req.url,
+});
+
 // Configuration
 const app = express();
 app.set('view engine', 'pug');
+app.use(morgan('tiny'));
 app.use(session({
   secret: config.secret,
   resave: false,
@@ -21,42 +30,52 @@ app.use(bodyParser.urlencoded({
   extended: false,
 }));
 app.use((req, res, next) => {
-  if (!req.session.user && !['/', '/signup'].includes(req.url)) {
-    return res.redirect('/signup');
+  if (req.session.user || ['/', '/signup', '/login'].includes(req.url)) {
+    next();
   } else {
-    return next();
+    return res.redirect('/signup');
   }
 });
 
 app.get('/', (req, res) => {
-  return res.render('home');
+  return render(req, res, 'home');
 });
 app.get('/signup', (req, res) => {
-  return res.render('signup');
+  return render(req, res, 'signup');
 });
 app.post('/signup', (req, res) => {
-  bcrypt.hash(req.body.password, config.cryptRounds).then((hash, err) => {
-    User.create(req.body).then(user => {
-      req.session.user = user;
-      return res.redirect('/');
-    });
+  const passwordHash = bcrypt.hashSync(req.body.password, config.cryptRounds);
+  User.create(req.body, (err, user) => {
+    err ? console.error(err) : null;
+    user.passwordHash = passwordHash;
+    user.save();
+    req.session.user = user;
+    return res.redirect('/');
   });
 });
 app.post('/login', (req, res) => {
-  User.findOne({ username: req.body.username }).then(user => {
-    bcrypt.compare(req.body.password, user.passwordHash).then((err, same) => {
-      if (same) {
-        req.session.user = user;
-        return res.redirect(req.query.nextUrl);
-      } else {
-        return res.redirect('/signup');
-      }
-    });
+  User.findOne({ username: req.body.username }, (err, user) => {
+    err ? console.error(err) : null;
+    if (bcrypt.compareSync(req.body.password, user.passwordHash)) {
+      req.session.user = user;
+      return res.redirect(req.query.nextUrl || '/');
+    } else {
+      console.error("Bad authentication");
+      return res.redirect('/signup');
+    }
   });
 });
+app.post('/logout', (req, res) => {
+  req.session.destroy();
+  return res.redirect('/');
+})
 
 mongoose.connect('mongodb://localhost/rolegame', err => {
-  console.log('Server connected to Mongo database');
+  if (err) {
+    console.error('ERROR Unable to connect to Mongo database')
+  } else {
+    console.log('Server connected to Mongo database');
+  }
   app.listen(config.port, () => {
     console.log(`Server listening on http://localhost:${config.port}`);
   });
diff --git a/package.json b/package.json
index 0e2d5b37695e9254abc12fa8d46a9a2e9bef4808..e3b0f5265bcfe6b94893fabefb7e5623309b5744 100644
--- a/package.json
+++ b/package.json
@@ -9,6 +9,7 @@
     "express": "^4.16.4",
     "express-session": "^1.15.6",
     "mongoose": "^5.4.11",
+    "morgan": "^1.9.1",
     "nodemon": "^1.18.10",
     "pug": "^2.0.3"
   }
diff --git a/views/base.pug b/views/base.pug
index 7c6b4cd09b15d8e794e9167b4125516f768c509a..38855d3c86dc03a07458dd4ec5681663723f9595 100644
--- a/views/base.pug
+++ b/views/base.pug
@@ -8,6 +8,27 @@ html(lang="en")
     title RoleGame
   body
     block navbar
+      if !user
+        form.ui.form(action="/login", method="post")
+          .ui.pointing.menu
+            .right.menu
+              .item
+                .ui.input.transparent
+                  input#username(type="text" name="username" placeholder="username")
+              .item
+                .ui.transparent.input
+                  input#password(type="password" name="password" placeholder="password")
+              .item
+                .ui.transparent.input
+                  input.ui.button(type="submit" value="Se connecter")
+      else
+        form.ui.form(action="/logout", method="post")
+          .ui.pointing.menu
+            .right.menu
+              .item #{user.firstName} #{user.lastName}
+              .item
+                button.ui.icon.button.basic(type="submit")
+                  i.power.off.icon
     .ui.container
       block main
     block script