Select Git revision
apps.py
auth.route.js 1.87 KiB
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){
let result = '<div style="text-align:center;font-size:1.2em">Vous n\'êtes pas connecté, merci de bien vouloir vous authentifier : <br/><br/><a style="display:block;text-decoration:none;padding:10px;border-radius:5px;background-color:white;box-shadow:0px 0px 5px black;color:black;width:100px;margin:auto;" href="/auth/connect">Login</a><br/></div>'
if(req.session.connected){
result = 'You\'re connected : <a href="/auth/disconnect">Logout</a>'
}
res.status(200).send(result);
});
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'));
router.get('/disconnect', function(req,res){
req.session.connected = false;
res.redirect('/auth');
});
router.get('/connect/callback',
myPassport.authenticate('oauth2', { failureRedirect: '/auth/failed' }),
function(req, res) {
// 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,userInfos.token);
req.session.user = loggedUser.toJSON();
res.redirect('/auth/success');
})
})
.catch((err) => {
console.log(err);
res.redirect('/auth/failed');
})
}
);
module.exports = router;