diff --git a/package-lock.json b/package-lock.json index 0cb39e42410ac656edf016405d88cd32a15346fd..08cc02b7beb55d9ffc7eff9ddf94a9925a3a0965 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2322,6 +2322,15 @@ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=" }, + "cookie-parser": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.4.3.tgz", + "integrity": "sha1-D+MfoZ0AC5X0qt8fU/3CuKIDuqU=", + "requires": { + "cookie": "0.3.1", + "cookie-signature": "1.0.6" + } + }, "cookie-signature": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", diff --git a/package.json b/package.json index 21127a9bcbee49ab0f282f05abc8671ebee86cd9..73453478597f34c152bb77313fb9204eb3bcfb6f 100644 --- a/package.json +++ b/package.json @@ -9,6 +9,7 @@ "colors": "^1.2.3", "connect-ensure-login": "^0.1.1", "connect-flash": "^0.1.1", + "cookie-parser": "^1.4.3", "copy-webpack-plugin": "^4.5.0", "cors": "^2.8.4", "express": "^4.16.2", diff --git a/src/index.js b/src/index.js index 207338d7ba7cc36aa8cc7b13d87aab960333aaf2..dfeffd949fe1b18b3a7760bdf8aeb3e537a143fb 100644 --- a/src/index.js +++ b/src/index.js @@ -8,7 +8,7 @@ import router from './routing/admin_router'; import passport from 'passport'; // setting up l'interface admin des BDD -server.use('/',router); // catches and resolves HTTP requests to paths '/adminview/*' +server.use('/',router); // catches and resolves HTTP requests to paths '/*' // gere les requetes de login du front server.post('/login', diff --git a/src/routing/admin_router.js b/src/routing/admin_router.js index 3b82f6a437333709897161f274a376a55254f573..0ac0fc7420faefa1ebf04f81afbffa95136131ce 100644 --- a/src/routing/admin_router.js +++ b/src/routing/admin_router.js @@ -4,7 +4,7 @@ * permettant de consulter la base de donnée interne à Sigma, via des requêtes construites avec Knex. * @author manifold * - * Les res.redirect() sont censes supporter les paths relatifs (et donc pas besoin de repreciser /adminview/* a chaque fois) + * Les res.redirect() sont censes supporter les paths relatifs (et donc pas besoin de repreciser /* a chaque fois) * mais ca marche visiblement pas... Donc j'ai mis les paths absolus dans les res.redirect(). */ import express from 'express'; @@ -23,20 +23,20 @@ let port = process.env.PORT || 3000; */ router.get('/', function (req, res) { - console.log("GET handler for /adminview route"); + console.log("GET handler for / route"); console.log('Connecting to ' + req.url); console.log('Trying to go to admin page...'); - res.redirect('/adminview/admin'); + res.redirect('/admin'); }); -router.get('/avlogin', function (req, res) { +router.get('/login', function (req, res) { console.log('Connecting to ' + req.url); res.render('login', { title: 'Login', port: port, errorMessage: req.flash('error') }); //lets pug render src/views/login.pug with specified attributes }); router.get('/admin', - ensureLoggedIn('/adminview/avlogin'), + ensureLoggedIn('/login'), function (req, res) { console.log('Connecting to ' + req.url); let userName; @@ -57,34 +57,9 @@ router.get('/admin', } ); -router.post('/avlogin', - passport.authenticate('ldapauth', { - successRedirect: '/adminview/admin', - failureRedirect: '/adminview/avlogin', - failureFlash: true - } - // on a besoin de faire un callback apres le passport.authenticate car - // on souhaite garde l'information user.dn et body.password qq part. - // TODO: essayer de garder ces informations plus proprement... - // EDIT: en fait apparemment on a pas besoin de ces informations du tout - /* - function (req, res) { - req.session.dn = req.user.dn; - req.session.password = req.body.password; - - if (req.session.returnTo !== undefined) { - res.redirect(req.session.returnTo); //TODO: <- euh ok ca marche mais c'est quoi ca? - } else { - res.redirect("/admin"); - } - } - */ - ) -); - -router.post('/avlogout', function (req, res) { +router.post('/logout', function (req, res) { req.logout(); - res.redirect('/adminview'); + res.redirect('/'); }); // je pense qu'on ferait mieux d'utiliser ca @@ -93,7 +68,7 @@ router.get('/db?', function (req, res) { let table_name = req.query.table; let columns = req.query.columns; - res.redirect(`/adminview/db/${table_name}?columns=${columns}`); + res.redirect(`/db/${table_name}?columns=${columns}`); }); /** diff --git a/src/server.js b/src/server.js index 06753933ff58678a6b19519b17667c6bc597b96a..0b9b33c84410259f202e733f03547db796f65503 100644 --- a/src/server.js +++ b/src/server.js @@ -6,6 +6,7 @@ * @author manifold */ import express from 'express'; +import cookieParser from 'cookie-parser'; import schema from './graphql/schema'; import { express as graphqlVoyager } from 'graphql-voyager/middleware'; import graphqlHTTP from 'express-graphql'; // new name of 'graphql-server-express'. cf npmjs.com @@ -29,6 +30,7 @@ server.use(bodyParser.json()); //parses bodies of media type "application/json" server.use(bodyParser.urlencoded({ //parses bodies of media type "application/x-www-form-urlencoded" extended: true //use qs library (quoi que ca veuille dire o.O) })); +server.use(cookieParser()); const configPath = path.resolve('./', 'ldap_config.json'); const config = JSON.parse(fs.readFileSync(configPath, 'utf8')); @@ -98,7 +100,7 @@ server.use('/graphql', // console.log("Accessing GraphQL as: ",uid); return { - schema: schema, + schema, graphiql: true, // gives access to graphiql if request is detected to be from browser (je crois) context: { user: { uid: uid, password: password } } // accessible in every single resolver as the third argument }; @@ -112,7 +114,7 @@ server.use('/voyager', ); // connect-flash is middleware for flashing messages -// used in sigma-back's admin interface (admin_view) +// used in sigma-back's admin interface server.use(flash()); export default server; diff --git a/src/views/error.pug b/src/views/error.pug index 31547c3f665b77d9c6dc9775b9ffa673c161cebe..c551b32540402bf7734a37ef5afc810585157973 100644 --- a/src/views/error.pug +++ b/src/views/error.pug @@ -6,4 +6,4 @@ block extraStyles block content h1 Error #{status} p #{error_message} - a(href="/adminview/admin") Go back \ No newline at end of file + a(href="/admin") Go back \ No newline at end of file diff --git a/src/views/home.pug b/src/views/home.pug index 718d835efc52481581b6be858273ab0d9efee8d9..e0ab000f7844672cdf5c09297db356e13c37c574 100644 --- a/src/views/home.pug +++ b/src/views/home.pug @@ -5,7 +5,7 @@ block content h2 Query the database p Hello, world! This is server talking to you live on port #{port}! p You can use the REST API to query the database using the form below. - form(action="/adminview/db", method="get") + form(action="/db", method="get") div.form-group label(for="table") Table input.form-control(type="search", name="table") @@ -21,5 +21,5 @@ block content a(class="button button-small",href="/voyager") Voyager | p Currently logged in as: #{userName}. - form(action="/adminview/avlogout", method="post") + form(action="/logout", method="post") button.form-control(type="submit",class="button") Déconnexion/<em>Logout</em> diff --git a/src/views/login.pug b/src/views/login.pug index b96c36f93cdadc50373f81915110930761c6efad..f0594a3f816faeec7e79d415611d396ff06493fb 100644 --- a/src/views/login.pug +++ b/src/views/login.pug @@ -6,7 +6,7 @@ block content p Veuillez vous connecter. p <em>Please log in.</em> p #{errorMessage} - form(action="/adminview/avlogin", method="post") + form(action="/login", method="post") div.form-group label(for="username") Frankiz ID input.form-control(type="text", placeholder="User", name="username")