From 8e35832ee3f5c359dc0ec027230736562f04bb6c Mon Sep 17 00:00:00 2001 From: hawkspar <quentin.chevalier@polytechnique.edu> Date: Sat, 8 Dec 2018 11:42:34 +0100 Subject: [PATCH] Clean --- README.md | 17 +++++------------ assets/struct.png | Bin 0 -> 58180 bytes src/app.ts | 2 +- src/graphql/connectors/connectors.ts | 4 ++-- src/graphql/new_connectors/connection.ts | 5 ++--- src/ldap/{ => export}/group.ts | 6 +++--- src/ldap/{ => export}/user.ts | 6 +++--- src/ldap/{ => internal}/basics.ts | 0 src/ldap/{ => internal}/config.ts | 0 src/ldap/{ => internal}/utilities.ts | 4 ++-- 10 files changed, 18 insertions(+), 26 deletions(-) create mode 100644 assets/struct.png rename src/ldap/{ => export}/group.ts (99%) rename src/ldap/{ => export}/user.ts (98%) rename src/ldap/{ => internal}/basics.ts (100%) rename src/ldap/{ => internal}/config.ts (100%) rename src/ldap/{ => internal}/utilities.ts (99%) diff --git a/README.md b/README.md index 1b85b27..abfb837 100644 --- a/README.md +++ b/README.md @@ -73,7 +73,6 @@ npm run start # ou le raccourci: npm start Comme indiqué dans src/index.js, ceci lance un serveur servant l'application express sur le port 3000. ## Déployer dans un conteneur Docker - L'image Docker est définie dans [`Dockerfile`](./Dockerfile). Il s'agit d'une distro Alpine avec Node.js et libstdc++. Lors du _build_ les dépendances _runtime_ dont dépend le `bundle.js` sont installées. Compiler l'image : @@ -90,12 +89,10 @@ docker run -e LDAP_URI=ldap://172.17.0.1:8389 sigma-api ``` ## Mode développement / staging / production - TODO Ca a un rapport avec NODE_ENV ? ## Dépendances *npm* - On utilise un serveur node.js avec [express.js](https://expressjs.com/). [^server] Utiliser Node.js permet d'utiliser facilement [*npm*](https://www.npmjs.com/) (Node Package Manager). Une "dépendance" est un package utilisé dans le projet. @@ -123,7 +120,6 @@ Les dépendances principales utilisées sont - *ESlint*, pour le développement, outil de vérification syntaxique. ## Scripts - Les scripts sont des instructions en ligne de commande que l'on peut faire tourner avec la commande `npm run`. Ce sont des raccourcis pour gagner du temps sur des opérations un peu longues. Ils sont définis dans [`package.json`](./package.json). Les plus importants sont détaillées ci-dessous : @@ -139,13 +135,11 @@ Les plus importants sont détaillées ci-dessous : Donc, lancer `npm run watch` dans un terminal et `npm run start` dans un autre permet de rebuilder **et** relancer automatiquement le serveur, après toute modification *du code source*. ## Configuration - L'API est conçue pour êtes modulaire et pour fonctionner dans plusieurs environnements. On peut donc le configurer via des fichiers ou des variables d'environnement. ### Configuration LDAP - L'API de Sigma nécessite de se connecter au LDAP Frankiz, à la fois pour obtenir des données et pour l'authentification des utilisateurs. Cela est fait à l'aide de la librairie [ldapjs](http://ldapjs.org) pour faire les requêtes au LDAP et [passportJS](http://www.passportjs.org/) pour l'authentification. * La configuration LDAP de base se situe dans [ldap_config.json](ldap_config.json). @@ -197,24 +191,20 @@ On peut définir ces variables d'environnement, **dans l'ordre décroissant de p ``` ## Panneau d'administration - Il est accessible par navigateur au path `/adminview/admin` ; n'importe quel path devrait rediriger dessus. L'accès y est protégé par une page d'authentification, les identifiants à utiliser sont ceux de Frankiz. Le hruid (i.e. prenom.nom) de l'utilisateur doit de plus être sur une whitelist des hruid autorisés. Pour l'instant cette whitelist est hardcodée dans le code source. ### Accès direct à la BDD - Le panneau d'administration sert (ou plutôt, servira à terme) à accéder directement à la BDD propre de sigma, grâce à une API REST. Autrement dit : - on accède à la table `table_name` par une requête GET à `/adminview/db/table_name`' - et aux colonnes `columns` de cette table par une requête GET à `/adminview/db/table_name?columns=columns`. ### GraphQL Voyager - L'application Voyager, accessible à `/adminview/voyager`, permet de visualiser le « graphe » sous-jacent à la structure de l'API. ### GraphQL Playground - == Attention, comme tout GraphQL Playground est géré directement par le package apollo-server-express, les requêtes dans le Playground **ne sont pas** soumises au mêmes règles de permission que dans adminview. (D'ailleurs, `/graphql` n'est même pas un sous-path de `/adminview`.) == Accéder via un navigateur à `/graphql` renvoie l'application GraphQL Playground. @@ -235,11 +225,14 @@ Les tests effectués sont dans test/testData.js, sous la forme d'une liste. Chaq [^doute_tests]: cette fonctionnalité n'a pas été utilisée ni testée depuis beaucoup trop de commits pour que cette partie soit fiable actuellement (2018-12-04). ## Documentation - La documentation détaillée du projet est [ici](./doc/index.html). Elle a été compilée avec [JSDoc](http://usejsdoc.org/index.html) sous format hmtl selon le fichier de configuration [`configfile_doc.json`](./configfile_doc.json) à la racine du projet. Le script pour faire tourner [JSDoc](http://usejsdoc.org/index.html) et régénérer la documentation est : `npm run doc` Les fichiers compilés se situent dans [`doc`](.) avec leurs fichiers image. Par nature de l'outil JSDoc il est facile de documenter en détail des fonctions .js mais plus compliqué de documenter un fichier. -A la fin de ce fichier JSDoc rajoute les commentaires placés dans chacun des fichiers et des hyperliens pour y accéder. +A chaque execution JSDoc rajoute les commentaires placés dans chacun des fichiers dans la doc de façon structurée. + +La structure générale du projet peut être résumé comme suit : + + \ No newline at end of file diff --git a/assets/struct.png b/assets/struct.png new file mode 100644 index 0000000000000000000000000000000000000000..7c9e4abaeabc48289eb6b57c61c922a24e4d0594 GIT binary patch literal 58180 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 literal 0 HcmV?d00001 diff --git a/src/app.ts b/src/app.ts index b00bad0..16810e7 100644 --- a/src/app.ts +++ b/src/app.ts @@ -27,7 +27,7 @@ import morgan from 'morgan'; // packages pour pouvoir importer des fichiers de config import path from 'path'; // config des paramètres de connexion au LDAP -import { ldapConfig, credentialsLdapConfig } from './ldap/config'; +import { ldapConfig, credentialsLdapConfig } from './ldap/internal/config'; // configure passport, pour l'authentification ldap et pour comment gérer les sessions (serializeUser/deserializeUser) import './config_passport'; diff --git a/src/graphql/connectors/connectors.ts b/src/graphql/connectors/connectors.ts index e995e40..2e2aaba 100644 --- a/src/graphql/connectors/connectors.ts +++ b/src/graphql/connectors/connectors.ts @@ -6,8 +6,8 @@ import knex from '../../../db/knex_router'; import * as selectors from './selectors'; import * as list_selectors from './list_selectors'; -import {Group as groupLdap, groupData} from '../../ldap/group'; -import {User as userLdap, userData} from '../../ldap/user'; +import {Group as groupLdap, groupData} from '../../ldap/export/group'; +import {User as userLdap, userData} from '../../ldap/export/user'; import { isExportNamedDeclaration } from 'babel-types'; import { admin } from './authentifiers'; diff --git a/src/graphql/new_connectors/connection.ts b/src/graphql/new_connectors/connection.ts index 86a06e1..ea207de 100644 --- a/src/graphql/new_connectors/connection.ts +++ b/src/graphql/new_connectors/connection.ts @@ -4,8 +4,8 @@ */ import knex from '../../../db/knex_router'; -import {Group as groupLdap, groupData} from '../../ldap/group'; -import {User as userLdap, userData} from '../../ldap/user'; +import {Group as groupLdap, groupData} from '../../ldap/export/group'; +import {User as userLdap, userData} from '../../ldap/export/user'; import { isExportNamedDeclaration } from 'babel-types'; import {GroupSet} from './authorisation'; @@ -13,7 +13,6 @@ import {GroupSet} from './authorisation'; export class Group{ gid : string; type : string; // simple or meta - not to be confused with category - name? : string; category? : string; members? : string[]; diff --git a/src/ldap/group.ts b/src/ldap/export/group.ts similarity index 99% rename from src/ldap/group.ts rename to src/ldap/export/group.ts index 39d64ef..e7cba6a 100644 --- a/src/ldap/group.ts +++ b/src/ldap/export/group.ts @@ -3,9 +3,9 @@ * @author hawkspar */ -import {ldapConfig} from './config'; -import {LDAP} from './basics'; -import {Tools} from './utilities'; +import {ldapConfig} from '../internal/config'; +import {LDAP} from '../internal/basics'; +import {Tools} from '../internal/utilities'; /** * @interface groupData diff --git a/src/ldap/user.ts b/src/ldap/export/user.ts similarity index 98% rename from src/ldap/user.ts rename to src/ldap/export/user.ts index f2f9356..cac8280 100644 --- a/src/ldap/user.ts +++ b/src/ldap/export/user.ts @@ -4,9 +4,9 @@ * @author hawkspar */ -import {ldapConfig} from './config'; -import {LDAP} from './basics'; -import {Tools} from './utilities'; +import {ldapConfig} from '../internal/config'; +import {LDAP} from '../internal/basics'; +import {Tools} from '../internal/utilities'; import {Group} from './group'; /** diff --git a/src/ldap/basics.ts b/src/ldap/internal/basics.ts similarity index 100% rename from src/ldap/basics.ts rename to src/ldap/internal/basics.ts diff --git a/src/ldap/config.ts b/src/ldap/internal/config.ts similarity index 100% rename from src/ldap/config.ts rename to src/ldap/internal/config.ts diff --git a/src/ldap/utilities.ts b/src/ldap/internal/utilities.ts similarity index 99% rename from src/ldap/utilities.ts rename to src/ldap/internal/utilities.ts index 28f4ce7..f4b9613 100644 --- a/src/ldap/utilities.ts +++ b/src/ldap/internal/utilities.ts @@ -6,8 +6,8 @@ import {ldapConfig} from './config'; import {LDAP} from './basics'; -import {userData} from './user'; -import {groupData} from './group'; +import {userData} from '../export/user'; +import {groupData} from '../export/group'; //------------------------------------------------------------------------------------------------------------------------ // Fonctions intermédiaires TBT -- GitLab