diff --git a/models/user.model.js b/models/user.model.js
index 534598a87cb082ccc0c199be62cd73e644df0f4b..9e183c65337dcbdd90d19bcdc745e66f3a2e2ba9 100644
--- a/models/user.model.js
+++ b/models/user.model.js
@@ -1,5 +1,6 @@
 var Sequelize = require('sequelize');
 var sequelize = require('./sequelize');
+const moment = require('moment')
 
 sequelize
   .authenticate()
@@ -11,37 +12,65 @@ sequelize
   });
 
 var Users = sequelize.define('Users', {
-	uName: Sequelize.STRING,
+	uName: {
+		type : Sequelize.STRING,
+		allowNull: false,
+		unique: true,
+	},
 	fName: Sequelize.STRING,
 	lName: Sequelize.STRING,
-	phoneNumber: Sequelize.STRING
-}, {
+	phoneNumber: Sequelize.STRING,
+	token: Sequelize.STRING,
+	expires: Sequelize.DATE
+},{
 	timestamps: false,
 	tableUser: 'Users',
 });
 
-sequelize.sync().then(() => {
-	Users.create({
-		uName: '2015cochetg',
-		fName: 'Gabriel',
-		lName: 'Cochet',
-		phoneNumber: '+33631615426',
-	}).then(out => console.log(out.dataValues));
-
-	Users.create({
-		uName: '2015fleyn',
-		fName: 'Nicolas',
-		lName: 'Fley',
-		phoneNumber: '+33650588938',
-	}).then(out => console.log(out.dataValues));
-})
+sequelize.sync({force:true})
+
+function refreshUser(user){
+	expiresTime = user.toJSON().expires
+	if( moment.duration(moment(expiresTime).diff(moment())).asHours() < 23){
+		user.updateAttributes({
+			expires : moment().add(1,'days')
+		})
+	}
+}
+function refreshById(id,timeLeft){
+	if( moment.duration(moment(user.expires).diff(moment())).asHours() < 23){
+		return true;
+	}else{
+		return false;
+	}
+}
 
 function getUser(id) {
 	return Users.findById(id);
 }
 
-function addUser(uName, fName, lName, phoneNumber) {
-	return Users.create({ uName: uName, fName: fName, lName: lName, phoneNumber: phoneNumber });
+function getUserUName(uName) {
+	return Users.findOne(
+		{ where: { uName: uName } }
+	);
+}
+
+function authUser(userInfos) {
+	return Users.upsert(
+		userInfos
+	).then(function(users) {
+		return users;
+	}).catch((err) => {
+		console.log(err)
+	})
+}
+
+function isAuthed(uName,token){
+	return Users.findOne({where : {uName : uName, token : token}});
+}
+
+function addUser(uName, fName, lName, phoneNumber, token, expires) {
+	return Users.create({ uName: uName, fName: fName, lName: lName, phoneNumber: phoneNumber, token : token, expires : expires });
 }
 
 function deleteUser(id) {
@@ -50,7 +79,9 @@ function deleteUser(id) {
 	)
 		.then(function(users) {
 			return users.destroy();
-		})
+		}).catch((err) => {
+		console.log(err)
+	})
 }
 
-module.exports = {getUser, addUser, deleteUser}
\ No newline at end of file
+module.exports = {getUser, addUser, deleteUser, authUser, refreshUser,getUserUName}
\ No newline at end of file
diff --git a/package.json b/package.json
index b8e86d651be2b5b52869d0a579b8bbdd8afda16a..37625ec4feed2b23a81ce835af22a31b9082a7f5 100644
--- a/package.json
+++ b/package.json
@@ -11,6 +11,7 @@
     "debug": "~2.6.3",
     "express": "~4.15.2",
     "express-session": "^1.15.3",
+    "moment": "^2.18.1",
     "morgan": "~1.8.1",
     "mysql": "^2.13.0",
     "mysql2": "^1.3.2",
diff --git a/routes/auth.route.js b/routes/auth.route.js
index 4198ff4f86ae53d521a787e468c8857449d95610..6ffa171f2e4bddb0f822b497de67663806b0fe91 100644
--- a/routes/auth.route.js
+++ b/routes/auth.route.js
@@ -1,7 +1,10 @@
 const express = require('express');
+const moment = require('moment');
 
 const myPassport = require('../config/my-passport');
 
+const userModel = require('../models/user.model');
+
 const router = express.Router();
 
 router.get('/', function(req,res){
@@ -16,6 +19,10 @@ router.get('/failed', function(req,res){
 	res.status(200).send('Failed : <a href="/auth">Try again</a>');
 });
 
+router.get('/success', function(req,res){
+	res.status(200).send(JSON.stringify(req.session.user));
+});
+
 router.get('/connect',
   myPassport.authenticate('oauth2'));
 
@@ -27,9 +34,30 @@ router.get('/disconnect', function(req,res){
 router.get('/connect/callback',
   myPassport.authenticate('oauth2', { failureRedirect: '/auth/failed' }),
   function(req, res) {
-    // Successful authentication, redirect home.
-    req.session.connected = 1;
-    res.redirect('/auth');
+    // Successful authentication, auth user & redirect home.
+	let user = res.req.user
+	req.session.user = null
+	let userInfos = {
+		uName : user.login,
+		fName : user.first_name,
+		lName : user.last_name,
+		phoneNumber : user.mobile_number,
+		token : req.query.code,
+		expires : moment().add(1,'days')
+	}
+	userModel.authUser(userInfos)
+	.then(()=>{
+		userModel.getUserUName(userInfos.uName)
+		.then((loggedUser)=>{
+			userModel.refreshUser(loggedUser);
+			req.session.user = loggedUser.toJSON();
+			res.redirect('/auth/success');
+		})
+	})
+	.catch((err) => {
+		console.log(err);
+		res.redirect('/auth/failed');
+	})
   }
 );