From 21e0f3870a71cc6be0c944541976c3a24302cd36 Mon Sep 17 00:00:00 2001 From: ManifoldFR <wilson.jallet@gmail.com> Date: Wed, 28 Feb 2018 11:43:48 +0100 Subject: [PATCH] Encapsulating graphql schema in its own file --- db/seeds/01_create_groups.js | 5 +++++ src/admin_view/admin_router.js | 13 ++++++------- src/graphql/schema.js | 30 ++++++++++++++++++++++++++++++ src/index.js | 3 --- src/server.js | 29 +---------------------------- src/views/login.pug | 2 +- 6 files changed, 43 insertions(+), 39 deletions(-) create mode 100644 src/graphql/schema.js diff --git a/db/seeds/01_create_groups.js b/db/seeds/01_create_groups.js index bfb6e29..b5cdc83 100644 --- a/db/seeds/01_create_groups.js +++ b/db/seeds/01_create_groups.js @@ -15,6 +15,11 @@ exports.seed = function(knex, Promise) { website: 'binet-jtx.com', school: 'polytechnique' }, + { + name: 'Kès', + website: 'kes.binets.fr', + school: 'polytechnique' + }, { name: 'DaTA', website: 'data-ensta.fr', diff --git a/src/admin_view/admin_router.js b/src/admin_view/admin_router.js index 0c8fae6..b704b4f 100644 --- a/src/admin_view/admin_router.js +++ b/src/admin_view/admin_router.js @@ -1,7 +1,6 @@ /** - * @file Interface "administrateur" de l'acces aux BDD. S'appuie sur css et views. + * @file */ - import express from 'express'; import knex from '../../db/knex_router'; import passport from 'passport'; @@ -20,17 +19,17 @@ router.get('/admin', function (req, res) { res.render('home', { title: 'Home', port: port }); }); -router.post('/loginAttempt' - , passport.authenticate('ldapauth', { +router.post('/login', + passport.authenticate('ldapauth', { //successRedirect: '/admin', failureRedirect: '/', //failureFlash: true //failureFlas: 'Invalid username or password.' //TODO: test this. ce message s'affiche-t-il tout seul ou faut-il aller le chercher quand on genere login.pug? - }) + }), // on a commente les deux lignes dessus et 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... - , function (req, res) { + function (req, res) { req.session.dn = req.user.dn; req.session.password = req.body.password; @@ -43,7 +42,7 @@ router.post('/loginAttempt' ); -router.get('/logout', function (req, res) { +router.post('/logout', function (req, res) { req.logout(); res.redirect('/'); }); diff --git a/src/graphql/schema.js b/src/graphql/schema.js new file mode 100644 index 0000000..4313cee --- /dev/null +++ b/src/graphql/schema.js @@ -0,0 +1,30 @@ +import knex from '../../db/knex_router'; +import { makeExecutableSchema } from 'graphql-tools'; + +const typeDefs = ` + type Query { + groups: [Group] + } + + type Group { + name: String! + id: ID! + website: String + updatedAt: String! + description: String + school: String! + } +`; + +const resolvers = { + Query: { + groups: () => knex.select().from('groups') + } +}; + +const schema = makeExecutableSchema({ + typeDefs, + resolvers +}); + +export default schema; \ No newline at end of file diff --git a/src/index.js b/src/index.js index f61366f..6529c16 100644 --- a/src/index.js +++ b/src/index.js @@ -1,13 +1,10 @@ /** * @file Entry point de webpack */ - import server from './server'; import colors from 'colors'; - import { graphqlExpress, graphiqlExpress } from 'graphql-server-express'; import makeExecutableSchema from 'graphql-tools'; - import setupLdapAuth from './ldap_auth/ldap_auth'; import router from './admin_view/admin_router'; diff --git a/src/server.js b/src/server.js index f366a93..1a1e371 100644 --- a/src/server.js +++ b/src/server.js @@ -2,11 +2,10 @@ import express from 'express'; import bodyParser from 'body-parser'; import favicon from 'serve-favicon'; import morgan from 'morgan'; -import knex from '../db/knex_router'; import path from 'path'; import ldap_auth from './ldap_auth/ldap_auth'; +import schema from './graphql/schema'; import { graphqlExpress, graphiqlExpress } from 'graphql-server-express'; -import { makeExecutableSchema } from 'graphql-tools'; /** * @file Cree le serveur express avec tous les middleware qui vont bien @@ -35,32 +34,6 @@ server.use(morgan('dev')); // setting up ldap authentication ldap_auth(server); -const typeDefs = ` - type Query { - groups: [Group] - } - - type Group { - name: String! - id: ID! - website: String - updatedAt: String! - description: String - school: String! - } -`; - -const resolvers = { - Query: { - groups: () => knex.select().from('groups') - } -}; - -const schema = makeExecutableSchema({ - typeDefs, - resolvers -}); - // Charge le middleware express pour GraphQL server.use('/graphql', bodyParser.json(), graphqlExpress({schema})); diff --git a/src/views/login.pug b/src/views/login.pug index c1b6c7c..2211179 100644 --- a/src/views/login.pug +++ b/src/views/login.pug @@ -4,7 +4,7 @@ block content h1 Sigma backend API p Veuillez vous connecter. p Please log in. - form(action="/loginAttempt", method="post") + form(action="/login", method="post") div.form-group label(for="username") Frankiz ID input.form-control(type="text", placeholder="User", name="username") -- GitLab