From b33ec4424e8de6dbd184d4ad8e7268a60d6dd12d Mon Sep 17 00:00:00 2001 From: ManifoldFR <wilson.jallet@gmail.com> Date: Fri, 2 Mar 2018 14:07:01 +0100 Subject: [PATCH] Updated GraphQL and updated admin page --- src/css/style.css | 18 ++++++++++------- src/graphql/schema.js | 6 +++--- src/graphql/typeDefs.js | 41 +++++++++++++++++++++++--------------- src/index.js | 2 +- src/server.js | 44 ++++++++++++++++++++++++++++++++++------- src/views/home.pug | 9 ++++----- 6 files changed, 81 insertions(+), 39 deletions(-) diff --git a/src/css/style.css b/src/css/style.css index 2b530ac..f3c1710 100644 --- a/src/css/style.css +++ b/src/css/style.css @@ -37,27 +37,31 @@ input.form-control:focus { } .button { + margin-top: 0.7em; + margin-bottom: 0.7em; display: block; color: white; - min-width: 120px; + min-width: 100px; height: 30px; background-color: rgba(0, 2, 138, 0.767); border: solid 1px rgba(117, 117, 117, 0.226); border-radius: 4px; } -div.button { +a.button { display: block; text-align: center; - font-size: 11pt; - width: 120px; -} - -button a { + font-size: 10pt; color: white; text-decoration: none; } +.button-small { + width: 100px; +} + + + .form-group button { margin-top: 0; margin-left: 0.6em diff --git a/src/graphql/schema.js b/src/graphql/schema.js index 4eabbfa..feef764 100644 --- a/src/graphql/schema.js +++ b/src/graphql/schema.js @@ -133,7 +133,7 @@ const createSubgroup = (user, args) => { return getGroupIfVisible(user, rasUID); }); })); -} +}; /** * @summary Créé un groupe si les arguments sont tous valides et l'utilisateur est authorisé @@ -205,9 +205,9 @@ const resolvers = { AdminMutation: { isAdmin: (obj, args, context) => { - return true; + return true; - }, + }, createSubgroup: (obj, args, context) => { args.parentuid = obj.groupUID; return createSubgroup(context.user, args); diff --git a/src/graphql/typeDefs.js b/src/graphql/typeDefs.js index aed9237..f3cd927 100644 --- a/src/graphql/typeDefs.js +++ b/src/graphql/typeDefs.js @@ -5,6 +5,7 @@ const RootTypes = ` group(uid: ID) : Group user(uid: ID) : [User] allEvents: [Event] + allPosts: [Post] } type Mutation { @@ -83,36 +84,44 @@ const Group = ` uid: ID name: String website: String - createdAt: String - updatedAt: String + createdAt: String! + updatedAt: String! description: String school: String parentuid: String } `; +const Post = ` + # Publications + interface Post { + id: ID! + title: String! + createdAt: String! + updatedAt: String! + # Auteurs de la publication + author: [Group] + description: String + } +`; + const Event = ` # Événements - type Event { + type Event implements Post { + id: ID! # Intitulé de l'événement title: String! # Lieu de l'événement location: String - datetime: String! - # Groupes organisateurs - groups: [Group] + createdAt: String! + updatedAt: String! + startTime: String! + endTime: String! + # Organisateurs + author: [Group] # Personnes qui y participent participants: [User] - } -`; - -const Post = ` - # Publication - type Post { - title: String! - uid: ID! - # Groupe auteur de la publication - author: Group + description: String } `; diff --git a/src/index.js b/src/index.js index f67d6bc..7b1ad75 100644 --- a/src/index.js +++ b/src/index.js @@ -1,5 +1,5 @@ /** - * @file Entry point de webpack + * @file Point d'entrée de webpack */ import server from './server'; import colors from 'colors'; diff --git a/src/server.js b/src/server.js index bb26e72..a87bc02 100644 --- a/src/server.js +++ b/src/server.js @@ -2,16 +2,19 @@ * @file Cree le serveur express avec tous les middleware qui vont bien */ import express from 'express'; +import schema from './graphql/schema'; +import { express as graphqlVoyager } from 'graphql-voyager/middleware'; +import { graphqlExpress, graphiqlExpress } from 'graphql-server-express'; +import flash from 'connect-flash'; +import passport from 'passport'; +import LdapStrategy from 'passport-ldapauth'; +import fs from 'fs'; +import session from 'express-session'; import bodyParser from 'body-parser'; import favicon from 'serve-favicon'; import morgan from 'morgan'; import path from 'path'; import cors from 'cors'; -import schema from './graphql/schema'; -import setupLdapAuth from './ldap/ldap_auth'; -import { express as graphqlVoyager } from 'graphql-voyager/middleware'; -import { graphqlExpress, graphiqlExpress } from 'graphql-server-express'; -import flash from 'connect-flash'; const server = express(); @@ -24,7 +27,34 @@ server.use(bodyParser.urlencoded({ /** * @description Configuration authentification */ -setupLdapAuth(server); +let configPath = path.resolve('./', 'ldap_config.json'); +let config = JSON.parse(fs.readFileSync(configPath, 'utf8')); + +passport.use(new LdapStrategy({ + server: { + url: config.ldap.server, + searchBase: config.ldap.searchBase, + searchFilter: config.ldap.searchFilter + } +} +)); + +// Définit les paramètres de stockage des sessions. +server.use(session({ + secret: config.sessionSecret, + resave: true, + saveUninitialized: false +})); +server.use(passport.initialize()); +server.use(passport.session()); + +passport.serializeUser(function (user, done) { + done(null, user); +}); + +passport.deserializeUser(function (user, done) { + done(null, user); +}); /** * @description Cache le fait que l'application tourne sous Express dans le header HTTP. @@ -53,7 +83,7 @@ server.use('/graphql', bodyParser.json(), cors(), uid = req.session.passport.user.uid; password = "mythe"; } catch (err) { - uid = "anonymous"; + uid = "quentin.chevalier"; password = ""; } diff --git a/src/views/home.pug b/src/views/home.pug index 23b7f16..ef24d0b 100644 --- a/src/views/home.pug +++ b/src/views/home.pug @@ -14,13 +14,12 @@ block content input.form-control(type="search", name="columns") button.form-control(type="submit",class="button") Recherche/<em>Search</em> | - h2 GraphiQL + h2 GraphiQL and Voyager p GraphiQL is an interactive environment to make GraphQL | requests to the database. - div(class="button") - a(href="/graphiql") Check it out. - div(class="button") - a(href="/voyager") Check it out. + p GraphQL Voyager is an application that displays the GraphQL schema as an actual graph. + a(class="button button-small",href="/graphiql") GraphiQL + a(class="button button-small",href="/voyager") Voyager | p Currently logged in as: #{userName}. form(action="/logout", method="post") -- GitLab