From 46bef15f8f55d8509c76368bc494ce4a6386dbef Mon Sep 17 00:00:00 2001
From: Guillaume WANG <guillaume.wang@polytechnique.edu>
Date: Fri, 23 Nov 2018 21:22:56 +0100
Subject: [PATCH] stuff again

---
 src/app.ts | 37 ++++++++++++++++++++++---------------
 1 file changed, 22 insertions(+), 15 deletions(-)

diff --git a/src/app.ts b/src/app.ts
index df227bf..003b09d 100644
--- a/src/app.ts
+++ b/src/app.ts
@@ -2,7 +2,7 @@
  * @file Initialise et configure le serveur Express sur lequel tourne le back.
  * 
  * Inclut les middlewares des packages utilisés: apollo-server, passportjs, morgan...
- * et définit le middleware de notre API.
+ * et branche nos propres middleware : l'API GraphQL et l'interface admin du backend (adminview).
  * Pour comprendre ce que fait chaque package, se référer à leur page sur https://www.npmjs.com.
  * 
  * On peut considérer que les app.use (et app.get et app.post) sont pattern-matchés et
@@ -16,7 +16,7 @@ import bodyParser from 'body-parser';
 import { express as graphqlVoyager } from 'graphql-voyager/middleware';
 import { ApolloServer } from 'apollo-server-express';
 import schema from './graphql/schema'; // definition du schéma et des resolvers
-// l'interface admin du back (adminview)
+// l'interface admin du backend (adminview)
 import router from './adminview/admin.router';
 // packages pour l'authentification
 import passport from 'passport';
@@ -39,27 +39,24 @@ app.use(bodyParser.json()); //parses bodies of media type "application/json"
 app.use(bodyParser.urlencoded({ //parses bodies of media type "application/x-www-form-urlencoded"
     extended: true //use qs library (see https://www.npmjs.com/package/body-parser#bodyparserurlencodedoptions)
 }));
-// parse Cookie header and populate req.cookies with an object keyed by the cookie names
-app.use(cookieParser());
 // ne *pas* inclure de header HTTP publicisant que l'application tourne sous Express
 app.disable('x-powered-by');
 // setup morgan (HTTP request logger middleware)
 app.use(morgan('dev'));
 
 /**
- * @desc SETUP DE ADMINVIEW
+ * @desc Authentification de la requête (cookie)
+ * =============================================
+ * Si la requête possède un cookie, on regarde dans la session s'il correspond a un cookie valide.
+ * Si oui, on récupère l'uid de l'utilisateur correspondant dans la session afin de le passer à GraphQL dans le context.
+ * Si non, on passe quand meme un uid spécial signifiant que l'utilisateur n'est pas authentifié.
+ * NB : la session ne contient que les correspondances cookie / uid, et rien d'autre.
  */
-// setting up view engine for pug, for adminview
-console.log("Express app is running at", __dirname);
-let viewpath = path.resolve(__dirname, 'views');
-app.set('views', viewpath);
-app.set('view engine', 'pug');
+// load the session
+
+
+// from passport middleware's perspective: authenticate request "against the session"
 
-/**
- * @desc AUTHENTIFICATION POUR LES REQUETES POSSEDANT UN COOKIE ET PROVENANT D'UN UTILISATEUR DEJA AUTHENTIFIE
- * Remarque: introduit aussi les middlewares session et passport, 
- * qui sont aussi utiles pour l'authentification dans les autres cas.
- */
 
 /**
  * WTF??? why is sessionSecret in ldap_config.json? it has nothing to do with ldap.
@@ -242,6 +239,16 @@ app.use('/voyager',
     graphqlVoyager({ endpointUrl: '/graphql' })
 );
 
+
+/**
+ * @desc SETUP DE L'INTERFACE ADMIN DU BACKEND ("ADMINVIEW")
+ */
+// setting up view engine for pug, for adminview
+console.log("Express app is running at", __dirname);
+let viewpath = path.resolve(__dirname, 'views');
+app.set('views', viewpath);
+app.set('view engine', 'pug');
+
 // on utilise un express.Router qui sert a creer un "sous-middleware stack".
 app.use('/adminview', router); // catches and resolves HTTP requests to paths '/adminview/*'
 
-- 
GitLab