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