From 9841a23569665f7ab6198877590a0ff70edc2c1e Mon Sep 17 00:00:00 2001
From: Guillaume WANG <guillaume.wang@polytechnique.edu>
Date: Tue, 1 May 2018 18:23:35 +0200
Subject: [PATCH] put all admin_view in path adminview/

---
 src/index.js                |  2 +-
 src/routing/admin_router.js | 25 +++++++++++++++----------
 src/views/error.pug         |  2 +-
 src/views/home.pug          |  4 ++--
 src/views/login.pug         |  2 +-
 5 files changed, 20 insertions(+), 15 deletions(-)

diff --git a/src/index.js b/src/index.js
index 207338d..8753dd4 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('/adminview',router); // catches and resolves HTTP requests to paths '/adminview/*'
 
 // 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 fd5a422..3b82f6a 100644
--- a/src/routing/admin_router.js
+++ b/src/routing/admin_router.js
@@ -3,6 +3,9 @@
  * Il définit la page de connexion `/`, le panneau administrateur `/admin` et l'API REST \(`/db/:table?`)
  * 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)
+ * mais ca marche visiblement pas... Donc j'ai mis les paths absolus dans les res.redirect().
  */
 import express from 'express';
 import knex from '../../db/knex_router';
@@ -20,20 +23,20 @@ let port = process.env.PORT || 3000;
  */
 
 router.get('/', function (req, res) {
+    console.log("GET handler for /adminview route");
     console.log('Connecting to ' + req.url);
     console.log('Trying to go to admin page...');
-    res.redirect('/admin');
+    res.redirect('/adminview/admin'); 
 });
 
-//note that this doesn't conflict with the server.get('/login', ...) in index.js since this catches path '/adminview/login'
-router.get('/login', function (req, res) {
+router.get('/avlogin', 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('/login'),
+    ensureLoggedIn('/adminview/avlogin'),
     function (req, res) {
         console.log('Connecting to ' + req.url);
         let userName;
@@ -54,10 +57,10 @@ router.get('/admin',
     }
 );
 
-router.post('/login', 
+router.post('/avlogin', 
     passport.authenticate('ldapauth', {
-        successRedirect: '/admin',
-        failureRedirect: '/login',
+        successRedirect: '/adminview/admin',
+        failureRedirect: '/adminview/avlogin',
         failureFlash: true
     }
     // on a besoin de faire un callback apres le passport.authenticate car
@@ -79,16 +82,18 @@ router.post('/login',
     )
 );
 
-router.post('/logout', function (req, res) {
+router.post('/avlogout', function (req, res) {
     req.logout();
-    res.redirect('/');
+    res.redirect('/adminview');
 });
 
+// je pense qu'on ferait mieux d'utiliser ca
+// https://expressjs.com/en/4x/api.html#router.route
 router.get('/db?', function (req, res) {
     let table_name = req.query.table;
     let columns = req.query.columns;
 
-    res.redirect(`db/${table_name}?columns=${columns}`);
+    res.redirect(`/adminview/db/${table_name}?columns=${columns}`);
 });
 
 /**
diff --git a/src/views/error.pug b/src/views/error.pug
index 598246c..31547c3 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="/") Go back
\ No newline at end of file
+    a(href="/adminview/admin") Go back
\ No newline at end of file
diff --git a/src/views/home.pug b/src/views/home.pug
index e0ab000..bd16c51 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="/db", method="get")
+    form(action="/adminview/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="/logout", method="post")
+    form(action="/adminview/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 f0594a3..b96c36f 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="/login", method="post")
+    form(action="/adminview/avlogin", method="post")
         div.form-group
             label(for="username") Frankiz ID
             input.form-control(type="text", placeholder="User", name="username")
-- 
GitLab