Skip to content
Snippets Groups Projects
Commit 605caa31 authored by Wilson JALLET's avatar Wilson JALLET :money_with_wings:
Browse files

Amélioration commentaires

Ajout de sauts de ligne à des endroits stratégiques

Ajout de commentaires et de crédit
parent 351de2ae
No related branches found
No related tags found
No related merge requests found
/** /**
* @file knexfile est un fichier de configuration requis par le module knexjs. Il permet de spécifier le mode de communication avec la BDD, et comprend identifiants et mots de passe. * @file Fichier de configuration Knex. Il spécifie la base de donnée à laquelle se connecter, son adresse, le nom
* @author Will Jallet * d'un utilisateur sur le serveur qui a les droits appropriés, et son mot de passe.
*
* Le fichier précise également où stocker les fichiers de migrations Knex ainsi que les _seeds_.
* @author manifold
* */ * */
const path = require('path'); const path = require('path');
......
/** /**
* @file * @file Ce fichier définit le routage d'URL au sein de l'interface du _backend_.
*
* 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
*/ */
import express from 'express'; import express from 'express';
import knex from '../../db/knex_router'; import knex from '../../db/knex_router';
......
/** /**
* @summary Fonctions pour interagir avec la BDD sigma et le LDAP. * @file Fonctions pour interagir avec la BDD sigma et le LDAP.
* @author akka vodol
*/ */
import knex from '../../db/knex_router'; import knex from '../../db/knex_router';
import { renseignerSurUtilisateur, repliquerTOLdesIds, listerGroupes, listerMembres, listerAdministrateurs } from '../ldap/ldap_data'; import { renseignerSurUtilisateur, repliquerTOLdesIds, listerGroupes, listerMembres, listerAdministrateurs } from '../ldap/ldap_data';
...@@ -9,6 +10,7 @@ export { renseignerSurUtilisateur, repliquerTOLdesIds }; ...@@ -9,6 +10,7 @@ export { renseignerSurUtilisateur, repliquerTOLdesIds };
/** /**
* @summary Renvoie tous les utilisateurs ayant des droits d'administrateur sur un groupe. * @summary Renvoie tous les utilisateurs ayant des droits d'administrateur sur un groupe.
* @function
* @desc Les utilisateurs qui ont un droit d'administrateur sur un groupe sont ses administrateurs et les utilisateurs ayant droit d'admin sur son parent * @desc Les utilisateurs qui ont un droit d'administrateur sur un groupe sont ses administrateurs et les utilisateurs ayant droit d'admin sur son parent
* @arg {String} uid - L'uid du groupe dont on veut les administrateurs. * @arg {String} uid - L'uid du groupe dont on veut les administrateurs.
* @return {Promise} Retour de requête knex. Promise qui renvera une liste de tous les utilisateurs ayant droit d'admin sur le groupe * @return {Promise} Retour de requête knex. Promise qui renvera une liste de tous les utilisateurs ayant droit d'admin sur le groupe
...@@ -18,9 +20,9 @@ export const getUsersWithAdminRights = (user, groupUID) => { ...@@ -18,9 +20,9 @@ export const getUsersWithAdminRights = (user, groupUID) => {
if (typeof adminList == "undefined") if (typeof adminList == "undefined")
return undefined; return undefined;
else else
return knex('groups').select('parentuid').where('uid', groupUID).then(reqResult => { return knex('groups').select('parentuid').where('uid', groupUID).then(req => {
if (reqResult[0].parentuid) if (req[0].parentuid)
return getUsersWithAdminRights(user, reqResult[0].parentuid).then(parentAdmins => { return getUsersWithAdminRights(user, req[0].parentuid).then(parentAdmins => {
return adminList.concat(parentAdmins); return adminList.concat(parentAdmins);
}); });
else else
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
import { makeExecutableSchema } from 'graphql-tools'; import { makeExecutableSchema } from 'graphql-tools';
import { request } from 'https'; import { request } from 'https';
import { assertBinaryExpression } from 'babel-types'; import { assertBinaryExpression } from 'babel-types';
import knex from '../../db/knex_router';
import typeDefs from './typeDefs'; import typeDefs from './typeDefs';
import * as resolverFuncs from './db_utils'; import * as resolverFuncs from './db_utils';
...@@ -54,7 +54,7 @@ const resolvers = { ...@@ -54,7 +54,7 @@ const resolvers = {
}, },
allPosts: (obj, args, context) => { allPosts: (obj, args, context) => {
return knex.select().from('posts');
}, },
searchTOL: (obj, args, context) => { searchTOL: (obj, args, context) => {
......
...@@ -107,32 +107,50 @@ const User = ` ...@@ -107,32 +107,50 @@ const User = `
const Group = ` const Group = `
# Groupes associatifs # Groupes associatifs
type Group { type Group {
# Identifiant unique du groupe
uid: ID uid: ID
# Nom du groupe
name: String name: String
# Site du groupe
website: String website: String
# Jour et heure de création du groupe
createdAt: String! createdAt: String!
updatedAt: String! updatedAt: String!
description: String description: String
# École d'origine du groupe
school: String school: String
# Groupe parent
parent: Group parent: Group
} }
`; `;
const Post = ` const Post = `
# Publications # Publications
interface Post { type Post {
id: ID! id: ID!
title: String! title: String!
createdAt: String! createdAt: String!
updatedAt: String! updatedAt: String!
# Auteurs de la publication # Auteurs de la publication
author: [Group] authors: [Group]
description: String description: String
} }
`; `;
const Announcements = `
type Announcement implements Post {
id: ID!
title: String!
createdAt: String!
updatedAt: String!
authors: [Group]
description: String
views: Int
}
`;
const Events = ` const Events = `
# Événements # Événements organisés par un ou plusieurs groupes.
type Event implements Post { type Event implements Post {
id: ID! id: ID!
# Intitulé de l'événement # Intitulé de l'événement
...@@ -144,14 +162,15 @@ const Events = ` ...@@ -144,14 +162,15 @@ const Events = `
startTime: String! startTime: String!
endTime: String! endTime: String!
# Organisateurs # Organisateurs
author: [Group] authors: [Group]
# Personnes qui y participent # Personnes qui participent à l'événement.
participants: [User] participants: [User]
description: String description: String
} }
`; `;
const Requests = ` const Requests = `
# Demandes effectuées au groupe.
type Requests { type Requests {
userJoin: [userJoinGroup] userJoin: [userJoinGroup]
eventJoin: [groupJoinEvent] eventJoin: [groupJoinEvent]
...@@ -162,6 +181,7 @@ const Requests = ` ...@@ -162,6 +181,7 @@ const Requests = `
user: User user: User
} }
# Demande
type groupJoinEvent { type groupJoinEvent {
event: Event event: Event
groupWantingToJoin: Group groupWantingToJoin: Group
...@@ -176,5 +196,4 @@ const Requests = ` ...@@ -176,5 +196,4 @@ const Requests = `
`; `;
const typeDefs = [RootTypes, Group, User, Post, Events, subMutations, subQueries, Requests]; const typeDefs = [RootTypes, Group, User, Post, Events, subMutations, subQueries, Requests];
export default typeDefs;
export default typeDefs;
\ No newline at end of file
/** /**
* @file Point d'entrée de webpack * @file Lance le serveur configuré dans {@link server.js} en y ajoutant le routeur d'URL.
* @author manifold
*/ */
import server from './server'; import server from './server';
import colors from 'colors'; import colors from 'colors';
......
/**
* @file Ce fichier gère les authentifications avec le LDAP précisé dans config.json à l'aide de passport-ldapauth.
* @author Wang
*/
import passport from 'passport';
import LdapStrategy from 'passport-ldapauth';
import session from 'express-session';
import fs from 'fs';
import path from 'path';
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
}
}
));
function setupLdapAuth(server) {
// Define new login strategy
server.use(session({
secret: config.sessionSecret,
//store: a modifier avant de lancer en prod
//voir les autres options
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);
});
}
export default setupLdapAuth;
This diff is collapsed.
/** /**
* @file Cree le serveur express avec tous les middleware qui vont bien * @file Initialise et configure le serveur Express sur lequel tourne le back.
*
* La configuration inclut tout le _middleware_ définissant les API et les services
* nécessaire utilisés, comme `express-session`, GraphiQL, GraphQL Voyager.
* @author manifold
*/ */
import express from 'express'; import express from 'express';
import schema from './graphql/schema'; import schema from './graphql/schema';
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment