diff --git a/src/admin_view/admin_router.js b/src/admin_view/admin_router.js index 4a4a663a0399002eda6dddf291918779dd355641..503d8dd5cffc33ed42923e3cd7e962244d3c6dd8 100644 --- a/src/admin_view/admin_router.js +++ b/src/admin_view/admin_router.js @@ -17,11 +17,32 @@ router.get('/', function (req, res) { errorMessage: req.flash('error') }); }); +/** + * @description Le login se fait en POST. Faire un GET à /login renvoie à la racine / + */ +router.get('/login', function(req,res) { + console.log('Redirecting to home...'); + res.redirect('/'); +}); + router.get('/admin', - // ensureLoggedIn('/'), + ensureLoggedIn('/login'), function (req, res) { console.log('Connecting to ' + req.url); - res.render('home', { title: 'Home', port: port }); + let userName; + /* + * On ne veut pas déclencer d'erreur 500 si on ne peut pas lire l'utilisateur + * La personne n'est peut-être pas connectée, mais cela doit être géré autrement + */ + try { + let user = req.session.passport.user; + console.log('Welcome,',user.cn); + userName = user.cn; + } catch (err) { + console.log(err.message); + userName = "No one"; + } + res.render('home', { title: 'Home', port: port, userName: userName }); }); router.post('/login', @@ -105,7 +126,9 @@ router.use((req, res, next) => { * @summary Gère les erreurs 404 */ router.use((err, req, res, next) => { + console.log("Entering error handler"); res.locals.message = err.message; + console.log(err.message); res.status(err.status || 500); let error_message = res.statusCode == 404 ? 'Not found.' : 'Internal server error.'; diff --git a/src/graphql/schema.js b/src/graphql/schema.js index ef56500bb671a00b63e1987290a97687b4c6091a..66854b963022c8cdbde33ad26fb29bec437d8bc6 100644 --- a/src/graphql/schema.js +++ b/src/graphql/schema.js @@ -165,6 +165,7 @@ const resolvers = { user: (obj, args, context) => { const refactorer = (data) => { return { + uid: args.uid, lastName: data.sn, givenName: data.givenName, birthdate: data.brBirthdate, @@ -172,6 +173,8 @@ const resolvers = { }; }; + console.log("Logged in as:",context.user); + const result = rens(context.user, args.uid).then(res => { const output = res.map(entry => refactorer(entry)); return output; diff --git a/src/server.js b/src/server.js index c26bebffef094ca1f8a219a2c2bfe8da1a96ee44..99184c879573b713d47106b48f5607a6e3506460 100644 --- a/src/server.js +++ b/src/server.js @@ -2,6 +2,7 @@ * @file Cree le serveur express avec tous les middleware qui vont bien */ import express from 'express'; +import session from 'express-session'; import bodyParser from 'body-parser'; import favicon from 'serve-favicon'; import morgan from 'morgan'; @@ -19,6 +20,19 @@ server.use(bodyParser.urlencoded({ extended: true })); +/** + * @description Cache le fait que l'application tourne sous Express dans le header HTTP. + */ +server.disable('x-powered-by'); + +// Configuration de express-session +server.use(session({ + secret: 'race condition', + cookie: { maxAge: 60000 }, + resave: true, + saveUninitialized: true +})); + // setting up view engine for pug let viewpath = path.resolve('./','src','views'); server.set('views', viewpath); @@ -39,10 +53,8 @@ server.use('/graphql', bodyParser.json(), cors(), let password; try { - uid = "anatole.romon"; + uid = req.session.passport.user.uid; password = "mythe"; - //uid = req.session.id; - //password = req.session.password; } catch (err) { uid = "louis.vaneau"; password = "mythe"; diff --git a/src/views/home.pug b/src/views/home.pug index 5f54ed0546251e286f383302cdc4305ef6034302..ecf13fedf6636a61dca465b52cdd07c5ef4dbafc 100644 --- a/src/views/home.pug +++ b/src/views/home.pug @@ -20,5 +20,6 @@ block content | requests to the database. a(href="/graphiql") Check it out. | + p Currently logged in as: #{userName}. form(action="/logout", method="post") button.form-control(type="submit") Déconnexion/<em>Logout</em>