Skip to content
Snippets Groups Projects
Commit 3f0dbc85 authored by Nicolas Fley's avatar Nicolas Fley
Browse files

auth finished

parent d6fa5f3e
No related branches found
No related tags found
No related merge requests found
var Sequelize = require('sequelize'); var Sequelize = require('sequelize');
var sequelize = require('./sequelize'); var sequelize = require('./sequelize');
const moment = require('moment')
sequelize sequelize
.authenticate() .authenticate()
...@@ -11,37 +12,65 @@ sequelize ...@@ -11,37 +12,65 @@ sequelize
}); });
var Users = sequelize.define('Users', { var Users = sequelize.define('Users', {
uName: Sequelize.STRING, uName: {
type : Sequelize.STRING,
allowNull: false,
unique: true,
},
fName: Sequelize.STRING, fName: Sequelize.STRING,
lName: Sequelize.STRING, lName: Sequelize.STRING,
phoneNumber: Sequelize.STRING phoneNumber: Sequelize.STRING,
token: Sequelize.STRING,
expires: Sequelize.DATE
},{ },{
timestamps: false, timestamps: false,
tableUser: 'Users', tableUser: 'Users',
}); });
sequelize.sync().then(() => { sequelize.sync({force:true})
Users.create({
uName: '2015cochetg', function refreshUser(user){
fName: 'Gabriel', expiresTime = user.toJSON().expires
lName: 'Cochet', if( moment.duration(moment(expiresTime).diff(moment())).asHours() < 23){
phoneNumber: '+33631615426', user.updateAttributes({
}).then(out => console.log(out.dataValues)); expires : moment().add(1,'days')
Users.create({
uName: '2015fleyn',
fName: 'Nicolas',
lName: 'Fley',
phoneNumber: '+33650588938',
}).then(out => console.log(out.dataValues));
}) })
}
}
function refreshById(id,timeLeft){
if( moment.duration(moment(user.expires).diff(moment())).asHours() < 23){
return true;
}else{
return false;
}
}
function getUser(id) { function getUser(id) {
return Users.findById(id); return Users.findById(id);
} }
function addUser(uName, fName, lName, phoneNumber) { function getUserUName(uName) {
return Users.create({ uName: uName, fName: fName, lName: lName, phoneNumber: phoneNumber }); 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) { function deleteUser(id) {
...@@ -50,7 +79,9 @@ function deleteUser(id) { ...@@ -50,7 +79,9 @@ function deleteUser(id) {
) )
.then(function(users) { .then(function(users) {
return users.destroy(); return users.destroy();
}).catch((err) => {
console.log(err)
}) })
} }
module.exports = {getUser, addUser, deleteUser} module.exports = {getUser, addUser, deleteUser, authUser, refreshUser,getUserUName}
\ No newline at end of file \ No newline at end of file
...@@ -11,6 +11,7 @@ ...@@ -11,6 +11,7 @@
"debug": "~2.6.3", "debug": "~2.6.3",
"express": "~4.15.2", "express": "~4.15.2",
"express-session": "^1.15.3", "express-session": "^1.15.3",
"moment": "^2.18.1",
"morgan": "~1.8.1", "morgan": "~1.8.1",
"mysql": "^2.13.0", "mysql": "^2.13.0",
"mysql2": "^1.3.2", "mysql2": "^1.3.2",
......
const express = require('express'); const express = require('express');
const moment = require('moment');
const myPassport = require('../config/my-passport'); const myPassport = require('../config/my-passport');
const userModel = require('../models/user.model');
const router = express.Router(); const router = express.Router();
router.get('/', function(req,res){ router.get('/', function(req,res){
...@@ -16,6 +19,10 @@ router.get('/failed', function(req,res){ ...@@ -16,6 +19,10 @@ router.get('/failed', function(req,res){
res.status(200).send('Failed : <a href="/auth">Try again</a>'); 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', router.get('/connect',
myPassport.authenticate('oauth2')); myPassport.authenticate('oauth2'));
...@@ -27,9 +34,30 @@ router.get('/disconnect', function(req,res){ ...@@ -27,9 +34,30 @@ router.get('/disconnect', function(req,res){
router.get('/connect/callback', router.get('/connect/callback',
myPassport.authenticate('oauth2', { failureRedirect: '/auth/failed' }), myPassport.authenticate('oauth2', { failureRedirect: '/auth/failed' }),
function(req, res) { function(req, res) {
// Successful authentication, redirect home. // Successful authentication, auth user & redirect home.
req.session.connected = 1; let user = res.req.user
res.redirect('/auth'); 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');
})
} }
); );
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment