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

auth finished

parent d6fa5f3e
Branches
No related tags found
No related merge requests found
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
......@@ -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",
......
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');
})
}
);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment