From a09f90e953d969c75a98f97b039952407afb819e Mon Sep 17 00:00:00 2001 From: hawkspar <quentin.chevalier@polytechnique.edu> Date: Sun, 10 Feb 2019 10:07:37 +0100 Subject: [PATCH] =?UTF-8?q?Config=20pr=C3=A9cis=C3=A9e=20dans=20README?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 15 +- tsbuild/db/knex_router.js | 11 - tsbuild/db/knex_router.js.map | 1 - tsbuild/src/adminview/admin_router.js | 227 ------ tsbuild/src/adminview/admin_router.js.map | 1 - tsbuild/src/app.js | 276 ------- tsbuild/src/app.js.map | 1 - tsbuild/src/graphql/models/authorization.js | 272 ------- .../src/graphql/models/authorization.js.map | 1 - tsbuild/src/graphql/models/groupModel.js | 423 ---------- tsbuild/src/graphql/models/groupModel.js.map | 1 - tsbuild/src/graphql/models/messageModel.js | 546 ------------- .../src/graphql/models/messageModel.js.map | 1 - tsbuild/src/graphql/models/requestModel.js | 313 ------- .../src/graphql/models/requestModel.js.map | 1 - tsbuild/src/graphql/models/tools.js | 254 ------ tsbuild/src/graphql/models/tools.js.map | 1 - tsbuild/src/graphql/models/userModel.js | 109 --- tsbuild/src/graphql/models/userModel.js.map | 1 - .../src/graphql/object_resolvers/groups.js | 736 ----------------- .../graphql/object_resolvers/groups.js.map | 1 - .../src/graphql/object_resolvers/messages.js | 762 ------------------ .../graphql/object_resolvers/messages.js.map | 1 - .../src/graphql/object_resolvers/requests.js | 374 --------- .../graphql/object_resolvers/requests.js.map | 1 - tsbuild/src/graphql/object_resolvers/users.js | 323 -------- .../src/graphql/object_resolvers/users.js.map | 1 - tsbuild/src/graphql/resolvers.js | 673 ---------------- tsbuild/src/graphql/resolvers.js.map | 1 - tsbuild/src/index.js | 24 - tsbuild/src/index.js.map | 1 - tsbuild/src/ldap/export/group.js | 337 -------- tsbuild/src/ldap/export/group.js.map | 1 - tsbuild/src/ldap/export/user.js | 234 ------ tsbuild/src/ldap/export/user.js.map | 1 - tsbuild/src/ldap/internal/basics.js | 270 ------- tsbuild/src/ldap/internal/basics.js.map | 1 - tsbuild/src/ldap/internal/config.js | 84 -- tsbuild/src/ldap/internal/config.js.map | 1 - tsbuild/src/ldap/internal/tools.js | 422 ---------- tsbuild/src/ldap/internal/tools.js.map | 1 - 41 files changed, 14 insertions(+), 6691 deletions(-) delete mode 100644 tsbuild/db/knex_router.js delete mode 100644 tsbuild/db/knex_router.js.map delete mode 100644 tsbuild/src/adminview/admin_router.js delete mode 100644 tsbuild/src/adminview/admin_router.js.map delete mode 100644 tsbuild/src/app.js delete mode 100644 tsbuild/src/app.js.map delete mode 100644 tsbuild/src/graphql/models/authorization.js delete mode 100644 tsbuild/src/graphql/models/authorization.js.map delete mode 100644 tsbuild/src/graphql/models/groupModel.js delete mode 100644 tsbuild/src/graphql/models/groupModel.js.map delete mode 100644 tsbuild/src/graphql/models/messageModel.js delete mode 100644 tsbuild/src/graphql/models/messageModel.js.map delete mode 100644 tsbuild/src/graphql/models/requestModel.js delete mode 100644 tsbuild/src/graphql/models/requestModel.js.map delete mode 100644 tsbuild/src/graphql/models/tools.js delete mode 100644 tsbuild/src/graphql/models/tools.js.map delete mode 100644 tsbuild/src/graphql/models/userModel.js delete mode 100644 tsbuild/src/graphql/models/userModel.js.map delete mode 100644 tsbuild/src/graphql/object_resolvers/groups.js delete mode 100644 tsbuild/src/graphql/object_resolvers/groups.js.map delete mode 100644 tsbuild/src/graphql/object_resolvers/messages.js delete mode 100644 tsbuild/src/graphql/object_resolvers/messages.js.map delete mode 100644 tsbuild/src/graphql/object_resolvers/requests.js delete mode 100644 tsbuild/src/graphql/object_resolvers/requests.js.map delete mode 100644 tsbuild/src/graphql/object_resolvers/users.js delete mode 100644 tsbuild/src/graphql/object_resolvers/users.js.map delete mode 100644 tsbuild/src/graphql/resolvers.js delete mode 100644 tsbuild/src/graphql/resolvers.js.map delete mode 100644 tsbuild/src/index.js delete mode 100644 tsbuild/src/index.js.map delete mode 100644 tsbuild/src/ldap/export/group.js delete mode 100644 tsbuild/src/ldap/export/group.js.map delete mode 100644 tsbuild/src/ldap/export/user.js delete mode 100644 tsbuild/src/ldap/export/user.js.map delete mode 100644 tsbuild/src/ldap/internal/basics.js delete mode 100644 tsbuild/src/ldap/internal/basics.js.map delete mode 100644 tsbuild/src/ldap/internal/config.js delete mode 100644 tsbuild/src/ldap/internal/config.js.map delete mode 100644 tsbuild/src/ldap/internal/tools.js delete mode 100644 tsbuild/src/ldap/internal/tools.js.map diff --git a/README.md b/README.md index 5ea57f7..a6b378e 100644 --- a/README.md +++ b/README.md @@ -129,7 +129,20 @@ Donc, lancer `npm run watch` dans un terminal et `npm run start` dans un autre p ## 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. +On peut donc le configurer via des fichiers ou des variables d'environnement. En deux mots : + +* jsdoc_config.json, Dockerfile, .dockerignore, .gitignore, eslintignore, webpack.config.js : transparents +* ldap_config.json : noms champs du LDAP +* ldap_credentials.json : paramètres de connexion secrets au LDAP +* .estlintrc.json : ESLINT ou à quel point cancériser le développeur +* .gitattributes : terminaison de fichiers +* .gitlab-ci.yml : pipeline gitlab +* package.json et package-lock.json : gestion des dépendances +* tsconfig : configure la compilation de fichiers Typescript en Javascript +* tslint.json : configure tslint, utilisé plutôt que tsc dans le projet final +* .env : variables d'environnement, ports... + +Certains de ces fichiers de configurations ont une version "distribution" en "_dist" qui permet de les partager (le reste du temps ils sont dans le .gitignore), quitte à les renommer et à les modifier en local. ### 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. diff --git a/tsbuild/db/knex_router.js b/tsbuild/db/knex_router.js deleted file mode 100644 index 0066ffd..0000000 --- a/tsbuild/db/knex_router.js +++ /dev/null @@ -1,11 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -/** - * @file Charge la configuration knexjs adaptée à l'environnement (production ou développement) puis exporte un objet knex permettant les requêtes SQL - */ -require('dotenv').config(); -const environment = process.env.TARGET_ENV; -exports.config = require('./knexfile')[environment]; -console.log("Running Knex configuration '%s'", environment); -exports.default = require('knex')(exports.config); -//# sourceMappingURL=knex_router.js.map \ No newline at end of file diff --git a/tsbuild/db/knex_router.js.map b/tsbuild/db/knex_router.js.map deleted file mode 100644 index 05842fe..0000000 --- a/tsbuild/db/knex_router.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"knex_router.js","sourceRoot":"","sources":["../../db/knex_router.ts"],"names":[],"mappings":";;AAAA;;GAEG;AACH,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,CAAC;AAE3B,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC;AAC9B,QAAA,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,WAAW,CAAC,CAAC;AAEzD,OAAO,CAAC,GAAG,CAAC,iCAAiC,EAAE,WAAW,CAAC,CAAC;AAE5D,kBAAe,OAAO,CAAC,MAAM,CAAC,CAAC,cAAM,CAAC,CAAC"} \ No newline at end of file diff --git a/tsbuild/src/adminview/admin_router.js b/tsbuild/src/adminview/admin_router.js deleted file mode 100644 index c1f375e..0000000 --- a/tsbuild/src/adminview/admin_router.js +++ /dev/null @@ -1,227 +0,0 @@ -"use strict"; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -/** - * @file Ce fichier définit le routage d'URL au sein de l'interface du _backend_. - * Les URLs à résoudre ici sont les /adminview/* (et ce sont les seules). - * - * @desc Cette interface est destinée à n'être accessible qu'aux administrateurs du backend - * Filtrage basique : déjà il faut que la personne connaisse l'adresse IP ou le hostname du backend... - * L'authentification est basée sur passport avec ldapauth (comme pour les requêtes GraphQL), et - * l'autorisation se fait à la main en vérifiant l'appartenance de l'uid à une whitelist. - * - * Par cette interface admin, on a accès : - * - à une API REST fait-maison (peut-être encore à débugger), - * permettant de consulter la base de donnée interne à Sigma, via des requêtes construites avec Knex. - * accessible par les paths `/adminview/db/:table?` - * - à GraphQL Voyager, un package qui permet d'afficher une représentation sous forme de graphe du schéma GraphQL, - * acessible par le path `/adminview/voyager` - * - à GraphQL Playground, qui permet d'écrire ses propres requêtes GraphQL et de les exécuter. - * il est en fait accessible sans authentification du tout, au path `/graphql`, l'interface admin ne fait que fournir un lien vers ce path - * il est désactivé en production : "When NODE_ENV is set to production, GraphQL Playground (as well as introspection) is disabled as a production best-practice" - * https://www.apollographql.com/docs/apollo-server/features/graphql-playground.html#Configuring-Playground - * - * @author manifold, kadabra - * - * @todo check that REST API is finished and functional - * @todo Les res.redirect() sont censes supporter les paths relatifs (et donc pas besoin de repreciser /adminview/* a chaque fois) - * mais ca marche visiblement pas... Donc j'ai mis les paths absolus dans les res.redirect(). C'est un peu moche... essayer de modifier ca - */ -const express_1 = require("express"); -// packages pour l'authentification -const passport_1 = __importDefault(require("passport")); -const connect_ensure_login_1 = require("connect-ensure-login"); -const connect_flash_1 = __importDefault(require("connect-flash")); -// packages pour l'API REST et pour GraphQL Voyager -const knex_router_1 = __importDefault(require("../../db/knex_router")); -const middleware_1 = require("graphql-voyager/middleware"); -//loads environment variables from (hidden) .env file -const dotenv_1 = __importDefault(require("dotenv")); -dotenv_1.default.config(); -let port = process.env.PORT; -const whitelist = [ - "gregoire.grzeckowicz", - "anatole.romon", - "hadrien.renaud", - "wilson.jallet", - "quentin.chevalier", - "guillaume.wang", - "oliver.facklam" -]; -/** - * @function ensureIsAdmin - * @summary Définit un middleware garantissant que la requête vient bien d'un utilisateur admin authentifié, et redirigeant vers returnTo sinon - * @argument String returnTo - */ -function ensureIsAdmin(returnTo) { - return (req, res, next) => { - // ensure that the request was authenticated by passport - connect_ensure_login_1.ensureLoggedIn(returnTo); - // lookup req.user against whitelist of admin users - if (req.user && whitelist.includes(req.user.uid)) { - console.log("is an admin"); - // go on - next(); - } - else { - console.log("is NOT an admin"); - req.flash('error: not an admin'); - req.logout(); - res.redirect(returnTo); - } - // go on - //next(); - }; -} -/** - * @desc Création du Express router et setup de middlewares basiques - * ================================================================= - * router: an Express router. https://expressjs.com/en/4x/api.html#router - * See also https://scotch.io/tutorials/learn-to-use-the-new-router-in-expressjs-4 - * = a "sub-middleware stack", a “mini-application" inside the main application - * - * router automatically inherits from views and 'pug' view engine, that were set in app.ts (app.set(...)) - */ -const router = express_1.Router(); -//from https://www.npmjs.com/package/connect-flash: -//"The flash is a special area of the session used for storing messages. Messages are written to the flash and cleared after being displayed to the user." -router.use(connect_flash_1.default()); -/** - * @desc Paths pour l'authentification : login, logout, page d'accueil - * =================================================================== - * Le login se fait en POST. Faire un GET à la racine / renvoie sur - * /login ou sur /admin selon que l'utilisateur est connecté ou non. - */ -router.get('/', (req, res) => { - res.redirect('/adminview/admin'); -}); -router.get('/avlogin', (req, res) => { - // lets pug render adminview/views/login.pug with specified attributes - res.render('login', { - title: 'Login', port: port, - errorMessage: req.flash('error') - }); -}); -router.get('/admin', ensureIsAdmin('/adminview/avlogin'), (req, res, next) => { - let userName; - if (req.user) { - userName = req.user.uid; - } - else { - // Une erreur a ce stade peut etre triggered si req.user n'existe pas - // mais pour autant on est assures que la personne est bien authentifiee - // donc on laisse passer sans déclencher d'erreur 500 - // (je suis à peu près sûr que ça ne peut jamais arriver ! pour moi si ça arrive c'est ultra bizarre et on ferait mieux de déclencher une erreur ! à tester. --kadabra) - /* - let err = new Error('Not authorized'); - res.status(403); - next(err); - */ - console.log("Warning: une requête est arrivée à /adminview/admin et req.user n'existe pas"); - userName = "personne"; - } - res.render('home', { - title: 'Home', port: port, - userName: userName - }); -}); -router.post('/avlogin', passport_1.default.authenticate('ldapauth', { - failureRedirect: '/adminview/avlogin', - failureFlash: true -}), (req, res) => { - // If this function gets called, authentication was successful. - // `req.user` contains the authenticated user. - console.log("POST request to /adminview/avlogin: OK, authenticated by LDAP. req.user: "); - console.log(req.user); - // redirect to /admin - // in /admin, user will be looked up against whitelist anyway - res.redirect('/adminview/admin'); -}); -router.post('/avlogout', (req, res) => { - req.logout(); - res.redirect('/adminview/admin'); -}); -/** - * @desc GraphQL Voyager - * ===================== - * affiche une représentation sous forme de graphe du schema GraphQL - */ -router.use('/voyager', ensureIsAdmin('/adminview/avlogin'), middleware_1.express({ endpointUrl: '/graphql' })); -/** - * @desc API REST fait-maison - * ========================== - * GET `/adminview/db/table_name` renvoie une vue de la table table_name - * - * GET `/adminview/db/table_name?columns=bla` fait une requete - * SELECT bla FROM table_name - * et renvoie un JSON contenant le resultat - * - * TODO: à tester et rassifier - * TODO: je pense qu'on ferait mieux d'utiliser ca plutôt que router.get - * https://expressjs.com/en/4x/api.html#router.route - */ -router.get('/db?', ensureIsAdmin('/adminview/avlogin'), (req, res) => { - let table_name = req.query.table; - let columns = req.query.columns; - res.redirect(`/adminview/db/${table_name}?columns=${columns}`); -}); -/** - * @function Knex_API: Get table - * @summary Effectue une requête pour une table dans la BDD - * @argument {string} table_name - La table voulue par l'utilisateur. - */ -router.get('/db/:table_name?', ensureIsAdmin('/adminview/avlogin'), (req, res, next) => { - // get columns from query - let columns; - if (req.query.columns) { - columns = req.query.columns.split(','); - } - else { - columns = null; - } - console.log(req.params.table_name); - console.log(columns); - knex_router_1.default.select(columns).from(req.params.table_name).then(function (table) { - res.setHeader("Content-Type", "application/json"); - res.write(JSON.stringify(table, null, 2)); - res.end(); - }, - // the following can only be executed if the previous one failed, since previous one calls res.end() - function () { - let err = new Error("Bad request: cannot find table " + req.params.table_name); - res.status(400); - next(err); - }); -}); -/** - * @desc Error handling - * ==================== - * https://expressjs.com/en/guide/error-handling.html - */ -/** - * @function Error_404_catcher - * @summary Catche les requêtes en dehors des URL acceptées - */ -router.use((req, res, next) => { - let err = new Error('Not found'); - res.status(404); - next(err); -}); -/** - * @function Error_handler - * @summary Gère les erreurs - */ -router.use((err, req, res, next) => { - console.log("adminview: Entering error handler"); - console.log(err); - //console.log(err.message); - //res.status(err.status || 500); - res.render('error', { - status: res.statusCode, - error_message: err.message - }); -}); -exports.default = router; -//# sourceMappingURL=admin_router.js.map \ No newline at end of file diff --git a/tsbuild/src/adminview/admin_router.js.map b/tsbuild/src/adminview/admin_router.js.map deleted file mode 100644 index 64c1654..0000000 --- a/tsbuild/src/adminview/admin_router.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"admin_router.js","sourceRoot":"","sources":["../../../src/adminview/admin_router.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/tsbuild/src/app.js b/tsbuild/src/app.js deleted file mode 100644 index 7b4bbf2..0000000 --- a/tsbuild/src/app.js +++ /dev/null @@ -1,276 +0,0 @@ -"use strict"; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -/** - * @file Initialise et configure le serveur Express sur lequel tourne le back. - * - * Inclut les middlewares des packages utilisés: apollo-server, passportjs, morgan... - * 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 - * exécutés séquentiellement. http://expressjs.com/en/guide/using-middleware.html - * - * @author manifold, kadabra, ofacklam - */ -const express_1 = __importDefault(require("express")); -const body_parser_1 = __importDefault(require("body-parser")); -// packages pour graphql -const apollo_server_express_1 = require("apollo-server-express"); -const schema_1 = __importDefault(require("./graphql/schema")); // definition du schéma et des resolvers -// l'interface admin du backend (adminview) -const admin_router_1 = __importDefault(require("./adminview/admin_router")); -// packages pour l'authentification -const passport_1 = __importDefault(require("passport")); -require("./config_passport"); // configure passport, pour l'authentification ldap et pour comment gérer les sessions (serializeUser/deserializeUser) -const express_session_1 = __importDefault(require("express-session")); -const cors_1 = __importDefault(require("cors")); -// HTTP request logger -const morgan_1 = __importDefault(require("morgan")); -// packages pour pouvoir importer des fichiers de config -const path_1 = __importDefault(require("path")); -// config des paramètres de connexion au LDAP -const config_1 = require("./ldap/internal/config"); -//loads environment variables from (hidden) .env file -const dotenv_1 = __importDefault(require("dotenv")); -dotenv_1.default.config(); -/** - * @desc Création de l'application Express et setup de middlewares basiques - * ======================================================================== - */ -const app = express_1.default(); -// parse incoming HTTP request bodies, available under the req.body property -app.use(body_parser_1.default.json()); //parses bodies of media type "application/json" -app.use(body_parser_1.default.urlencoded({ - extended: true //use qs library (see https://www.npmjs.com/package/body-parser#bodyparserurlencodedoptions) -})); -// ne *pas* inclure de header HTTP publicisant que l'application tourne sous Express -app.disable('x-powered-by'); -// use morgan (HTTP request logger middleware) -app.use(morgan_1.default('dev')); -const FRONTEND_SERVER_URL = process.env.FRONTEND_SERVER_URL; -// Options de configuration pour le _middleware_ `cors`. -// CORS = Cross Origin Resource Sharing -const corsOptions = { - //configures the "Access-Control-Allow-Origin" CORS header, declaring that sigma-back wants to make resources accessible to that site (and that site only) - origin: FRONTEND_SERVER_URL, - //configures the "Access-Control-Allow-Credentials" CORS header, allowing cookies to be included on cross-origin requests - credentials: true -}; -app.use(cors_1.default(corsOptions)); -// respond to "GET /favicon.ico" requests -// favicon middleware is placed near the top of the middleware stack, to answer favicon requests faster, as they are relatively frequent -// (plus, they should not have to trigger any authentication middleware) -const serve_favicon_1 = __importDefault(require("serve-favicon")); // tres tres important :p -app.use(serve_favicon_1.default(path_1.default.resolve(__dirname, '..', 'assets', 'favicon.ico'))); -/** - * @desc Authentification de la requête contre le session-store (cookie) - * ===================================================================== - * Si la requête possède un cookie, on regarde dans la session s'il s'agit d'un cookie valide. - * Si oui, on récupère l'uid de l'utilisateur correspondant dans la session. - * L'uid qu'on a trouvé est stocké dans req.user, et sera passé à GraphQL, dans le context. - * (Si non, on passera quand même dans context un uid spécial signifiant que l'utilisateur n'est pas authentifié. cf la définition de context, plus loin) - * - * NB : la session ne contient que les correspondances cookie / uid, et rien d'autre. - * passport.serializeUser et .deserializeUser servent en théorie à traduire - * - * https://stackoverflow.com/questions/22052258/what-does-passport-session-middleware-do - * - * On a un petit peu la meme demarche que l'Option 1 de - * https://blog.apollographql.com/a-guide-to-authentication-in-graphql-e002a4039d1 - */ -/** - * it is also here that we define parameters for *session store*. https://redislabs.com/blog/cache-vs-session-store/ - * configure this right, as express-session docs warns that the default config is not good for prod!! - * @todo [critical] configure express-session (session store and other options) - * @todo choose a session secret and where to store it - * https://www.npmjs.com/package/express-session - * Sur l'utilité des flags dans les cookies : https://www.information-security.fr/securite-sites-web-lutilite-flags-secure-httponly/ - */ -// load data from the session identified by the cookie (if one exists), into req.session -// on ne manipulera pas req.session directement, on laisser toujours passport le faire pour nous -app.use(express_session_1.default({ - secret: "asdfjklkjfdsasdfjklkljfdsa", - resave: false, - rolling: false, - saveUninitialized: true, - //store: ,// default is NOT good => @ofacklam est d'avis d'utiliser 'connect-session-knex', comme ca on peut le plug directement dans notre BDD. - cookie: { - maxAge: 3600000, - //secure: true, // Le cookie ne peut transiter qu'en HTTPS. ATTENTION : If you have your node.js behind a proxy and are using secure: true, you need to set "trust proxy" in express - httpOnly: true - } -})); -app.use(passport_1.default.initialize()); -//passport.session(): load the user object onto req.user if a serialised user object was found in the req.session -// aucun effet sur les requetes sans cookie ou les requetes avec cookie expired, -// puisqu'elles ne sont pas dans req.session, puisque non-reconnues par app.use(expressSession(...)) -//(see http://toon.io/understanding-passportjs-authentication-flow/) -app.use(passport_1.default.session(), (req, res, next) => { - let user = req.user ? req.user.uid : "none"; - console.log(`passport.session(): found user: ${user}, authenticated: ${req.isAuthenticated()}`); - next(); -}); -/** - * @desc Répondre aux requêtes de connexion par LDAP (venant du front) - * =================================================================== - * i.e. endpoint for frontend's authentication requests (logins through adminview/avlogin are caught by the router in admin_router.js) - * i.e. quand l'utilisateur submit le formulaire de login avec ses identifiants/mdp dans le front - * - * @todo gérer le cas où une requête à /login est reçue, mais où cette requête contient un cookie valide - * @todo vérifier qu'on ne fallthrough pas, i.e. qu'on renvoie une response et qu'on ne trigger pas les middlewares suivants une fois celui-ci terminé - * @todo rassify - */ -//with custom callback: -//http://www.passportjs.org/docs/authenticate/#custom-callback -// http://toon.io/understanding-passportjs-authentication-flow/ -app.post('/login', (req, res, next) => { - console.log("Received an authentication request to /login"); - passport_1.default.authenticate('ldapauth', (err, user, info) => { - console.log("| Entering passport.authenticate('ldapauth', - ) callback"); - // If an exception occurred - if (err) { - console.log("| Error when trying to passport.authenticate with ldapauth"); - console.log(err); - return res.status(err.status).json({ - message: "Exception raised in backend process during authentication: " + err, - authSucceeded: false - }); - // return next(err); // handle error? or drop request and answer with res.json()? - } - // If authentication failed, user will be set to false - if (!user) { - console.log("| Authentication failed, passport.authenticate did not return a user. "); - return res.status(401).json({ - message: "Authentication failed: " + info.message, - authSucceeded: false - }); - } - req.login(user, (err) => { - // If an exception occurred at login - if (err) { - console.log("| Error when trying to req.login in callback in passport.authenticate('ldapauth', - )"); - console.log(err); - return res.status(err.status).json({ - message: "Exception raised in backend process during login: " + err, - authSucceeded: false - }); - // return next(err); // handle error? or drop request and answer with res.json()? - } - // If all went well - console.log("| Authentication succeeded! :)"); - // passport.authenticate automatically includes a Set-Cookie HTTP header in - // the response. The JSON body is just to signal the frontend that all went well - return res.status(200).json({ - message: 'Authentication succeeded', - authSucceeded: true - }); - }); - })(req, res, next); -}); -const authorization_1 = require("./graphql/models/authorization"); -const context = ({ req }) => __awaiter(this, void 0, void 0, function* () { - // set a special uid for non-authenticated requests - // /!\ FOR DEVELOPMENT ONLY: use the one in the ldap_credentials.json file (imported by config.ts) - // for production, replace with a "publicUser" or "notLoggedInUser" or something. - let uid = config_1.credentialsLdapConfig.dn.split("=")[1].split(",")[0]; - console.log("Responding to graphql request..."); - console.log(` - | User: ${req.user ? req.user.uid : "none"} - | Authenticated: ${req.isAuthenticated()} - `.trim()); - if (req.isAuthenticated() && req.user) { - console.log("graphql API is receiving a request from an authenticated user! \\o/"); - try { - uid = req.user.uid; - } - catch (err) { - console.log("Error: req is authenticated, but pb when trying to extract uid from req.user. Probably user was either not serialized or not deserialized properly"); - console.log(err); - } - } - console.log(`Constructing context with uid = ${uid}`); - /*return { - request: req, - user: { uid: uid }, - models: { - auth: await AuthorizationModel.create(uid), - user: new UserModel(uid), - group: new GroupModel(uid), - message: new MessageModel(uid), - request: new RequestModel(uid) - } - };*/ - let blah = { - request: req, - user: { uid: uid }, - //models: null - models: { - auth: yield authorization_1.AuthorizationModel.create(uid), - user: null, - group: null, - message: null, - request: null, - } - }; - console.log("finished constructing context"); - return blah; -}); -const server = new apollo_server_express_1.ApolloServer(Object.assign({}, schema_1.default, { context, playground: { - settings: { - "editor.theme": "dark", - "editor.cursorShape": 'line' - } - } })); -// path defaults to '/graphql' -//server.applyMiddleware({ app, cors: corsOptions }); <-- TODO: is this necessary? -server.applyMiddleware({ app }); -/** - * @desc Servir l'interface admin du backend ("adminview") - * ======================================================= - * On redirige vers la "mini-application" adminview. - * Il s'agit en fait d'un express.Router, qui sert a creer un "sous-middleware stack". - * Par cette interface admin, on a accès : - * - à une API REST fait-maison (peut-être encore à débugger) - * - à GraphQL Voyager, un package qui permet d'afficher une représentation sous forme de graphe du schéma GraphQL. - */ -// servir les fichiers statiques (e.g. images) rendant l'interface jolie -app.use('/assets', express_1.default.static(path_1.default.resolve(__dirname, '../', 'assets'))); -// setup the 'pug' view engine. the adminview "sub-app" will inherit this. https://expressjs.com/en/4x/api.html#app.set -//console.log("Express app is running at (__dirname) ", __dirname); -//console.log("Express app is running at (full path) ", path.resolve(__dirname));let viewpath = path.resolve(__dirname, 'adminview', 'views'); -let viewpath = path_1.default.resolve(__dirname, 'adminview', 'views'); -app.set('views', viewpath); -app.set('view engine', 'pug'); -app.use('/adminview', admin_router_1.default); // catches and resolves HTTP requests to paths '/adminview/*' -// also redirect other HTTP GET requests to the adminview router -app.get('/', function (req, res) { - res.redirect('/adminview'); -}); -/** - * @desc Catch-all - * =============== - * Normalement aucune requête ne devrait arriver au dernier middleware : - * les requêtes GraphQL doivent être adressées à /graphql, - * les requêtes de connexion du frontend doivent être adressées à /login, - * les requêtes vers l'adminview doivent être adressées à /adminview/* - * Donc c'est qu'il y a un problème quelque part. On le log et on répond 500 Internal Server Error (ou 400 Bad Request?). - * - * @todo faire un loggage plus propre que ça... - */ -app.use('/', (req, res) => { - console.log("Erreur: une requête est arrivée au dernier middleware"); - res.status(500).send({ error: "unexpectedly triggered catchall" }); -}); -exports.default = app; -//# sourceMappingURL=app.js.map \ No newline at end of file diff --git a/tsbuild/src/app.js.map b/tsbuild/src/app.js.map deleted file mode 100644 index 3891e2c..0000000 --- a/tsbuild/src/app.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"app.js","sourceRoot":"","sources":["../../src/app.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/tsbuild/src/graphql/models/authorization.js b/tsbuild/src/graphql/models/authorization.js deleted file mode 100644 index 24eabf5..0000000 --- a/tsbuild/src/graphql/models/authorization.js +++ /dev/null @@ -1,272 +0,0 @@ -"use strict"; -/** - * @file Fonctions qui gerent l'autorisation des utilisateurs - * @author ofacklam - * @memberof GraphQL - */ -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -Object.defineProperty(exports, "__esModule", { value: true }); -const tools_1 = require("./tools"); -const user_1 = require("../../ldap/export/user"); -/* - * There are 7 levels of authorization - * none : doesn't know the group / the user exists - * connectedOrOnplatal : knows the group exists, can use TOL - * viewer : can see the group - * member : part of the group - * speaker : allowed to speak for the group - * admin : admin of the group - * supervisor : allowed to take control of the group - */ -class AuthorizationModel { - /** - * @memberof GraphQL - * @class AuthorizationModel - * @summary Autorisation des utilisateurs. - * @classdesc Cette classe contient les méthodes d'autorisation de l'utilisateur dans le 'context'. - * @arg {string} uid - L'identifiant de l'utilisateur. - */ - constructor(uid) { - this.uid = uid; - } - /** - * @memberof GraphQL - * @summary Fonction qui crée une nouvelle instance de AuthorizationModel et charge les données - * @arg {string} uid - Identifiant de l'utilisateur. - * @returns {Promise(AuthorizationModel)} Renvoie un nouveau AuthorizationModel avec cet utilisateur - * @async - * @static - */ - static create(uid) { - return __awaiter(this, void 0, void 0, function* () { - let model = new AuthorizationModel(uid); - console.log("constructing AuthorizationModel..."); - if (model.isAuthenticated()) { - console.log("model is authenticated. fetching data..."); - yield model.fetchData(); - } - console.log("finished constructing AuthorizationModel"); - return model; - }); - } - /** - * @memberof GraphQL.AuthorizationModel# - * @function fetchData - * @summary Fonction qui recupere toutes les données pour populer les champs a partir de l'uid. - * @async - */ - fetchData() { - return __awaiter(this, void 0, void 0, function* () { - console.log("calling UT.peek from ldap connector (User Tool)..."); - let data = yield user_1.User.peek(this.uid); - console.log("UT.peek returned with data:"); - console.log(data); - this.viewerOf = yield tools_1.Tools.viewerOf(data); - this.memberOf = yield tools_1.Tools.memberOf(data); - this.speakerOf = yield tools_1.Tools.viewerOf(data); - this.adminOf = yield tools_1.Tools.adminOf(data); - this.supervisorOf = yield tools_1.Tools.supervisorOf(data); - }); - } - /** - * @memberof GraphQL.AuthorizationModel# - * @function getUid - * @summary Fonction qui renvoit l'identifiant de l'utilisateur - * @return {string} Renvoie l'uid de l'utilisateur du 'context' - */ - getUid() { - return this.uid; - } - /** - * @memberof GraphQL.AuthorizationModel# - * @function isConnectedOrOnplatal - * @summary Fonction qui renvoit si l'utilisateur est connecté ou on-platal - * @return {boolean} Renvoie true si l'utilisateur est connecté ou on-platal - */ - isConnectedOrOnplatal() { - return (this.uid != AuthorizationModel.PUBLICUSER); - } - /** - * @memberof GraphQL.AuthorizationModel# - * @function isAuthenticated - * @summary Fonction qui renvoit si l'utilisateur est authentifié - * @return {boolean} Renvoie true si l'utilisateur est authentifié - */ - isAuthenticated() { - console.log("running model.isAuthenticated..."); - return (this.uid != AuthorizationModel.PUBLICUSER && this.uid != AuthorizationModel.ONPLATALUSER); - } - /** - * @memberof GraphQL.AuthorizationModel# - * @function isViewer - * @summary Fonction qui renvoit si l'utilisateur est viewer du groupe. - * @arg {string} gid - Identifiant du groupe. - * @return {boolean} Renvoie true si l'utilisateur est viewer du groupe. - */ - isViewer(gid) { - //ensure uid is valid !!!!!!!! - if (this.isAuthenticated()) { - let groups = this.viewerOf; - return (groups.simpleGroups.has(gid) || groups.metaGroups.has(gid)); - } - return false; - } - /** - * @memberof GraphQL.AuthorizationModel# - * @function groupsViewer - * @summary Fonction qui renvoit les groupes dont l'utilisateur est viewer. - * @return {GroupCollection} Renvoie la collection de groupes dont l'utilisateur est viewer. - */ - groupsViewer() { - //ensure uid is valid !!!!!!!! - if (this.isAuthenticated()) { - return this.viewerOf; - } - return null; - } - /** - * @memberof GraphQL.AuthorizationModel# - * @function isMember - * @summary Fonction qui renvoit si l'utilisateur est membre du groupe. - * @arg {string} gid - Identifiant du groupe. - * @return {boolean} Renvoie true si l'utilisateur est membre du groupe. - */ - isMember(gid) { - //ensure uid is valid !!!!!!!! - if (this.isAuthenticated()) { - let groups = this.memberOf; - return (groups.simpleGroups.has(gid) || groups.metaGroups.has(gid)); - } - return false; - } - /** - * @memberof GraphQL.AuthorizationModel# - * @function isMemberOr - * @summary Fonction qui renvoit si l'utilisateur est membre d'au moins un de ces groupes. - * @arg {GroupSet} groups - Ensemble de groupes. - * @return {boolean} Renvoie true si l'utilisateur est membre d'un des groupes - */ - isMemberOr(groups) { - //ensure uid is valid !!!!!!!! - if (this.isAuthenticated()) { - let member = this.memberOf; - for (let gid of groups) { - if (member.simpleGroups.has(gid) || member.metaGroups.has(gid)) { - return true; - } - } - } - return false; - } - /** - * @memberof GraphQL.AuthorizationModel# - * @function groupsMember - * @summary Fonction qui renvoit les groupes dont l'utilisateur est member. - * @return {GroupCollection} Renvoie la collection de groupes dont l'utilisateur est member. - */ - groupsMember() { - //ensure uid is valid !!!!!!!! - if (this.isAuthenticated()) { - return this.memberOf; - } - return null; - } - /** - * @memberof GraphQL.AuthorizationModel# - * @function isSpeaker - * @summary Fonction qui renvoit si l'utilisateur est speaker du groupe. - * @arg {string} gid - Identifiant du groupe. - * @return {boolean} Renvoie true si l'utilisateur est speaker du groupe. - */ - isSpeaker(gid) { - //ensure uid is valid !!!!!!!! - if (this.isAuthenticated()) { - let groups = this.speakerOf; - return (groups.simpleGroups.has(gid) || groups.metaGroups.has(gid)); - } - return false; - } - /** - * @memberof GraphQL.AuthorizationModel# - * @function groupsSpeaker - * @summary Fonction qui renvoit les groupes dont l'utilisateur est speaker. - * @return {GroupCollection} Renvoie la collection de groupes dont l'utilisateur est speaker. - */ - groupsSpeaker() { - //ensure uid is valid !!!!!!!! - if (this.isAuthenticated()) { - return this.speakerOf; - } - return null; - } - /** - * @memberof GraphQL.AuthorizationModel# - * @function isAdmin - * @summary Fonction qui renvoit si l'utilisateur est admin du groupe. - * @arg {string} gid - Identifiant du groupe. - * @return {boolean} Renvoie true si l'utilisateur est admin du groupe. - */ - isAdmin(gid) { - //ensure uid is valid !!!!!!!! - if (this.isAuthenticated()) { - let groups = this.adminOf; - let is_admin = groups.simpleGroups.has(gid) || groups.metaGroups.has(gid); - //TODO : Vérifier s'il a pris les droits d'admin en étant supervisor - let took_admin_rights = false; - return (is_admin || took_admin_rights); - } - return false; - } - /** - * @memberof GraphQL.AuthorizationModel# - * @function groupsAdmin - * @summary Fonction qui renvoit les groupes dont l'utilisateur est admin. - * @return {GroupCollection} Renvoie la collection de groupes dont l'utilisateur est admin. - */ - groupsAdmin() { - //ensure uid is valid !!!!!!!! - if (this.isAuthenticated()) { - return this.adminOf; - } - return null; - } - /** - * @memberof GraphQL.AuthorizationModel# - * @function isSupervisor - * @summary Fonction qui renvoit si l'utilisateur est supervisor du groupe. - * @arg {string} gid - Identifiant du groupe. - * @return {boolean} Renvoie true si l'utilisateur est supervisor du groupe. - */ - isSupervisor(gid) { - //ensure uid is valid !!!!!!!! - if (this.isAuthenticated()) { - let groups = this.supervisorOf; - return (groups.simpleGroups.has(gid) || groups.metaGroups.has(gid)); - } - return false; - } - /** - * @memberof GraphQL.AuthorizationModel# - * @function groupsSupervisor - * @summary Fonction qui renvoit les groupes dont l'utilisateur est supervisor. - * @return {GroupCollection} Renvoie la collection de groupes dont l'utilisateur est supervisor. - */ - groupsSupervisor() { - //ensure uid is valid !!!!!!!! - if (this.isAuthenticated()) { - return this.supervisorOf; - } - return null; - } -} -AuthorizationModel.PUBLICUSER = "public_user"; -AuthorizationModel.ONPLATALUSER = "public_onplatal_user"; -exports.AuthorizationModel = AuthorizationModel; -//# sourceMappingURL=authorization.js.map \ No newline at end of file diff --git a/tsbuild/src/graphql/models/authorization.js.map b/tsbuild/src/graphql/models/authorization.js.map deleted file mode 100644 index 4507810..0000000 --- a/tsbuild/src/graphql/models/authorization.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"authorization.js","sourceRoot":"","sources":["../../../../src/graphql/models/authorization.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/tsbuild/src/graphql/models/groupModel.js b/tsbuild/src/graphql/models/groupModel.js deleted file mode 100644 index a36bcb2..0000000 --- a/tsbuild/src/graphql/models/groupModel.js +++ /dev/null @@ -1,423 +0,0 @@ -"use strict"; -/** - * @file Fonctions qui implémentent les requetes relatives aux groupes - * @author ofacklam - * @memberof GraphQL - */ -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -const groups_1 = require("../object_resolvers/groups"); -const knex_router_1 = __importDefault(require("../../../db/knex_router")); -const tools_1 = require("./tools"); -class GroupModel { - /** - * @memberof GraphQL - * @class GroupModel - * @summary Requetes relatives aux groupes. - * @classdesc Cette classe contient les méthodes implémentant les requetes relatives aux groupes. - * @arg {string} contextUser - L'identifiant de l'utilisateur du 'context' - */ - constructor(contextUser) { - this.contextUser = contextUser; - } - /** - * @memberof GraphQL.GroupModel# - * @function getGroup - * @summary Fonction qui renvoie un groupe donné. - * @arg {string} gid - Identifiant demandé. - * @return {Promise(Group)} Renvoie le groupe dont l'identifiant est 'gid' - * @async - * @rights connectedOrOnplatal - */ - getGroup(gid) { - return __awaiter(this, void 0, void 0, function* () { - let data = yield knex_router_1.default.select('type').from('groups').where('gid', gid); - if (data.length > 0) { - let type = data[0].type; - switch (type) { - case 'simple': - return new groups_1.SimpleGroup(gid); - case 'meta': - return new groups_1.MetaGroup(gid); - default: - return null; - } - } - return null; - }); - } - /** - * @memberof GraphQL.GroupModel# - * @function getSimpleGroup - * @summary Fonction qui renvoie un groupe simple donné. - * @arg {string} gid - Identifiant demandé. - * @return {Promise(SimpleGroup)} Renvoie le groupe dont l'identifiant est 'gid' - * @async - * @rights connectedOrOnplatal - */ - getSimpleGroup(gid) { - return __awaiter(this, void 0, void 0, function* () { - return groups_1.SimpleGroup.tryCreate(gid); - }); - } - /** - * @memberof GraphQL.GroupModel# - * @function getMetaGroup - * @summary Fonction qui renvoie un méta-groupe donné. - * @arg {string} gid - Identifiant demandé. - * @return {Promise(MetaGroup)} Renvoie le groupe dont l'identifiant est 'gid' - * @async - * @rights connectedOrOnplatal - */ - getMetaGroup(gid) { - return __awaiter(this, void 0, void 0, function* () { - return groups_1.MetaGroup.tryCreate(gid); - }); - } - /** - * @memberof GraphQL.GroupModel# - * @function getAllGroupsByCollection - * @summary Fonction qui renvoie tous les groupes donnés en argument. - * @arg {GroupCollection} groups - Collection d'identifiants, supposés valides. - * @return {Group[]} Renvoie le tableau de groupes correspondant - * @rights connectedOrOnplatal - */ - getAllGroupsByCollection(groups) { - let res; - for (let s of groups.simpleGroups) { - res.push(new groups_1.SimpleGroup(s)); - } - for (let m of groups.metaGroups) { - res.push(new groups_1.MetaGroup(m)); - } - return res; - } - /** - * @memberof GraphQL.GroupModel# - * @function getAllGroupsBySet - * @summary Fonction qui renvoie tous les groupes donnés en argument. - * @arg {GroupSet} groups - Ensemble d'identifiants, supposés valides. - * @return {Promise(Group[])} Renvoie le tableau de groupes correspondant - * @async - * @rights connectedOrOnplatal - */ - getAllGroupsBySet(groups) { - return __awaiter(this, void 0, void 0, function* () { - let res; - for (let g of groups) { - res.push(yield this.getGroup(g)); - } - return res; - }); - } - /** - * @memberof GraphQL.GroupModel# - * @function getAllSimpleGroups - * @summary Fonction qui renvoie tous les groupes simples donnés en argument. - * @arg {GroupSet} groups - Ensemble d'identifiants, supposés valides. - * @return {SimpleGroup[]} Renvoie le tableau de groupes correspondant - * @rights connectedOrOnplatal - */ - getAllSimpleGroups(groups) { - let res; - for (let g of groups) { - res.push(new groups_1.SimpleGroup(g)); - } - return res; - } - /** - * @memberof GraphQL.GroupModel# - * @function likeGroup - * @summary Fonction pour devenir sympathisant - * @arg {string} gid - Identifiant du groupe. - * @return {Promise(boolean)} Renvoie true si modification réussie. - * @async - * @rights viewer du groupe - */ - likeGroup(gid) { - return __awaiter(this, void 0, void 0, function* () { - // Pour l'instant, ce n'est pas a implémenter... - throw "Not implemented"; - }); - } - /** - * @memberof GraphQL.GroupModel# - * @function unlikeGroup - * @summary Fonction pour devenir non-sympathisant - * @arg {string} gid - Identifiant du groupe. - * @return {Promise(boolean)} Renvoie true si modification réussie. - * @async - * @rights viewer du groupe - */ - unlikeGroup(gid) { - return __awaiter(this, void 0, void 0, function* () { - // Pour l'instant, ce n'est pas a implémenter... - throw "Not implemented"; - }); - } - /** - * @memberof GraphQL.GroupModel# - * @function userLeaveGroup - * @summary Fonction pour quitter un groupe - * @arg {string} gid - Identifiant du groupe. - * @return {Promise(boolean)} Renvoie true si modification réussie. - * @async - * @rights member du groupe - */ - userLeaveGroup(gid) { - return __awaiter(this, void 0, void 0, function* () { - throw "Not implemented"; - }); - } - /** - * @memberof GraphQL.GroupModel# - * @function writePostsSummary - * @summary Fonction pour écrire le résumé des posts. - * @arg {string} gid - Identifiant du groupe. - * @arg {string} content - Contenu du résumé. - * @return {Promise(boolean)} Renvoie true si modification réussie. - * @async - * @rights speaker du groupe - */ - writePostsSummary(gid, content) { - return __awaiter(this, void 0, void 0, function* () { - throw "Not implemented"; - }); - } - /** - * @memberof GraphQL.GroupModel# - * @function createSubgroup - * @summary Fonction pour créer un sous-groupe - * @arg {createSubgroupArgs} args - Les arguments pour la création. - * @return {Promise(Group)} Renvoie le groupe créé. - * @async - * @rights admin du groupe - */ - createSubgroup(args) { - return __awaiter(this, void 0, void 0, function* () { - throw "Not implemented"; - //TODO : Vérifier que 'parent' est un groupe _simple_. - // TODO : finish - /*if (typeof args.fromGroup != 'string') - throw "Illegal argument : parent_uid must be a non null string"; - if (typeof args.subName != 'string') - throw "Illegal argument : name must be a non null string"; - - let rasGID = await getAvailableGID(args.subGid); - - // TODO : appeller une fonction de LDAPUser pour y créer un groupe. - await knex('simple_groups').insert({ - uid: rasGID, - parent_uid: args.parent_uid, - createdAt: knex.fn.now(), - updatedAt: this.createdAt, - name: args.name, - website: args.website, - description: args.description, - school: args.school, - type: "simple" - }); - - return getGroup(rasGID);*/ - }); - } - /** - * @memberof GraphQL.GroupModel# - * @function getAvailableGID - * @summary Attribue un GID qui n'a pas encore été utilisé à un groupe - * @desc Escape le string initialGID si necessaire (ramené à de l'ASCII sans espace), puis si le gid est deja pris rajoute un n a la fin et reteste - * @arg {string} initialGID - Le gid initial du groupe, qu'il faut tester pour l'unicité. - * @return {Promise(string)} Renvoie le gid unique pour ce groupe. - * @rights authentified - * remarque : n'importe qui peut tester si un groupe existe en demandant a créer un groupe avec ce nom la et en regardant si - * son GID a été modifié. Je ne vois pas comment contourner ce problème, c'est donc une faille permanente (mineure) de sigma. - * // ofacklam -> savoir qu'un groupe existe est autorisé pour toute personne connectée ou on-platal et il faut etre connecté pour - * // utiliser cette fonction-ci donc il n'y a pas de probleme. - */ - getAvailableGID(initialGID) { - return __awaiter(this, void 0, void 0, function* () { - let rasGID = tools_1.Tools.escapeID(initialGID); - const res = knex_router_1.default.from('groups').where('gid', rasGID); - if (res.length == 0) { - return (rasGID); - } - else { - return (this.getAvailableGID(rasGID + 'n')); - } - }); - } - /** - * @memberof GraphQL.GroupModel# - * @function makeAdmin - * @summary Fonction pour rendre un membre admin - * @arg {string} gid - Identifiant du groupe. - * @arg {string} uid - Identifiant de l'utilisateur. - * @return {Promise(User)} Renvoie l'utilisateur promu. - * @async - * @rights admin du groupe - */ - makeAdmin(gid, uid) { - return __awaiter(this, void 0, void 0, function* () { - //TODO : vérifier que l'utilisateur est bien déja membre !! - throw "Not implemented"; - }); - } - /** - * @memberof GraphQL.GroupModel# - * @function unmakeAdmin - * @summary Fonction pour rendre un membre non-admin - * @arg {string} gid - Identifiant du groupe. - * @arg {string} uid - Identifiant de l'utilisateur. - * @return {Promise(User)} Renvoie l'utilisateur dé-promu. - * @async - * @rights admin du groupe - */ - unmakeAdmin(gid, uid) { - return __awaiter(this, void 0, void 0, function* () { - //TODO : vérifier que l'utilisateur est bien déja membre !! - //TODO : relacher les droits admin (des groupes enfants) pris en étant admin. - throw "Not implemented"; - }); - } - /** - * @memberof GraphQL.GroupModel# - * @function makeSpeaker - * @summary Fonction pour rendre un membre speaker - * @arg {string} gid - Identifiant du groupe. - * @arg {string} uid - Identifiant de l'utilisateur. - * @return {Promise(User)} Renvoie l'utilisateur promu. - * @async - * @rights admin du groupe - */ - makeSpeaker(gid, uid) { - return __awaiter(this, void 0, void 0, function* () { - //TODO : vérifier que l'utilisateur est bien déja membre !! - throw "Not implemented"; - }); - } - /** - * @memberof GraphQL.GroupModel# - * @function unmakeSpeaker - * @summary Fonction pour rendre un membre non-speaker - * @arg {string} gid - Identifiant du groupe. - * @arg {string} uid - Identifiant de l'utilisateur. - * @return {Promise(User)} Renvoie l'utilisateur dé-promu. - * @async - * @rights admin du groupe - */ - unmakeSpeaker(gid, uid) { - return __awaiter(this, void 0, void 0, function* () { - //TODO : vérifier que l'utilisateur est bien déja membre !! - throw "Not implemented"; - }); - } - /** - * @memberof GraphQL.GroupModel# - * @function editGroup - * @summary Fonction pour modifier un groupe. - * @arg {editGroupArgs} args - Les arguments de la modification. - * @return {Promise(Group)} Renvoie le groupe modifié. - * @async - * @rights admin du groupe - */ - editGroup(args) { - return __awaiter(this, void 0, void 0, function* () { - throw "Not implemented"; - }); - } - /** - * @memberof GraphQL.GroupModel# - * @function addVisibilityEdge - * @summary Fonction pour ajouter une arete de visibilité. - * @arg {string} forGroup - Le groupe a rendre visible. - * @arg {string} visibleBy - Le groupe qui pourra voir. - * @return {Promise(boolean)} Renvoie true si modification réussie. - * @async - * @rights admin du groupe 'forGroup' - */ - addVisibilityEdge(forGroup, visibleBy) { - return __awaiter(this, void 0, void 0, function* () { - throw "Not implemented"; - }); - } - /** - * @memberof GraphQL.GroupModel# - * @function removeVisibilityEdge - * @summary Fonction pour retirer une arete de visibilité. - * @arg {string} forGroup - Le groupe a rendre invisible. - * @arg {string} visibleBy - Le groupe qui ne pourra plus voir. - * @return {Promise(boolean)} Renvoie true si modification réussie. - * @async - * @rights admin du groupe 'forGroup' - */ - removeVisibilityEdge(forGroup, visibleBy) { - return __awaiter(this, void 0, void 0, function* () { - throw "Not implemented"; - }); - } - /** - * @memberof GraphQL.GroupModel# - * @function removeUser - * @summary Fonction pour enlever un membre du groupe. - * @arg {string} gid - Identifiant du groupe. - * @arg {string} uid - Identifiant de l'utilisateur. - * @return {Promise(User)} Renvoie l'utilisateur. - * @async - * @rights admin du groupe - */ - removeUser(gid, uid) { - return __awaiter(this, void 0, void 0, function* () { - throw "Not implemented"; - }); - } - /** - * @memberof GraphQL.GroupModel# - * @function takeAdminRights - * @summary Fonction pour prendre les droits admin du groupe. - * @arg {string} gid - Identifiant du groupe. - * @arg {string} uid - Identifiant de l'utilisateur qui prend les droits. - * @return {Promise(boolean)} Renvoie true si modification réussie. - * @async - * @rights supervisor du groupe - */ - takeAdminRights(gid, uid) { - return __awaiter(this, void 0, void 0, function* () { - throw "Not implemented"; - /*await knex('taken_rights').insert({ - user_uid: user.uid, - group_uid: groupUID, - justification: justification - }); - return true;*/ - }); - } - /** - * @memberof GraphQL.GroupModel# - * @function releaseAdminRights - * @summary Fonction pour relacher les droits admin du groupe. - * @arg {string} gid - Identifiant du groupe. - * @arg {string} uid - Identifiant de l'utilisateur qui relache les droits. - * @return {Promise(boolean)} Renvoie true si modification réussie. - * @async - * @rights supervisor du groupe - */ - releaseAdminRights(gid, uid) { - return __awaiter(this, void 0, void 0, function* () { - //TODO : relacher récursivement - throw "Not implemented"; - /*return knex('taken_rights').del().where('user_uid', user.uid).where('group_uid', groupUID);*/ - }); - } -} -exports.GroupModel = GroupModel; -//# sourceMappingURL=groupModel.js.map \ No newline at end of file diff --git a/tsbuild/src/graphql/models/groupModel.js.map b/tsbuild/src/graphql/models/groupModel.js.map deleted file mode 100644 index 6084fb5..0000000 --- a/tsbuild/src/graphql/models/groupModel.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"groupModel.js","sourceRoot":"","sources":["../../../../src/graphql/models/groupModel.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/tsbuild/src/graphql/models/messageModel.js b/tsbuild/src/graphql/models/messageModel.js deleted file mode 100644 index 7117948..0000000 --- a/tsbuild/src/graphql/models/messageModel.js +++ /dev/null @@ -1,546 +0,0 @@ -"use strict"; -/** - * @file Fonctions qui implémentent les requetes relatives aux messages - * @author ofacklam - * @memberof GraphQL - */ -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -Object.defineProperty(exports, "__esModule", { value: true }); -const messages_1 = require("../object_resolvers/messages"); -class MessageModel { - /** - * @memberof GraphQL - * @class MessageModel - * @summary Requetes relatives aux messages. - * @classdesc Cette classe contient les méthodes implémentant les requetes relatives aux messages. - * @arg {string} contextUser - L'identifiant de l'utilisateur du 'context' - */ - constructor(contextUser) { - this.contextUser = contextUser; - } - /** - * @memberof GraphQL.MessageModel# - * @function getAnnouncement - * @summary Fonction qui renvoie une annonce donnée. - * @arg {number} mid - Identifiant demandé. - * @return {Promise(Announcement)} Renvoie l'annonce dont l'identifiant est 'mid' - * @async - * @rights membre d'un groupe author ou d'un groupe recipient - */ - getAnnouncement(mid) { - return __awaiter(this, void 0, void 0, function* () { - return messages_1.Announcement.tryCreate(mid); - }); - } - /** - * @memberof GraphQL.MessageModel# - * @function getEvent - * @summary Fonction qui renvoie un evenement donné. - * @arg {number} mid - Identifiant demandé. - * @return {Promise(Event)} Renvoie l'évenement dont l'identifiant est 'mid' - * @async - * @rights membre d'un groupe author ou d'un groupe recipient - */ - getEvent(mid) { - return __awaiter(this, void 0, void 0, function* () { - return messages_1.Event.tryCreate(mid); - }); - } - /** - * @memberof GraphQL.MessageModel# - * @function getPrivatePost - * @summary Fonction qui renvoie un post privé donné. - * @arg {number} mid - Identifiant demandé. - * @return {Promise(PrivatePost)} Renvoie le post privé dont l'identifiant est 'mid' - * @async - * @rights membre du groupe recipient - */ - getPrivatePost(mid) { - return __awaiter(this, void 0, void 0, function* () { - return messages_1.PrivatePost.tryCreate(mid); - }); - } - /** - * @memberof GraphQL.MessageModel# - * @function getQuestion - * @summary Fonction qui renvoie une question donnée. - * @arg {number} mid - Identifiant demandé. - * @return {Promise(Question)} Renvoie la question dont l'identifiant est 'mid' - * @async - * @rights viewer du groupe recipient - */ - getQuestion(mid) { - return __awaiter(this, void 0, void 0, function* () { - return messages_1.Question.tryCreate(mid); - }); - } - /** - * @memberof GraphQL.MessageModel# - * @function getAnswer - * @summary Fonction qui renvoie une réponse donnée. - * @arg {number} mid - Identifiant demandé. - * @return {Promise(Answer)} Renvoie la réponse dont l'identifiant est 'mid' - * @async - * @rights viewer du groupe author - */ - getAnswer(mid) { - return __awaiter(this, void 0, void 0, function* () { - return messages_1.Answer.tryCreate(mid); - }); - } - /** - * @memberof GraphQL.MessageModel# - * @function getAllMessages - * @summary Fonction qui renvoie tous les messages visibles. - * @arg {GroupCollection} groups - Un ensemble d'identifiants, supposés valides. - * @return {Promise(Message[])} Renvoie tous les messages émis ou reçus par ces groupes - * @async - * @rights member of groups - */ - getAllMessages(groups) { - return __awaiter(this, void 0, void 0, function* () { - throw "Not implemented"; - }); - } - /** - * @memberof GraphQL.MessageModel# - * @function getAllAnnouncements - * @summary Fonction qui renvoie toutes les annonces visibles. - * @arg {GroupCollection} groups - Un ensemble d'identifiants, supposés valides. - * @return {Promise(Announcement[])} Renvoie toutes les annonces émises ou reçues par ces groupes - * @async - * @rights member of groups - */ - getAllAnnouncements(groups) { - return __awaiter(this, void 0, void 0, function* () { - throw "Not implemented"; - /*let result = await knex.select().from('announcements').whereIn('id', selection); - result = result.concat( - await knex.select().from('events').whereIn('id', selection) - ); - for (let r of result) { - r.type = 'Announcement'; - } - return result;*/ - }); - } - /** - * @memberof GraphQL.MessageModel# - * @function getAllEvents - * @summary Fonction qui renvoie tous les évenements visibles. - * @arg {GroupCollection} groups - Un ensemble d'identifiants, supposés valides. - * @return {Promise(Event[])} Renvoie tous les évenements émis ou reçus par ces groupes - * @async - * @rights member of groups - */ - getAllEvents(groups) { - return __awaiter(this, void 0, void 0, function* () { - throw "Not implemented"; - /*let result = await knex.select().from('events').whereIn('id', selection); - for (let r of result) { - r.type = 'Announcement'; - } - return result;*/ - }); - } - /** - * @memberof GraphQL.MessageModel# - * @function getAllPrivatePosts - * @summary Fonction qui renvoie tous les posts privés visibles. - * @arg {GroupCollection} groups - Un ensemble d'identifiants, supposés valides. - * @return {Promise(PrivatePost[])} Renvoie tous les posts privés de ces groupes - * @async - * @rights member of groups - */ - getAllPrivatePosts(groups) { - return __awaiter(this, void 0, void 0, function* () { - throw "Not implemented"; - // let result = await knex('private_posts').select().whereIn('id', received_messages); - // for(let entry of result){ - // entry.type = "PrivatePost"; - // } - // return result; - }); - } - /** - * @memberof GraphQL.MessageModel# - * @function userParticipate - * @summary Fonction pour participer a un evenement. - * @arg {string} uid - Identifiant de l'utilisateur. - * @arg {number} mid - Identifiant de l'évenement. - * @return {Promise(boolean)} Renvoie true si modification réussie - * @async - * @rights member d'un groupe author ou recipient - */ - userParticipate(uid, mid) { - return __awaiter(this, void 0, void 0, function* () { - throw "Not implemented"; - }); - } - /** - * @memberof GraphQL.MessageModel# - * @function userUnparticipate - * @summary Fonction pour ne plus participer a un evenement. - * @arg {string} uid - Identifiant de l'utilisateur. - * @arg {number} mid - Identifiant de l'évenement. - * @return {Promise(boolean)} Renvoie true si modification réussie - * @async - * @rights member d'un groupe author ou recipient - */ - userUnparticipate(uid, mid) { - return __awaiter(this, void 0, void 0, function* () { - throw "Not implemented"; - }); - } - /** - * @memberof GraphQL.MessageModel# - * @function groupParticipate - * @summary Fonction pour participer a un evenement. - * @arg {string} gid - Identifiant du groupe. - * @arg {number} forEvent - Identifiant de l'évenement. - * @return {Promise(boolean)} Renvoie true si modification réussie - * @async - * @rights member d'un groupe author ou recipient - */ - groupParticipate(gid, forEvent) { - return __awaiter(this, void 0, void 0, function* () { - throw "Not implemented"; - }); - } - /** - * @memberof GraphQL.MessageModel# - * @function groupUnparticipate - * @summary Fonction pour ne plus participer a un evenement. - * @arg {string} gid - Identifiant du groupe. - * @arg {number} forEvent - Identifiant de l'évenement. - * @return {Promise(boolean)} Renvoie true si modification réussie - * @async - * @rights member d'un groupe author ou recipient - */ - groupUnparticipate(gid, forEvent) { - return __awaiter(this, void 0, void 0, function* () { - throw "Not implemented"; - }); - } - /** - * @memberof GraphQL.MessageModel# - * @function createQuestion - * @summary Fonction pour créer une question. - * @arg {string} gid - Identifiant du groupe. - * @arg {string} title - Titre. - * @arg {string} content - Contenu. - * @return {Promise(Question)} Renvoie la question créée. - * @async - * @rights viewer du groupe - */ - createQuestion(gid, title, content) { - return __awaiter(this, void 0, void 0, function* () { - throw "Not implemented"; - }); - } - /** - * @memberof GraphQL.MessageModel# - * @function editQuestion - * @summary Fonction pour modifier une question. - * @arg {number} mid - Identifiant de la question. - * @arg {string} title - Titre. - * @arg {string} content - Contenu. - * @return {Promise(Question)} Renvoie la question modifiée. - * @async - * @rights viewer du groupe et author de la question - */ - editQuestion(mid, title, content) { - return __awaiter(this, void 0, void 0, function* () { - throw "Not implemented"; - }); - } - /** - * @memberof GraphQL.MessageModel# - * @function removeQuestion - * @summary Fonction pour supprimer une question. - * @arg {number} mid - Identifiant de la question. - * @return {Promise(boolean)} Renvoie true si suppression réussie. - * @async - * @rights viewer du groupe et author de la question - */ - removeQuestion(mid) { - return __awaiter(this, void 0, void 0, function* () { - throw "Not implemented"; - }); - } - /** - * @memberof GraphQL.MessageModel# - * @function createPrivatePost - * @summary Fonction pour créer un post privé. - * @arg {string} gid - Identifiant du groupe. - * @arg {string} title - Titre. - * @arg {string} content - Contenu. - * @return {Promise(PrivatePost)} Renvoie le post créé. - * @async - * @rights member du groupe - */ - createPrivatePost(gid, title, content) { - return __awaiter(this, void 0, void 0, function* () { - throw "Not implemented"; - }); - } - /** - * @memberof GraphQL.MessageModel# - * @function editPrivatePost - * @summary Fonction pour modifier un post privé. - * @arg {number} mid - Identifiant du post. - * @arg {string} title - Titre. - * @arg {string} content - Contenu. - * @return {Promise(PrivatePost)} Renvoie le post modifié. - * @async - * @rights member du groupe et author du post - */ - editPrivatePost(mid, title, content) { - return __awaiter(this, void 0, void 0, function* () { - throw "Not implemented"; - }); - } - /** - * @memberof GraphQL.MessageModel# - * @function removePrivatePost - * @summary Fonction pour supprimer un post privé. - * @arg {number} mid - Identifiant du post. - * @return {Promise(boolean)} Renvoie true si suppression réussie. - * @async - * @rights member du groupe et author du post - */ - removePrivatePost(mid) { - return __awaiter(this, void 0, void 0, function* () { - throw "Not implemented"; - }); - } - /** - * @memberof GraphQL.MessageModel# - * @function createAnnouncement - * @summary Fonction pour créer une annonce. - * @arg {string} from_gid - Identifiant du groupe émetteur. - * @arg {GroupSet} to_groups - Les groupes destinataires. - * @arg {string} title - Titre. - * @arg {string} content - Contenu. - * @arg {number} event_mid - Identifiant de l'évenement. - * @return {Promise(Announcement)} Renvoie l'annonce créée. - * @async - * @rights speaker du groupe émetteur - */ - createAnnouncement(from_gid, to_groups, title, content, event_mid) { - return __awaiter(this, void 0, void 0, function* () { - throw "Not implemented"; - }); - } - /** - * @memberof GraphQL.MessageModel# - * @function editAnnouncement - * @summary Fonction pour modifier une annonce. - * @arg {number} mid - Identifiant de l'annonce. - * @arg {string} title - Titre. - * @arg {string} content - Contenu. - * @arg {number} event_mid - Identifiant de l'évenement. - * @return {Promise(Announcement)} Renvoie l'annonce modifiée. - * @async - * @rights speaker du groupe émetteur - */ - editAnnouncement(mid, title, content, event_mid) { - return __awaiter(this, void 0, void 0, function* () { - throw "Not implemented"; - }); - } - /** - * @memberof GraphQL.MessageModel# - * @function removeAnnouncement - * @summary Fonction pour supprimer une annonce. - * @arg {number} mid - Identifiant de l'annonce. - * @return {Promise(boolean)} Renvoie true si suppression réussie. - * @async - * @rights speaker du groupe - */ - removeAnnouncement(mid) { - return __awaiter(this, void 0, void 0, function* () { - throw "Not implemented"; - }); - } - /** - * @memberof GraphQL.MessageModel# - * @function createEvent - * @summary Fonction pour créer un évenement. - * @arg {string} from_gid - Identifiant du groupe émetteur. - * @arg {GroupSet} to_groups - Les groupes destinataires. - * @arg {string} title - Titre. - * @arg {string} content - Contenu. - * @arg {string} location - Lieu. - * @arg {string} startTime - Date de début. - * @arg {string} endTime - Date de fin. - * @arg {number} announcement_mid - Identifiant de l'annonce. - * @return {Promise(Event)} Renvoie l'évenement créé. - * @async - * @rights speaker du groupe émetteur - */ - createEvent(from_gid, to_groups, title, content, location, startTime, endTime, announcement_mid) { - return __awaiter(this, void 0, void 0, function* () { - throw "Not implemented"; - }); - } - /** - * @memberof GraphQL.MessageModel# - * @function editEvent - * @summary Fonction pour modifier un evenement. - * @arg {number} mid - Identifiant de l'évenement. - * @arg {string} title - Titre. - * @arg {string} content - Contenu. - * @arg {string} location - Lieu. - * @arg {string} startTime - Date de début. - * @arg {string} endTime - Date de fin. - * @arg {number} announcement_mid - Identifiant de l'annonce. - * @return {Promise(Event)} Renvoie l'evenement modifié. - * @async - * @rights speaker du groupe émetteur - */ - editEvent(mid, title, content, location, startTime, endTime, announcement_mid) { - return __awaiter(this, void 0, void 0, function* () { - throw "Not implemented"; - }); - } - /** - * @memberof GraphQL.MessageModel# - * @function removeEvent - * @summary Fonction pour supprimer un évenement. - * @arg {number} mid - Identifiant de l'évenement. - * @return {Promise(boolean)} Renvoie true si suppression réussie. - * @async - * @rights speaker du groupe - */ - removeEvent(mid) { - return __awaiter(this, void 0, void 0, function* () { - throw "Not implemented"; - }); - } - /** - * @memberof GraphQL.MessageModel# - * @function createAnswer - * @summary Fonction pour créer une réponse. - * @arg {number} mid - Identifiant de la question. - * @arg {string} title - Titre. - * @arg {string} content - Contenu. - * @return {Promise(Answer)} Renvoie la réponse créée. - * @async - * @rights speaker du groupe - */ - createAnswer(mid, title, content) { - return __awaiter(this, void 0, void 0, function* () { - throw "Not implemented"; - }); - } - /** - * @memberof GraphQL.MessageModel# - * @function editAnswer - * @summary Fonction pour modifier une réponse. - * @arg {number} mid - Identifiant de la réponse. - * @arg {string} title - Titre. - * @arg {string} content - Contenu. - * @return {Promise(Answer)} Renvoie la réponse modifiée. - * @async - * @rights speaker du groupe - */ - editAnswer(mid, title, content) { - return __awaiter(this, void 0, void 0, function* () { - throw "Not implemented"; - }); - } - /** - * @memberof GraphQL.MessageModel# - * @function removeAnswer - * @summary Fonction pour supprimer une réponse. - * @arg {number} mid - Identifiant de la réponse. - * @return {Promise(boolean)} Renvoie true si suppression réussie. - * @async - * @rights speaker du groupe - */ - removeAnswer(mid) { - return __awaiter(this, void 0, void 0, function* () { - throw "Not implemented"; - }); - } - /** - * @memberof GraphQL.MessageModel# - * @function censorQuestion - * @summary Fonction pour censurer une question. - * @arg {number} mid - Identifiant du message. - * @return {Promise(boolean)} Renvoie true si suppression réussie. - * @async - * @rights admin du groupe - */ - censorQuestion(mid) { - return __awaiter(this, void 0, void 0, function* () { - throw "Not implemented"; - }); - } - /** - * @memberof GraphQL.MessageModel# - * @function censorAnswer - * @summary Fonction pour censurer une réponse. - * @arg {number} mid - Identifiant du message. - * @return {Promise(boolean)} Renvoie true si suppression réussie. - * @async - * @rights admin du groupe - */ - censorAnswer(mid) { - return __awaiter(this, void 0, void 0, function* () { - throw "Not implemented"; - }); - } - /** - * @memberof GraphQL.MessageModel# - * @function censorPrivatePost - * @summary Fonction pour censurer un post privé. - * @arg {number} mid - Identifiant du message. - * @return {Promise(boolean)} Renvoie true si suppression réussie. - * @async - * @rights admin du groupe - */ - censorPrivatePost(mid) { - return __awaiter(this, void 0, void 0, function* () { - throw "Not implemented"; - }); - } - /** - * @memberof GraphQL.MessageModel# - * @function censorAnnouncement - * @summary Fonction pour censurer une annonce. - * @arg {number} mid - Identifiant du message. - * @return {Promise(boolean)} Renvoie true si suppression réussie. - * @async - * @rights admin du groupe ???? (lequel ??? -> le groupe author?) - */ - censorAnnouncement(mid) { - return __awaiter(this, void 0, void 0, function* () { - throw "Not implemented"; - }); - } - /** - * @memberof GraphQL.MessageModel# - * @function censorEvent - * @summary Fonction pour censurer un évenement. - * @arg {number} mid - Identifiant du message. - * @return {Promise(boolean)} Renvoie true si suppression réussie. - * @async - * @rights admin du groupe ???? (lequel ??? -> le groupe author?) - */ - censorEvent(mid) { - return __awaiter(this, void 0, void 0, function* () { - throw "Not implemented"; - }); - } -} -exports.MessageModel = MessageModel; -//# sourceMappingURL=messageModel.js.map \ No newline at end of file diff --git a/tsbuild/src/graphql/models/messageModel.js.map b/tsbuild/src/graphql/models/messageModel.js.map deleted file mode 100644 index 2843f14..0000000 --- a/tsbuild/src/graphql/models/messageModel.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"messageModel.js","sourceRoot":"","sources":["../../../../src/graphql/models/messageModel.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/tsbuild/src/graphql/models/requestModel.js b/tsbuild/src/graphql/models/requestModel.js deleted file mode 100644 index cdd0b0b..0000000 --- a/tsbuild/src/graphql/models/requestModel.js +++ /dev/null @@ -1,313 +0,0 @@ -"use strict"; -/** - * @file Fonctions qui implémentent les requetes relatives aux requetes - * @author ofacklam - * @memberof GraphQL - */ -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -Object.defineProperty(exports, "__esModule", { value: true }); -const requests_1 = require("../object_resolvers/requests"); -class RequestModel { - /** - * @memberof GraphQL - * @class RequestModel - * @summary Requetes relatives aux requetes. - * @classdesc Cette classe contient les méthodes implémentant les requetes relatives aux requetes. - * @arg {string} contextUser - L'identifiant de l'utilisateur du 'context' - */ - constructor(contextUser) { - this.contextUser = contextUser; - } - /** - * @memberof GraphQL.RequestModel# - * @function getUserJoinGroupRequest - * @summary Fonction qui renvoie une requete UserJoinGroup donnée. - * @arg {number} rid - Identifiant demandé. - * @return {Promise(UserJoinGroup)} Renvoie la requete dont l'identifiant est 'rid' - * @async - * @rights admin du groupe destinaire ou le user émetteur - */ - getUserJoinGroupRequest(rid) { - return __awaiter(this, void 0, void 0, function* () { - return requests_1.UserJoinGroup.tryCreate(rid); - }); - } - /** - * @memberof GraphQL.RequestModel# - * @function getGroupJoinMetagroupRequest - * @summary Fonction qui renvoie une requete GroupJoinMetagroup donnée. - * @arg {number} rid - Identifiant demandé. - * @return {Promise(GroupJoinMetagroup)} Renvoie la requete dont l'identifiant est 'rid' - * @async - * @rights admin du groupe émetteur ou destinataire - */ - getGroupJoinMetagroupRequest(rid) { - return __awaiter(this, void 0, void 0, function* () { - return requests_1.GroupJoinMetagroup.tryCreate(rid); - }); - } - /** - * @memberof GraphQL.RequestModel# - * @function getGroupCoauthorEventRequest - * @summary Fonction qui renvoie une requete GroupCoauthorEvent donnée. - * @arg {number} rid - Identifiant demandé. - * @return {Promise(GroupCoauthorEvent)} Renvoie la requete dont l'identifiant est 'rid' - * @async - * @rights admin du groupe émetteur ou destinataire - */ - getGroupCoauthorEventRequest(rid) { - return __awaiter(this, void 0, void 0, function* () { - return requests_1.GroupCoauthorEvent.tryCreate(rid); - }); - } - /** - * @memberof GraphQL.RequestModel# - * @function getRequestsToGroup - * @summary Fonction qui renvoie toutes les requetes destinées a ce groupe. - * @arg {string} gid - Identifiant du groupe. - * @return {Promise(Request[])} Renvoie la liste des requetes destinées a ce groupe. - * @async - * @rights admin du groupe - */ - getRequestsToGroup(gid) { - return __awaiter(this, void 0, void 0, function* () { - let r1 = yield this.getUserJoinGroupRequestsToGroup(gid); - let r2 = yield this.getGroupJoinMetagroupRequestsToGroup(gid); - let r3 = yield this.getGroupCoauthorEventRequestsToGroup(gid); - let r; - return r.concat(r1, r2, r3); - }); - } - /** - * @memberof GraphQL.RequestModel# - * @function getUserJoinGroupRequestsToGroup - * @summary Fonction qui renvoie toutes les requetes UserJoinGroup destinées a ce groupe. - * @arg {string} gid - Identifiant du groupe. - * @return {Promise(UserJoinGroup[])} Renvoie la liste des requetes destinées a ce groupe. - * @async - * @rights admin du groupe - */ - getUserJoinGroupRequestsToGroup(gid) { - return __awaiter(this, void 0, void 0, function* () { - throw "Not implemented"; - // CODE A MODIFIER - /*let result = knex.select('id', 'useruid', 'message').from('user_join_group') - .where('recipient', recipient.gid); - return result.map(obj => { - obj.type = "UserJoinGroup"; - return obj; - });*/ - }); - } - /** - * @memberof GraphQL.RequestModel# - * @function getGroupJoinMetagroupRequestsToGroup - * @summary Fonction qui renvoie toutes les requetes GroupJoinMetagroup destinées a ce groupe. - * @arg {string} gid - Identifiant du groupe. - * @return {Promise(GroupJoinMetagroup[])} Renvoie la liste des requetes destinées a ce groupe. - * @async - * @rights admin du groupe - */ - getGroupJoinMetagroupRequestsToGroup(gid) { - return __awaiter(this, void 0, void 0, function* () { - throw "Not implemented"; - }); - } - /** - * @memberof GraphQL.RequestModel# - * @function getGroupCoauthorEventRequestsToGroup - * @summary Fonction qui renvoie toutes les requetes GroupCoauthorEvent destinées a ce groupe. - * @arg {string} gid - Identifiant du groupe. - * @return {Promise(GroupCoauthorEvent[])} Renvoie la liste des requetes destinées a ce groupe. - * @async - * @rights admin du groupe - */ - getGroupCoauthorEventRequestsToGroup(gid) { - return __awaiter(this, void 0, void 0, function* () { - throw "Not implemented"; - //CODE A MODIFIER - /*let result = await knex.select('id', 'senderuid', 'eventuid', 'message').from('group_join_event') - .where('recipient', recipient.gid); - return result.map(obj => { - obj.type = "GroupJoinEvent"; - return obj; - });*/ - /*let result = await knex.select('id', 'senderuid', 'eventuid', 'message').from('your_group_host_event') - .where('recipient', recipient.gid); - return result.map(obj => { - obj.type = "YourGroupHostEvent"; - return obj; - });*/ - }); - } - /** - * @memberof GraphQL.RequestModel# - * @function userRequestJoinGroup - * @summary Fonction pour demander a devenir membre - * @arg {string} gid - Identifiant du groupe. - * @arg {string} comment - Commentaire supplémentaire - * @return {Promise(UserJoinGroup)} Renvoie la requete créée. - * @async - * @rights viewer du groupe - */ - userRequestJoinGroup(gid, comment) { - return __awaiter(this, void 0, void 0, function* () { - throw "Not implemented"; - }); - } - /** - * @memberof GraphQL.RequestModel# - * @function groupRequestCoauthorEvent - * @summary Fonction pour demander a co-organiser un évenement - * @arg {string} from_gid - Identifiant du groupe émetteur. - * @arg {string} to_gid - Identifiant du groupe destinataire. - * @arg {number} event_mid - Identifiant de l'évenement considéré. - * @arg {string} comment - Commentaire supplémentaire. - * @return {Promise(GroupCoauthorEvent)} Renvoie la requete créée. - * @async - * @rights speaker du groupe émetteur - */ - groupRequestCoauthorEvent(from_gid, to_gid, event_mid, comment) { - return __awaiter(this, void 0, void 0, function* () { - //TODO : Vérifier que l'évenement est bien organisé par le groupe destinataire (to_gid) !!! => sinon erreur - throw "Not implemented"; - }); - } - /** - * @memberof GraphQL.RequestModel# - * @function groupRequestJoinMetagroup - * @summary Fonction pour demander a rejoindre un méta-groupe - * @arg {string} from_gid - Identifiant du groupe émetteur. - * @arg {string} to_gid - Identifiant du méta-groupe destinataire. - * @arg {string} comment - Commentaire supplémentaire. - * @return {Promise(GroupJoinMetagroup)} Renvoie la requete créée. - * @async - * @rights admin du groupe émetteur - */ - groupRequestJoinMetagroup(from_gid, to_gid, comment) { - return __awaiter(this, void 0, void 0, function* () { - throw "Not implemented"; - }); - } - /** - * @memberof GraphQL.RequestModel# - * @function acceptUserJoinRequest - * @summary Fonction pour accepter une UserJoinGroup - * @arg {UserJoinGroup} req - L'objet requete. - * @arg {string} comment - Commentaire supplémentaire. - * @return {Promise(boolean)} Renvoie true si modification réussie. - * @async - * @rights admin du groupe destinataire - */ - acceptUserJoinRequest(req, comment) { - return __awaiter(this, void 0, void 0, function* () { - //"comment" a envoyer par mail automatique - throw "Not implemented"; - }); - } - /** - * @memberof GraphQL.RequestModel# - * @function refuseUserJoinRequest - * @summary Fonction pour refuser une UserJoinGroup - * @arg {UserJoinGroup} req - L'objet requete. - * @arg {string} comment - Commentaire supplémentaire. - * @return {Promise(boolean)} Renvoie true si modification réussie. - * @async - * @rights admin du groupe destinataire - */ - refuseUserJoinRequest(req, comment) { - return __awaiter(this, void 0, void 0, function* () { - //"comment" a envoyer par mail automatique - throw "Not implemented"; - }); - } - /** - * @memberof GraphQL.RequestModel# - * @function acceptGroupJoinRequest - * @summary Fonction pour accepter une GroupJoinMetagroup - * @arg {GroupJoinMetagroup} req - L'objet requete. - * @arg {string} comment - Commentaire supplémentaire. - * @return {Promise(boolean)} Renvoie true si modification réussie. - * @async - * @rights admin du groupe destinataire - */ - acceptGroupJoinRequest(req, comment) { - return __awaiter(this, void 0, void 0, function* () { - //"comment" a envoyer par mail automatique - throw "Not implemented"; - }); - } - /** - * @memberof GraphQL.RequestModel# - * @function refuseGroupJoinRequest - * @summary Fonction pour refuser une GroupJoinMetagroup - * @arg {GroupJoinMetagroup} req - L'objet requete. - * @arg {string} comment - Commentaire supplémentaire. - * @return {Promise(boolean)} Renvoie true si modification réussie. - * @async - * @rights admin du groupe destinataire - */ - refuseGroupJoinRequest(req, comment) { - return __awaiter(this, void 0, void 0, function* () { - //"comment" a envoyer par mail automatique - throw "Not implemented"; - }); - } - /** - * @memberof GraphQL.RequestModel# - * @function acceptGroupCoauthorEventRequest - * @summary Fonction pour accepter une GroupCoauthorEvent - * @arg {GroupCoauthorEvent} req - L'objet requete. - * @arg {string} comment - Commentaire supplémentaire. - * @return {Promise(boolean)} Renvoie true si modification réussie. - * @async - * @rights admin du groupe destinataire - */ - acceptGroupCoauthorEventRequest(req, comment) { - return __awaiter(this, void 0, void 0, function* () { - //"comment" a envoyer par mail automatique - throw "Not implemented"; - /*let request = await knex('group_join_event').select().where('id', requestID); - if (!request.length) - return false; - - let group = request[0].senderuid; - let event = request[0].eventuid; - await knex('group_participation').insert({ - group: group, - message: event, - status: "join" - }); - await knex('group_join_event').where('id', requestID).del(); - return;*/ - }); - } - /** - * @memberof GraphQL.RequestModel# - * @function refuseGroupCoauthorEventRequest - * @summary Fonction pour refuser une GroupCoauthorEvent - * @arg {GroupCoauthorEvent} req - L'objet requete. - * @arg {string} comment - Commentaire supplémentaire. - * @return {Promise(boolean)} Renvoie true si modification réussie. - * @async - * @rights admin du groupe destinataire - */ - refuseGroupCoauthorEventRequest(req, comment) { - return __awaiter(this, void 0, void 0, function* () { - //"comment" a envoyer par mail automatique - throw "Not implemented"; - /*await knex('group_join_event').where('id', requestID).del(); - //KNEX RENVOIE LE NOMBRE DE LIGNES AFFECTÉES -> il faut l'utiliser pour la valeur de retour - return true;*/ - }); - } -} -exports.RequestModel = RequestModel; -//# sourceMappingURL=requestModel.js.map \ No newline at end of file diff --git a/tsbuild/src/graphql/models/requestModel.js.map b/tsbuild/src/graphql/models/requestModel.js.map deleted file mode 100644 index 240ac95..0000000 --- a/tsbuild/src/graphql/models/requestModel.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"requestModel.js","sourceRoot":"","sources":["../../../../src/graphql/models/requestModel.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/tsbuild/src/graphql/models/tools.js b/tsbuild/src/graphql/models/tools.js deleted file mode 100644 index 2b58780..0000000 --- a/tsbuild/src/graphql/models/tools.js +++ /dev/null @@ -1,254 +0,0 @@ -"use strict"; -/** - * Namespace qui regroupe toutes les classes et toutes les fonctions qui permettent l'implémentation des resolvers du schéma GraphQL - * @namespace GraphQL - */ -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -const knex_router_1 = __importDefault(require("../../../db/knex_router")); -class GroupSet extends Set { - addList(l) { - for (let elt of l) { - this.add(elt); - } - } -} -exports.GroupSet = GroupSet; -class Tools { - /** - * @memberof GraphQL - * @class Tools - * @summary Outils intermédiaires LDAP / BDD. - * @classdesc Cette classe contient des fonctions intermédiaires de recherche dans le LDAP / la BDD. - */ - constructor() { } - /** - * @memberof GraphQL - * @summary Fonction qui escape l'id donné en argument - * @arg {string} id - L'identifiant a escape. - * @return {Promise(Group)} Renvoie l'identifiant escapé. - * @static - */ - static escapeID(id) { - return String(id).replace(' ', '_').replace(/\W/g, '').toLowerCase(); //the REGEXP matches all non-word characters (\W) in a global search (/../g) - } - /** - * @memberof GraphQL - * @summary Fonction qui renvoit l'union de deux ensembles - * @arg {GroupSet} A - Le premier ensemble. - * @arg {GroupSet} B - Le deuxieme ensemble. - * @return {Promise(GroupSet)} Renvoie un nouveau GroupSet contenant l'union de A et B. - * @static - */ - static union(A, B) { - let union = new GroupSet(A); - for (let b of B) { - union.add(b); - } - return union; - } - /** - * @memberof GraphQL - * @summary Fonction qui renvoit tous les groupes simples dont le user est membre. - * @arg {userData} data - Données de l'utilisateur. - * @return {Promise(GroupSet)} Renvoie un GroupSet contenant le nom des groupes simples. - * @static - * @async - */ - static memberOfSimple(data) { - return __awaiter(this, void 0, void 0, function* () { - throw "Not implemented"; - return new GroupSet(data.members); - }); - } - /** - * @memberof GraphQL - * @summary Fonction qui renvoit tous les groupes simples dont le user est speaker. - * @arg {userData} data - Données de l'utilisateur. - * @return {Promise(GroupSet)} Renvoie un GroupSet contenant le nom des groupes simples. - * @static - * @async - */ - static speakerOfSimple(data) { - return __awaiter(this, void 0, void 0, function* () { - let speaker = new GroupSet(data.speakers); - speaker.addList(data.admins); - return speaker; - }); - } - /** - * @memberof GraphQL - * @summary Fonction qui renvoit tous les groupes simples dont le user est administrateur. - * @arg {userData} data - Données de l'utilisateur. - * @return {Promise(GroupSet)} Renvoie un GroupSet contenant le nom des groupes simples. - * @static - * @async - */ - static adminOfSimple(data) { - return __awaiter(this, void 0, void 0, function* () { - throw "Not implemented"; - return new GroupSet(data.admins); - }); - } - /** - * @memberof GraphQL - * @summary Fonction qui renvoit tous les méta-groupes dont ces groupes sont membres. - * @arg {GroupSet} groups - Un ensemble de gid des groupes a considérer. - * @return {Promise(GroupSet)} Renvoie un GroupSet contenant le nom des méta-groupes. - * @static - * @async - */ - static metaGroupsOfGroups(groups) { - return __awaiter(this, void 0, void 0, function* () { - let metas = yield knex_router_1.default.select('meta_group_gid').from('metagroup_memberships').whereIn('simple_group_gid', groups); - return new GroupSet(metas.map(elt => { - return elt.meta_group_gid; - })); - }); - } - /** - * @memberof GraphQL - * @summary Fonction qui renvoit tous les groupes (simples ou méta) dont le user est membre. - * @arg {userData} data - Données de l'utilisateur. - * @return {Promise(GroupCollection)} Renvoie une GroupCollection contenant le nom des groupes. - * @static - * @async - */ - static memberOf(data) { - return __awaiter(this, void 0, void 0, function* () { - let simple = yield Tools.memberOfSimple(data); - return { simpleGroups: simple, metaGroups: yield Tools.metaGroupsOfGroups(simple) }; - }); - } - /** - * @memberof GraphQL - * @summary Fonction qui renvoit tous les groupes (simples ou méta) dont le user est speaker. - * @arg {userData} data - Données de l'utilisateur. - * @return {Promise(GroupCollection)} Renvoie une GroupCollection contenant le nom des groupes. - * @static - * @async - */ - static speakerOf(data) { - return __awaiter(this, void 0, void 0, function* () { - let speaker = yield Tools.speakerOfSimple(data); - let admin = yield Tools.adminOfSimple(data); - return { simpleGroups: speaker, metaGroups: yield Tools.metaGroupsOfGroups(admin) }; - }); - } - /** - * @memberof GraphQL - * @summary Fonction qui renvoit tous les groupes (simples ou méta) dont le user est administrateur. - * @arg {userData} data - Données de l'utilisateur. - * @return {Promise(GroupCollection)} Renvoie une GroupCollection contenant le nom des groupes. - * @static - * @async - */ - static adminOf(data) { - return __awaiter(this, void 0, void 0, function* () { - let simple = yield Tools.adminOfSimple(data); - return { simpleGroups: simple, metaGroups: yield Tools.metaGroupsOfGroups(simple) }; - }); - } - /** - * @memberof GraphQL - * @summary Fonction qui fait un parcours en profondeur de l'arbre de racine `gid` et renvoie la liste de tous les noeuds. - * @arg {string} gid - Identifiant du groupe, supposé valide. - * @return {Promise(string[])} Renvoie une liste contenant le nom des groupes dans cet arbre. - * @static - * @async - */ - static DFS(gid) { - return __awaiter(this, void 0, void 0, function* () { - let res = [gid]; - let children = yield knex_router_1.default.select('gid').from('groups').where('parent_gid', gid); - for (let child of children) { - let sub_tree = yield Tools.DFS(child.gid); - res = res.concat(sub_tree); - } - return res; - }); - } - /** - * @memberof GraphQL - * @summary Fonction qui fait un parcours a profondeur 1 de l'arbre de racine `gid` et renvoie la liste des noeuds. - * @arg {string} gid - Identifiant du groupe, supposé valide. - * @return {Promise(string[])} Renvoie une liste contenant le nom des groupes a profondeur 1. - * @static - * @async - */ - static oneDownSearch(gid) { - return __awaiter(this, void 0, void 0, function* () { - let res = [gid]; - let children = yield knex_router_1.default.select('gid').from('groups').where('parent_gid', gid); - for (let child of children) { - res.push(child.gid); - } - return res; - }); - } - /** - * @memberof GraphQL - * @summary Fonction qui renvoie tous les groupes dont l'utilisateur est supervisor. - * @desc Utilise {@link Tools.oneDownSearch} pour avoir la profondeur 1 des arbres enracinés en chacun des groupes dont il est admin. - * @arg {userData} data - Données du user. - * @return {Promise(GroupCollection)} Renvoie une GroupCollection contenant le nom des groupes. - * @static - * @async - */ - static supervisorOf(data) { - return __awaiter(this, void 0, void 0, function* () { - let groups = yield Tools.adminOf(data); - let simple = new GroupSet(); - let meta = new GroupSet(); - for (let g of groups.simpleGroups) { - simple.addList(yield Tools.oneDownSearch(g)); - } - for (let g of groups.metaGroups) { - meta.addList(yield Tools.oneDownSearch(g)); - } - return { simpleGroups: simple, metaGroups: meta }; - }); - } - /** - * @memberof GraphQL - * @summary Fonction qui renvoie tous les groupes dont l'utilisateur est viewer. - * @desc Utilise {@link Tools.oneDownSearch} pour avoir la profondeur 1 des arbres enracinés en chacun des groupes dont il est membre. - * @arg {userData} data - Données du user. - * @return {Promise(GroupCollection)} Renvoie une GroupCollection contenant le nom des groupes. - * @static - * @async - */ - static viewerOf(data) { - return __awaiter(this, void 0, void 0, function* () { - let groups = yield Tools.memberOf(data); - let simple = new GroupSet(); - let meta = new GroupSet(); - //Ajouter les groupes dont il est membre + les fils a profondeur 1 - for (let g of groups.simpleGroups) { - simple.addList(yield Tools.oneDownSearch(g)); - } - for (let g of groups.metaGroups) { - meta.addList(yield Tools.oneDownSearch(g)); - } - //Ajouter les groupes simples qui sont dans ses métagroupes - let s = yield knex_router_1.default.select('simple_group_gid').from('metagroup_memberships').whereIn('meta_group_gid', groups.metaGroups); - simple.addList(s.map(elt => { - return elt.simple_group_gid; - })); - //TODO : rajouter les VisibilityEdges - return { simpleGroups: simple, metaGroups: meta }; - }); - } -} -exports.Tools = Tools; -//# sourceMappingURL=tools.js.map \ No newline at end of file diff --git a/tsbuild/src/graphql/models/tools.js.map b/tsbuild/src/graphql/models/tools.js.map deleted file mode 100644 index 9b29b1f..0000000 --- a/tsbuild/src/graphql/models/tools.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../../../src/graphql/models/tools.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/tsbuild/src/graphql/models/userModel.js b/tsbuild/src/graphql/models/userModel.js deleted file mode 100644 index 38ff489..0000000 --- a/tsbuild/src/graphql/models/userModel.js +++ /dev/null @@ -1,109 +0,0 @@ -"use strict"; -/** - * @file Fonctions qui implémentent les requetes relatives aux utilisateurs - * @author ofacklam - * @memberof GraphQL - */ -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -Object.defineProperty(exports, "__esModule", { value: true }); -const users_1 = require("../object_resolvers/users"); -const user_1 = require("../../ldap/export/user"); -const apollo_server_core_1 = require("apollo-server-core"); -class UserModel { - /** - * @memberof GraphQL - * @class UserModel - * @summary Requetes relatives aux utilisateurs. - * @classdesc Cette classe contient les méthodes implémentant les requetes relatives aux utilisateurs. - * @arg {string} contextUser - L'identifiant de l'utilisateur du 'context' - */ - constructor(contextUser) { - this.contextUser = contextUser; - } - /** - * @memberof GraphQL.UserModel# - * @function getUser - * @summary Fonction qui renvoit un utilisateur donné. - * @arg {string} uid - Identifiant demandé. - * @return {Promise(User)} Renvoie l'utilisateur dont l'identifiant est 'uid' - * @async - * @rights connectedOrOnplatal - */ - getUser(uid) { - return __awaiter(this, void 0, void 0, function* () { - return users_1.User.tryCreate(uid); - }); - } - /** - * @memberof GraphQL.UserModel# - * @function searchTOL - * @summary Fonction qui recherche dans le TOL - * @arg {searchTOLArgs} args - les données de recherche - * @return {Promise(User[])} Renvoie une liste d'utilisateurs - * @async - * @rights connectedOrOnplatal - */ - searchTOL(args) { - return __awaiter(this, void 0, void 0, function* () { - //TODO : correctly handle groups (in LDAP, a member can be stored as member, speaker or admin...) - const searchData = new user_1.userData(); - searchData.givenName = args.givenName; - searchData.lastName = args.lastName; - searchData.nickname = args.nickname; - searchData.nationality = args.nationality; - searchData.members = args.groups; - searchData.phone = args.phone; - searchData.mail = args.mail; - searchData.address = args.address; - const userList = yield user_1.User.search(searchData); - return userList.map((uid) => new users_1.User(uid)); - }); - } - /** - * @memberof GraphQL.UserModel# - * @function editProfile - * @summary Fonction qui modifie le profil et renvoie l'utilisateur - * @arg {editProfileArgs} args - les données a modifier - * @return {Promise(User)} Renvoie l'utilisateur mis a jour - * @async - * @rights authenticated - */ - editProfile(args) { - return __awaiter(this, void 0, void 0, function* () { - let data = yield user_1.User.peek(this.contextUser); - //Modify some fields, keep the others - let editArgs = new user_1.userData(); - editArgs.uid = data.uid; - editArgs.password = data.password; - editArgs.givenName = data.givenName; - editArgs.lastName = data.lastName; - editArgs.nickname = args.nickname; // <- this field is modified by user - editArgs.gender = data.gender; - editArgs.photo = data.photo; - editArgs.phone = args.phone; // <- this field is modified - editArgs.address = data.address; // WTF why can't this be changed ???? - editArgs.mail = args.mail; // <- this field is modified - editArgs.birthdate = data.birthdate; - editArgs.nationality = data.nationality; - editArgs.admins = data.admins; - editArgs.speakers = data.speakers; - editArgs.members = data.members; - editArgs.followers = data.followers; - if (yield user_1.User.edit(editArgs)) { - return new users_1.User(data.uid); - } - else { - throw new apollo_server_core_1.ApolloError("Edit failed"); - } - }); - } -} -exports.UserModel = UserModel; -//# sourceMappingURL=userModel.js.map \ No newline at end of file diff --git a/tsbuild/src/graphql/models/userModel.js.map b/tsbuild/src/graphql/models/userModel.js.map deleted file mode 100644 index 5e32372..0000000 --- a/tsbuild/src/graphql/models/userModel.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"userModel.js","sourceRoot":"","sources":["../../../../src/graphql/models/userModel.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/tsbuild/src/graphql/object_resolvers/groups.js b/tsbuild/src/graphql/object_resolvers/groups.js deleted file mode 100644 index 13363d7..0000000 --- a/tsbuild/src/graphql/object_resolvers/groups.js +++ /dev/null @@ -1,736 +0,0 @@ -"use strict"; -/** - * @file Resolvers des groupes - * @author ofacklam - */ -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -const users_1 = require("./users"); -const group_1 = require("../../ldap/export/group"); -const knex_router_1 = __importDefault(require("../../../db/knex_router")); -const apollo_server_core_1 = require("apollo-server-core"); -class Group { - /** - * @abstract - * @memberof GraphQL - * @class Group - * @summary Resolvers des groupes - * @classdesc Une classe abstraite représentant l'interface group du schéma. - * Comme Apollo Server, par défaut, appelle la propriété / fonction avec le nom a résoudre, il n'y a pas besoin d'écrire les resolvers explicitement. - * @arg {string} gid - Identifiant du groupe, supposé valide - * @rights connectedOrOnplatal - */ - constructor(gid) { - this.gid = gid; - this.m_dataLoaded = false; - } - /** - * Ci-dessous les resolvers a proprement parler. - */ - /** - * @memberof GraphQL.Group# - * @function __resolveType - * @summary Renvoie si c'est un SimpleGroup ou un MetaGroup - * @return {string} - * @rights connectedOrOnplatal - */ - __resolveType(args, context, info) { - if (this instanceof SimpleGroup) { - return "SimpleGroup"; - } - else if (this instanceof MetaGroup) { - return "MetaGroup"; - } - else { - throw new apollo_server_core_1.ApolloError("Bad group type"); - } - } - /** - * @memberof GraphQL.Group# - * @function createdAt - * @summary Renvoie la date de création - * @return {Promise(string)} - * @rights connectedOrOnplatal - * @async - */ - createdAt(args, context, info) { - return __awaiter(this, void 0, void 0, function* () { - yield this.fetchData(); - return this.m_createdAt; - }); - } - /** - * @memberof GraphQL.Group# - * @function updatedAt - * @summary Renvoie la date de mise a jour - * @return {Promise(string)} - * @rights connectedOrOnplatal - * @async - */ - updatedAt(args, context, info) { - return __awaiter(this, void 0, void 0, function* () { - yield this.fetchData(); - return this.m_updatedAt; - }); - } - /** - * @memberof GraphQL.Group# - * @function name - * @summary Renvoie le nom du groupe - * @return {Promise(string)} - * @rights connectedOrOnplatal - * @async - */ - name(args, context, info) { - return __awaiter(this, void 0, void 0, function* () { - yield this.fetchData(); - return this.m_name; - }); - } - /** - * @memberof GraphQL.Group# - * @function description - * @summary Renvoie la description du groupe - * @return {Promise(string)} - * @rights viewer - * @async - */ - description(args, context, info) { - return __awaiter(this, void 0, void 0, function* () { - if (context.models.auth.isViewer(this.gid)) { - yield this.fetchData(); - return this.m_description; - } - throw new apollo_server_core_1.AuthenticationError("Not a viewer"); - }); - } - /** - * @memberof GraphQL.Group# - * @function mail - * @summary Renvoie l'adresse mail - * @return {Promise(string)} - * @rights viewer - * @async - */ - mail(args, context, info) { - return __awaiter(this, void 0, void 0, function* () { - if (context.models.auth.isViewer(this.gid)) { - yield this.fetchData(); - return this.m_mail; - } - throw new apollo_server_core_1.AuthenticationError("Not a viewer"); - }); - } - /** - * @memberof GraphQL.Group# - * @function website - * @summary Renvoie l'adresse du site web - * @return {Promise(string)} - * @rights viewer - * @async - */ - website(args, context, info) { - return __awaiter(this, void 0, void 0, function* () { - if (context.models.auth.isViewer(this.gid)) { - yield this.fetchData(); - return this.m_website; - } - throw new apollo_server_core_1.AuthenticationError("Not a viewer"); - }); - } - /** - * @memberof GraphQL.Group# - * @function frontPage - * @summary Renvoie la page principale - * @return {Promise(string)} - * @rights viewer - * @async - */ - frontPage(args, context, info) { - return __awaiter(this, void 0, void 0, function* () { - if (context.models.auth.isViewer(this.gid)) { - yield this.fetchData(); - return this.m_frontPage; - } - throw new apollo_server_core_1.AuthenticationError("Not a viewer"); - }); - } - /** - * @memberof GraphQL.Group# - * @function questions - * @summary Renvoie les questions adressées a ce groupe - * @return {Promise(Question[])} - * @rights viewer - * @async - */ - questions(args, context, info) { - return __awaiter(this, void 0, void 0, function* () { - if (context.models.auth.isViewer(this.gid)) { - throw "Not implemented"; - // let result = await knex('questions').select().whereIn('id', received_messages); - // for(let entry of result){ - // entry.type = "Question"; - // } - // return result; - } - throw new apollo_server_core_1.AuthenticationError("Not a viewer"); - }); - } - /** - * @memberof GraphQL.Group# - * @function answers - * @summary Renvoie les réponses de ce groupe - * @return {Promise(Answer[])} - * @rights viewer - * @async - */ - answers(args, context, info) { - return __awaiter(this, void 0, void 0, function* () { - if (context.models.auth.isViewer(this.gid)) { - throw "Not implemented"; - // let received_messages = await selectors.recievedMessages(user, groupUID); - // let result = await knex('answers').select().whereIn('id', received_messages); - // for(let entry of result){ - // entry.type = "Answer"; - // } - // return result; - } - throw new apollo_server_core_1.AuthenticationError("Not a viewer"); - }); - } - /** - * @memberof GraphQL.Group# - * @function announcementsFromGroup - * @summary Renvoie les annonces créées par ce groupe - * @return {Promise(Announcement[])} - * @rights member - * @async - */ - announcementsFromGroup(args, context, info) { - return __awaiter(this, void 0, void 0, function* () { - if (context.models.auth.isMember(this.gid)) { - throw "Not implemented"; - } - throw new apollo_server_core_1.AuthenticationError("Not a member"); - }); - } - /** - * @memberof GraphQL.Group# - * @function announcementsToGroup - * @summary Renvoie les annonces adressées a ce groupe - * @return {Promise(Announcement[])} - * @rights member - * @async - */ - announcementsToGroup(args, context, info) { - return __awaiter(this, void 0, void 0, function* () { - if (context.models.auth.isMember(this.gid)) { - throw "Not implemented"; - } - throw new apollo_server_core_1.AuthenticationError("Not a member"); - }); - } - /** - * @memberof GraphQL.Group# - * @function eventsFromGroup - * @summary Renvoie les evenements créés par ce groupe - * @return {Promise(Event[])} - * @rights member - * @async - */ - eventsFromGroup(args, context, info) { - return __awaiter(this, void 0, void 0, function* () { - if (context.models.auth.isMember(this.gid)) { - throw "Not implemented"; - } - throw new apollo_server_core_1.AuthenticationError("Not a member"); - }); - } - /** - * @memberof GraphQL.Group# - * @function eventsToGroup - * @summary Renvoie les evenements adressées a ce groupe - * @return {Promise(Event[])} - * @rights member - * @async - */ - eventsToGroup(args, context, info) { - return __awaiter(this, void 0, void 0, function* () { - if (context.models.auth.isMember(this.gid)) { - throw "Not implemented"; - } - throw new apollo_server_core_1.AuthenticationError("Not a member"); - }); - } - /** - * @memberof GraphQL.Group# - * @function privatePosts - * @summary Renvoie les posts internes du groupe - * @return {Promise(PrivatePost[])} - * @rights member - * @async - */ - privatePosts(args, context, info) { - return __awaiter(this, void 0, void 0, function* () { - if (context.models.auth.isMember(this.gid)) { - throw "Not implemented"; - } - throw new apollo_server_core_1.AuthenticationError("Not a member"); - }); - } - /** - * @memberof GraphQL.Group# - * @function postsSummary - * @summary Renvoie le résumé interne - * @return {Promise(string)} - * @rights member - * @async - */ - postsSummary(args, context, info) { - return __awaiter(this, void 0, void 0, function* () { - if (context.models.auth.isMember(this.gid)) { - yield this.fetchData(); - return this.m_postsSummary; - } - throw new apollo_server_core_1.AuthenticationError("Not a member"); - }); - } - /** - * @memberof GraphQL.Group# - * @function requestsToGroup - * @summary Renvoie toutes les requetes adressées au groupe. - * @return {Promise(Request[])} - * @rights admin - * @async - */ - requestsToGroup(args, context, info) { - return __awaiter(this, void 0, void 0, function* () { - if (context.models.auth.isAdmin(this.gid)) { - return context.models.request.getRequestsToGroup(this.gid); - } - throw new apollo_server_core_1.AuthenticationError("Not an admin"); - }); - } - /** - * @memberof GraphQL.Group# - * @function userJoinGroupRequestsToGroup - * @summary Renvoie toutes les requetes UserJoinGroup adressées au groupe. - * @return {Promise(UserJoinGroup[])} - * @rights admin - * @async - */ - userJoinGroupRequestsToGroup(args, context, info) { - return __awaiter(this, void 0, void 0, function* () { - if (context.models.auth.isAdmin(this.gid)) { - return context.models.request.getUserJoinGroupRequestsToGroup(this.gid); - } - throw new apollo_server_core_1.AuthenticationError("Not an admin"); - }); - } - /** - * @memberof GraphQL.Group# - * @function groupJoinMetagroupRequestsToGroup - * @summary Renvoie toutes les requetes GroupJoinMetagroup adressées au groupe. - * @return {Promise(GroupJoinMetagroup[])} - * @rights admin - * @async - */ - groupJoinMetagroupRequestsToGroup(args, context, info) { - return __awaiter(this, void 0, void 0, function* () { - if (context.models.auth.isAdmin(this.gid)) { - return context.models.request.getGroupJoinMetagroupRequestsToGroup(this.gid); - } - throw new apollo_server_core_1.AuthenticationError("Not an admin"); - }); - } - /** - * @memberof GraphQL.Group# - * @function groupCoauthorEventRequestsToGroup - * @summary Renvoie toutes les requetes GroupCoauthorEvent adressées au groupe. - * @return {Promise(GroupCoauthorEvent[])} - * @rights admin - * @async - */ - groupCoauthorEventRequestsToGroup(args, context, info) { - return __awaiter(this, void 0, void 0, function* () { - if (context.models.auth.isAdmin(this.gid)) { - return context.models.request.getGroupCoauthorEventRequestsToGroup(this.gid); - } - throw new apollo_server_core_1.AuthenticationError("Not an admin"); - }); - } - /** - * @memberof GraphQL.Group# - * @function visibilityEdges - * @summary Renvoie les groupes auxquels ce groupe est visible. - * @return {Promise(Group[])} - * @rights viewer - * @async - */ - visibilityEdges(args, context, info) { - return __awaiter(this, void 0, void 0, function* () { - if (context.models.auth.isViewer(this.gid)) { - throw "Not implemented"; - } - throw new apollo_server_core_1.AuthenticationError("Not a viewer"); - }); - } -} -exports.Group = Group; -class SimpleGroup extends Group { - /** - * @memberof GraphQL - * @class SimpleGroup - * @extends GraphQL.Group - * @summary Resolvers des groupes simples - * @classdesc Une classe représentant le type SimpleGroup du schéma. - * Comme Apollo Server, par défaut, appelle la propriété / fonction avec le nom a résoudre, il n'y a pas besoin d'écrire les resolvers explicitement. - * @arg {string} gid - Identifiant du groupe simple, supposé valide. - * @rights connectedOrOnplatal - */ - constructor(gid) { - super(gid); - } - /** - * @memberof GraphQL.SimpleGroup# - * @function tryCreate - * @summary Fonction qui va essayer de créer le groupe simple correspondant - * @arg {string} gid - Identifiant du groupe simple, sans hypothese sur la validité. - * @returns {Promise(SimpleGroup)} - Renvoie le groupe simple créé, ou null en cas d'erreur. - * @rights connectedOrOnplatal - * @async - * @static - */ - static tryCreate(gid) { - return __awaiter(this, void 0, void 0, function* () { - let g = new SimpleGroup(gid); - if (yield g.fetchData()) { - return g; - } - return null; - }); - } - /** - * @memberof GraphQL.SimpleGroup# - * @function fetchData - * @summary Fonction qui va chercher toutes les données sur ce groupe simple dans le LDAP, si ce n'est pas déja fait. - * @returns {Promise(boolean)} Renvoie true si le chargement est réussi. - * @async - * @protected - */ - fetchData() { - return __awaiter(this, void 0, void 0, function* () { - if (!this.m_dataLoaded) { - try { - let data = yield group_1.Group.peek(this.gid); - if (data.gid !== this.gid) { - throw "Error in search"; - } - //this.m_createdAt = data.createdAt; - //this.m_updatedAt = data.updatedAt; - this.m_name = data.name; - this.m_description = data.description; - //this.m_mail = data.mail; - //this.m_website = data.website; - this.m_members = data.members; - //this.m_speakers = data.speakers; - this.m_admins = data.admins; - //this.m_likers = data.likers; - //this.m_frontPage = data.frontPage; - //this.m_postsSummary = data.postsSummary; - //this.m_parent = data.parent; - //this.m_children = data.children; - //this.m_school = ???; - this.m_dataLoaded = true; - return true; - } - catch (_a) { - return false; - } - } - return true; - }); - } - /** - * Ci-dessous les resolvers a proprement parler. - */ - /** - * @memberof GraphQL.SimpleGroup# - * @function members - * @summary Renvoie la liste des membres - * @return {Promise(User[])} - * @rights viewer - * @async - */ - members(args, context, info) { - return __awaiter(this, void 0, void 0, function* () { - if (context.models.auth.isViewer(this.gid)) { - yield this.fetchData(); - return this.m_members.map(uid => { - return new users_1.User(uid); - }); - } - throw new apollo_server_core_1.AuthenticationError("Not a viewer"); - }); - } - /** - * @memberof GraphQL.SimpleGroup# - * @function speakers - * @summary Renvoie la liste des speakers - * @return {Promise(User[])} - * @rights viewer - * @async - */ - speakers(args, context, info) { - return __awaiter(this, void 0, void 0, function* () { - if (context.models.auth.isViewer(this.gid)) { - yield this.fetchData(); - return this.m_speakers.map(uid => { - return new users_1.User(uid); - }); - } - throw new apollo_server_core_1.AuthenticationError("Not a viewer"); - }); - } - /** - * @memberof GraphQL.SimpleGroup# - * @function admins - * @summary Renvoie la liste des admins - * @return {Promise(User[])} - * @rights viewer - * @async - */ - admins(args, context, info) { - return __awaiter(this, void 0, void 0, function* () { - if (context.models.auth.isViewer(this.gid)) { - yield this.fetchData(); - return this.m_admins.map(uid => { - return new users_1.User(uid); - }); - } - throw new apollo_server_core_1.AuthenticationError("Not a viewer"); - }); - } - /** - * @memberof GraphQL.SimpleGroup# - * @function likers - * @summary Renvoie la liste des sympathisants - * @return {Promise(User[])} - * @rights viewer - * @async - */ - likers(args, context, info) { - return __awaiter(this, void 0, void 0, function* () { - if (context.models.auth.isViewer(this.gid)) { - yield this.fetchData(); - return this.m_likers.map(uid => { - return new users_1.User(uid); - }); - } - throw new apollo_server_core_1.AuthenticationError("Not a viewer"); - }); - } - /** - * @memberof GraphQL.SimpleGroup# - * @function parent - * @summary Renvoie le groupe parent - * @return {Promise(SimpleGroup)} - * @rights viewer - * @async - */ - parent(args, context, info) { - return __awaiter(this, void 0, void 0, function* () { - if (context.models.auth.isViewer(this.gid)) { - yield this.fetchData(); - if (this.m_parent == 'root') { - return null; - } - else { - return new SimpleGroup(this.m_parent); - } - } - throw new apollo_server_core_1.AuthenticationError("Not a viewer"); - }); - } - /** - * @memberof GraphQL.SimpleGroup# - * @function children - * @summary Renvoie la liste des groupes enfants - * @return {Promise(SimpleGroup[])} - * @rights viewer - * @async - */ - children(args, context, info) { - return __awaiter(this, void 0, void 0, function* () { - if (context.models.auth.isViewer(this.gid)) { - yield this.fetchData(); - return this.m_children.map(gid => { - return new SimpleGroup(gid); - }); - } - throw new apollo_server_core_1.AuthenticationError("Not a viewer"); - }); - } - /** - * @memberof GraphQL.SimpleGroup# - * @function memberOfMeta - * @summary Renvoie la liste des méta-groupes dont ce groupe fait partie - * @return {Promise(MetaGroup[])} - * @rights viewer - * @async - */ - memberOfMeta(args, context, info) { - return __awaiter(this, void 0, void 0, function* () { - if (context.models.auth.isViewer(this.gid)) { - throw "Not implemented"; - } - throw new apollo_server_core_1.AuthenticationError("Not a viewer"); - }); - } - /** - * @memberof GraphQL.SimpleGroup# - * @function school - * @summary Renvoie l'école d'origine - * @return {Promise(string)} - * @rights viewer - * @async - */ - school(args, context, info) { - return __awaiter(this, void 0, void 0, function* () { - if (context.models.auth.isViewer(this.gid)) { - yield this.fetchData(); - return this.m_school; - } - throw new apollo_server_core_1.AuthenticationError("Not a viewer"); - }); - } -} -exports.SimpleGroup = SimpleGroup; -class MetaGroup extends Group { - /** - * @memberof GraphQL - * @class MetaGroup - * @extends GraphQL.Group - * @summary Resolvers des méta-groupes - * @classdesc Une classe représentant le type MetaGroup du schéma. - * Comme Apollo Server, par défaut, appelle la propriété / fonction avec le nom a résoudre, il n'y a pas besoin d'écrire les resolvers explicitement. - * @arg {string} gid - Identifiant du méta-groupe, supposé valide - * @rights connectedOrOnplatal - */ - constructor(gid) { - super(gid); - } - /** - * @memberof GraphQL.MetaGroup# - * @function tryCreate - * @summary Fonction qui va essayer de créer le méta-groupe correspondant - * @arg {string} gid - Identifiant du méta-groupe, sans hypothese sur la validité. - * @returns {Promise(MetaGroup)} - Renvoie le méta-groupe créé, ou null en cas d'erreur. - * @rights connectedOrOnplatal - * @async - * @static - */ - static tryCreate(gid) { - return __awaiter(this, void 0, void 0, function* () { - let g = new MetaGroup(gid); - if (yield g.fetchData()) { - return g; - } - return null; - }); - } - /** - * @memberof GraphQL.MetaGroup# - * @function fetchData - * @summary Fonction qui va chercher toutes les données sur ce méta-groupe dans la BDD, si ce n'est pas déja fait. - * @returns {Promise(boolean)} Renvoie true si le chargement est réussi. - * @async - * @protected - */ - fetchData() { - return __awaiter(this, void 0, void 0, function* () { - if (!this.m_dataLoaded) { - let data = yield knex_router_1.default.select('created_at', 'updated_at', 'name', 'description', - //'mail', - //'posts_summary', - //'front_page', - 'website').from('groups').where('gid', this.gid); - if (data.length > 0) { - let g = data[0]; - this.m_createdAt = g.created_at; - this.m_updatedAt = g.updated_at; - this.m_name = g.name; - this.m_description = g.description; - //this.m_mail = g.mail; - this.m_website = g.website; - //this.m_frontPage = g.frontPage; - //this.m_postsSummary = g.postsSummary; - this.m_dataLoaded = true; - return true; - } - else { - return false; - } - } - return true; - }); - } - /** - * Ci-dessous les resolvers a proprement parler. - */ - /** - * @memberof GraphQL.MetaGroup# - * @function admins - * @summary Renvoie la liste des admins - * @return {Promise(User[])} - * @rights viewer - * @async - */ - admins(args, context, info) { - return __awaiter(this, void 0, void 0, function* () { - if (context.models.auth.isViewer(this.gid)) { - throw "Not implemented"; - } - throw new apollo_server_core_1.AuthenticationError("Not a viewer"); - }); - } - /** - * @memberof GraphQL.MetaGroup# - * @function members - * @summary Renvoie la liste des groupes membres - * @return {Promise(SimpleGroup[])} - * @rights viewer - * @async - */ - members(args, context, info) { - return __awaiter(this, void 0, void 0, function* () { - if (context.models.auth.isViewer(this.gid)) { - throw "Not implemented"; - /*let member_group_list = await knex.distinct().select().from('groups') - .innerJoin('meta_group_membership', 'groups.uid', 'meta_group_membership.member_uid') - .where('meta_group_membership.union_uid', '=', group.gid); - let members = new Set; - for (const memberGroup of member_group_list) { - let res = await getGroupMemberUsers(quser, new Group(memberGroup)); - for (const member of res.values()) { - members.add(member); - } - } - return members;*/ - } - throw new apollo_server_core_1.AuthenticationError("Not a viewer"); - }); - } -} -exports.MetaGroup = MetaGroup; -//# sourceMappingURL=groups.js.map \ No newline at end of file diff --git a/tsbuild/src/graphql/object_resolvers/groups.js.map b/tsbuild/src/graphql/object_resolvers/groups.js.map deleted file mode 100644 index fa70c8d..0000000 --- a/tsbuild/src/graphql/object_resolvers/groups.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"groups.js","sourceRoot":"","sources":["../../../../src/graphql/object_resolvers/groups.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/tsbuild/src/graphql/object_resolvers/messages.js b/tsbuild/src/graphql/object_resolvers/messages.js deleted file mode 100644 index 7e190a5..0000000 --- a/tsbuild/src/graphql/object_resolvers/messages.js +++ /dev/null @@ -1,762 +0,0 @@ -"use strict"; -/** - * @file Resolvers pour tous les types de messages - * @author akka, ofacklam - */ -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -const users_1 = require("./users"); -const knex_router_1 = __importDefault(require("../../../db/knex_router")); -const apollo_server_core_1 = require("apollo-server-core"); -class Message { - /** - * @memberof GraphQL - * @class Message - * @summary Resolvers des messages - * @classdesc Une classe abstraite représentant l'interface Message du schéma. - * Comme Apollo Server, par défaut, appelle la propriété / fonction avec le nom a résoudre, il n'y a pas besoin d'écrire les resolvers explicitement. - * @arg {number} mid - Identifiant du message, supposé valide. - * @rights dépend du type de message - * @abstract - */ - constructor(mid) { - this.mid = mid; - this.m_dataLoaded = false; - } - /** - * Ci-dessous les resolvers a proprement parler. - */ - /** - * @memberof GraphQL.Message# - * @function __resolveType - * @summary Renvoie quel type de Message c'est - * @return {string} - * @rights same as message object - */ - __resolveType() { - if (this instanceof Announcement) { - return "Announcement"; - } - else if (this instanceof Event) { - return "Event"; - } - else if (this instanceof Question) { - return "Question"; - } - else if (this instanceof Answer) { - return "Answer"; - } - else if (this instanceof PrivatePost) { - return "PrivatePost"; - } - else { - throw new apollo_server_core_1.ApolloError("Bad message type"); - } - } - /** - * @memberof GraphQL.Message# - * @function createdAt - * @summary Renvoie la date de création - * @return {Promise(string)} - * @rights same as message object - * @async - */ - createdAt(args, context, info) { - return __awaiter(this, void 0, void 0, function* () { - yield this.fetchData(); - return this.m_createdAt; - }); - } - /** - * @memberof GraphQL.Message# - * @function updatedAt - * @summary Renvoie la date de mise a jour - * @return {Promise(string)} - * @rights same as message object - * @async - */ - updatedAt(args, context, info) { - return __awaiter(this, void 0, void 0, function* () { - yield this.fetchData(); - return this.m_updatedAt; - }); - } - /** - * @memberof GraphQL.Message# - * @function title - * @summary Renvoie le titre du message - * @return {Promise(string)} - * @rights same as message object - * @async - */ - title(args, context, info) { - return __awaiter(this, void 0, void 0, function* () { - yield this.fetchData(); - return this.m_title; - }); - } - /** - * @memberof GraphQL.Message# - * @function content - * @summary Renvoie le contenu du message - * @return {Promise(string)} - * @rights same as message object - * @async - */ - content(args, context, info) { - return __awaiter(this, void 0, void 0, function* () { - yield this.fetchData(); - return this.m_content; - }); - } -} -exports.Message = Message; -class Announcement extends Message { - /** - * @memberof GraphQL - * @class Announcement - * @extends GraphQL.Message - * @summary Resolvers des announcements - * @classdesc Une classe représentant le type Announcement du schéma. - * Comme Apollo Server, par défaut, appelle la propriété / fonction avec le nom a résoudre, il n'y a pas besoin d'écrire les resolvers explicitement. - * @arg {number} mid - Identifiant du message, supposé valide. - * @rights membre d'un groupe author ou d'un groupe recipient - */ - constructor(mid) { - super(mid); - } - /** - * @memberof GraphQL.Announcement# - * @function tryCreate - * @summary Fonction qui va essayer de créer l'annonce correspondante - * @arg {number} mid - Identifiant du message, sans hypothese sur la validité. - * @returns {Promise(Announcement)} - Renvoie le Announcement créé, ou null en cas d'erreur. - * @rights membre d'un groupe author ou d'un groupe recipient - * @async - * @static - */ - static tryCreate(mid) { - return __awaiter(this, void 0, void 0, function* () { - let m = new Announcement(mid); - if (yield m.fetchData()) { - return m; - } - return null; - }); - } - /** - * @memberof GraphQL.Announcement# - * @function fetchData - * @summary Fonction qui va chercher toutes les données sur cet announcement dans la BDD, si ce n'est pas déja fait. - * @returns {Promise(boolean)} Renvoie true si le chargement est réussi. - * @async - * @protected - */ - fetchData() { - return __awaiter(this, void 0, void 0, function* () { - if (!this.m_dataLoaded) { - let data = yield knex_router_1.default.select('created_at', 'updated_at', 'title', 'content', - //'importance', - 'views').from('messages_announcements').where('mid', this.mid); - if (data.length > 0) { - let m = data[0]; - this.m_createdAt = m.created_at; - this.m_updatedAt = m.updated_at; - this.m_title = m.title; - this.m_content = m.content; - //this.m_importance = m.importance; - this.m_views = m.views; - this.m_dataLoaded = true; - return true; - } - else { - return false; - } - } - return true; - }); - } - /** - * Ci-dessous les resolvers a proprement parler. - */ - /** - * @memberof GraphQL.Announcement# - * @function authors - * @summary Renvoie les groupes auteurs - * @return {Promise(Group[])} - * @rights membre d'un groupe author ou d'un groupe recipient - * @async - */ - authors(args, context, info) { - return __awaiter(this, void 0, void 0, function* () { - throw "Not implemented"; - /*return knex.select({ uid: 'group' }).from('group_message_relationships') - .where('message', messageID).whereIn('status', ['host', 'publish']);*/ - }); - } - /** - * @memberof GraphQL.Announcement# - * @function recipients - * @summary Renvoie les groupes destinataires - * @return {Promise(Group[])} - * @rights membre d'un groupe author ou d'un groupe recipient - * @async - */ - recipients(args, context, info) { - return __awaiter(this, void 0, void 0, function* () { - throw "Not implemented"; - /*return knex.select({ uid: 'group' }).from('group_message_relationships') - .where('message', messageID).where('status', 'recieve');*/ - }); - } - /** - * @memberof GraphQL.Announcement# - * @function importance - * @summary Renvoie l'importance - * @return {Promise(number)} - * @rights membre d'un groupe author ou d'un groupe recipient - * @async - */ - importance(args, context, info) { - return __awaiter(this, void 0, void 0, function* () { - yield this.fetchData(); - return this.m_importance; - }); - } - /** - * @memberof GraphQL.Announcement# - * @function views - * @summary Renvoie le nombre de vues - * @return {Promise(number)} - * @rights membre d'un groupe author ou d'un groupe recipient - * @async - */ - views(args, context, info) { - return __awaiter(this, void 0, void 0, function* () { - yield this.fetchData(); - return this.m_views; - }); - } - /** - * @memberof GraphQL.Announcement# - * @function forEvent - * @summary Renvoie l'evenement correspondant, s'il existe - * @return {Promise(Event)} - * @rights membre d'un groupe author ou d'un groupe recipient - * @async - */ - forEvent(args, context, info) { - return __awaiter(this, void 0, void 0, function* () { - let data = yield knex_router_1.default.select('mid').from('messages_events').where('for_announcement', this.mid); - if (data.length > 0) { - return new Event(data[0].mid); - } - return null; - }); - } -} -exports.Announcement = Announcement; -class Event extends Message { - /** - * @memberof GraphQL - * @class Event - * @extends GraphQL.Message - * @summary Resolvers des events - * @classdesc Une classe représentant le type Event du schéma. - * Comme Apollo Server, par défaut, appelle la propriété / fonction avec le nom a résoudre, il n'y a pas besoin d'écrire les resolvers explicitement. - * @arg {number} mid - Identifiant du message, supposé valide. - * @rights membre d'un groupe author ou d'un groupe recipient - */ - constructor(mid) { - super(mid); - } - /** - * @memberof GraphQL.Event# - * @function tryCreate - * @summary Fonction qui va essayer de créer l'evenement correspondant - * @arg {number} mid - Identifiant du message, sans hypothese sur la validité. - * @returns {Promise(Event)} - Renvoie le Event créé, ou null en cas d'erreur. - * @rights membre d'un groupe author ou d'un groupe recipient - * @async - * @static - */ - static tryCreate(mid) { - return __awaiter(this, void 0, void 0, function* () { - let m = new Event(mid); - if (yield m.fetchData()) { - return m; - } - return null; - }); - } - /** - * @memberof GraphQL.Event# - * @function fetchData - * @summary Fonction qui va chercher toutes les données sur cet event dans la BDD, si ce n'est pas déja fait. - * @returns {Promise(boolean)} Renvoie true si le chargement est réussi. - * @async - * @protected - */ - fetchData() { - return __awaiter(this, void 0, void 0, function* () { - if (!this.m_dataLoaded) { - let data = yield knex_router_1.default.select('created_at', 'updated_at', 'title', 'content', 'location', 'start_time', 'end_time', 'for_announcement').from('messages_events').where('mid', this.mid); - if (data.length > 0) { - let m = data[0]; - this.m_createdAt = m.created_at; - this.m_updatedAt = m.updated_at; - this.m_title = m.title; - this.m_content = m.content; - this.m_location = m.location; - this.m_startTime = m.start_time; - this.m_endTime = m.end_time; - this.m_forAnnouncement = m.for_announcement; - this.m_dataLoaded = true; - return true; - } - else { - return false; - } - } - return true; - }); - } - /** - * Ci-dessous les resolvers a proprement parler. - */ - /** - * @memberof GraphQL.Event# - * @function authors - * @summary Renvoie les groupes auteurs - * @return {Promise(Group[])} - * @rights membre d'un groupe author ou d'un groupe recipient - * @async - */ - authors(args, context, info) { - return __awaiter(this, void 0, void 0, function* () { - throw "Not implemented"; - /*return knex.select({ uid: 'group' }).from('group_message_relationships') - .where('message', messageID).whereIn('status', ['host', 'publish']);*/ - }); - } - /** - * @memberof GraphQL.Event# - * @function recipients - * @summary Renvoie les groupes destinataires - * @return {Promise(Group[])} - * @rights membre d'un groupe author ou d'un groupe recipient - * @async - */ - recipients(args, context, info) { - return __awaiter(this, void 0, void 0, function* () { - throw "Not implemented"; - /*return knex.select({ uid: 'group' }).from('group_message_relationships') - .where('message', messageID).where('status', 'recieve');*/ - }); - } - /** - * @memberof GraphQL.Event# - * @function location - * @summary Renvoie l'endroit - * @return {Promise(string)} - * @rights membre d'un groupe author ou d'un groupe recipient - * @async - */ - location(args, context, info) { - return __awaiter(this, void 0, void 0, function* () { - yield this.fetchData(); - return this.m_location; - }); - } - /** - * @memberof GraphQL.Event# - * @function startTime - * @summary Renvoie l'horaire de début - * @return {Promise(string)} - * @rights membre d'un groupe author ou d'un groupe recipient - * @async - */ - startTime(args, context, info) { - return __awaiter(this, void 0, void 0, function* () { - yield this.fetchData(); - return this.m_startTime; - }); - } - /** - * @memberof GraphQL.Event# - * @function endTime - * @summary Renvoie l'horaire de fin - * @return {Promise(string)} - * @rights membre d'un groupe author ou d'un groupe recipient - * @async - */ - endTime(args, context, info) { - return __awaiter(this, void 0, void 0, function* () { - yield this.fetchData(); - return this.m_endTime; - }); - } - /** - * @memberof GraphQL.Event# - * @function participatingGroups - * @summary Renvoie les groupes qui participent - * @return {Promise(Group[])} - * @rights membre d'un groupe author ou d'un groupe recipient - * @async - */ - participatingGroups(args, context, info) { - return __awaiter(this, void 0, void 0, function* () { - throw "Not implemented"; - }); - } - /** - * @memberof GraphQL.Event# - * @function participatingUsers - * @summary Renvoie les users qui participent - * @return {Promise(User[])} - * @rights membre d'un groupe author ou d'un groupe recipient - * @async - */ - participatingUsers(args, context, info) { - return __awaiter(this, void 0, void 0, function* () { - throw "Not implemented"; - }); - } - /** - * @memberof GraphQL.Event# - * @function forAnnouncement - * @summary Renvoie l'announcement correspondant, s'il existe - * @return {Promise(Announcement)} - * @rights membre d'un groupe author ou d'un groupe recipient - * @async - */ - forAnnouncement(args, context, info) { - return __awaiter(this, void 0, void 0, function* () { - yield this.fetchData(); - if (this.m_forAnnouncement == 0) { //what is the default ????? - return null; - } - else { - return new Announcement(this.m_forAnnouncement); - } - }); - } -} -exports.Event = Event; -class PrivatePost extends Message { - /** - * @memberof GraphQL - * @class PrivatePost - * @extends GraphQL.Message - * @summary Resolvers des posts privés - * @classdesc Une classe représentant le type PrivatePost du schéma. - * Comme Apollo Server, par défaut, appelle la propriété / fonction avec le nom a résoudre, il n'y a pas besoin d'écrire les resolvers explicitement. - * @arg {number} mid - Identifiant du message, supposé valide. - * @rights membre du groupe recipient - */ - constructor(mid) { - super(mid); - } - /** - * @memberof GraphQL.PrivatePost# - * @function tryCreate - * @summary Fonction qui va essayer de créer le post privé correspondant - * @arg {number} mid - Identifiant du message, sans hypothese sur la validité. - * @returns {Promise(PrivatePost)} - Renvoie le PrivatePost créé, ou null en cas d'erreur. - * @rights membre du groupe recipient - * @async - * @static - */ - static tryCreate(mid) { - return __awaiter(this, void 0, void 0, function* () { - let m = new PrivatePost(mid); - if (yield m.fetchData()) { - return m; - } - return null; - }); - } - /** - * @memberof GraphQL.PrivatePost# - * @function fetchData - * @summary Fonction qui va chercher toutes les données sur ce post privé dans la BDD, si ce n'est pas déja fait. - * @returns {Promise(boolean)} Renvoie true si le chargement est réussi. - * @async - * @protected - */ - fetchData() { - return __awaiter(this, void 0, void 0, function* () { - if (!this.m_dataLoaded) { - let data = yield knex_router_1.default.select('created_at', 'updated_at', 'title', 'content', 'author', 'recipient').from('messages_private_posts').where('mid', this.mid); - if (data.length > 0) { - let m = data[0]; - this.m_createdAt = m.created_at; - this.m_updatedAt = m.updated_at; - this.m_title = m.title; - this.m_content = m.content; - this.m_author = m.author; - this.m_recipient = m.recipient; - this.m_dataLoaded = true; - return true; - } - else { - return false; - } - } - return true; - }); - } - /** - * Ci-dessous les resolvers a proprement parler. - */ - /** - * @memberof GraphQL.PrivatePost# - * @function author - * @summary Renvoie le user auteur - * @return {Promise(User)} - * @rights membre du groupe recipient - * @async - */ - author(args, context, info) { - return __awaiter(this, void 0, void 0, function* () { - yield this.fetchData(); - return new users_1.User(this.m_author); - }); - } - /** - * @memberof GraphQL.PrivatePost# - * @function recipient - * @summary Renvoie le groupe destinataire - * @return {Promise(Group)} - * @rights membre du groupe recipient - * @async - */ - recipient(args, context, info) { - return __awaiter(this, void 0, void 0, function* () { - yield this.fetchData(); - throw "Not implemented"; - }); - } -} -exports.PrivatePost = PrivatePost; -class Question extends Message { - /** - * @memberof GraphQL - * @class Question - * @extends GraphQL.Message - * @summary Resolvers des questions - * @classdesc Une classe représentant le type Question du schéma. - * Comme Apollo Server, par défaut, appelle la propriété / fonction avec le nom a résoudre, il n'y a pas besoin d'écrire les resolvers explicitement. - * @arg {number} mid - Identifiant du message, supposé valide. - * @rights viewer du groupe recipient - */ - constructor(mid) { - super(mid); - } - /** - * @memberof GraphQL.Question# - * @function tryCreate - * @summary Fonction qui va essayer de créer la question correspondante - * @arg {number} mid - Identifiant du message, sans hypothese sur la validité. - * @returns {Promise(Question)} - Renvoie la Question créée, ou null en cas d'erreur. - * @rights viewer du groupe recipient - * @async - * @static - */ - static tryCreate(mid) { - return __awaiter(this, void 0, void 0, function* () { - let m = new Question(mid); - if (yield m.fetchData()) { - return m; - } - return null; - }); - } - /** - * @memberof GraphQL.Question# - * @function fetchData - * @summary Fonction qui va chercher toutes les données sur ce post privé dans la BDD, si ce n'est pas déja fait. - * @returns {Promise(boolean)} Renvoie true si le chargement est réussi. - * @async - * @protected - */ - fetchData() { - return __awaiter(this, void 0, void 0, function* () { - if (!this.m_dataLoaded) { - let data = yield knex_router_1.default.select('created_at', 'updated_at', 'title', 'content', 'author', 'recipient').from('messages_questions').where('mid', this.mid); - if (data.length > 0) { - let m = data[0]; - this.m_createdAt = m.created_at; - this.m_updatedAt = m.updated_at; - this.m_title = m.title; - this.m_content = m.content; - this.m_author = m.author; - this.m_recipient = m.recipient; - this.m_dataLoaded = true; - return true; - } - else { - return false; - } - } - return true; - }); - } - /** - * Ci-dessous les resolvers a proprement parler. - */ - /** - * @memberof GraphQL.Question# - * @function author - * @summary Renvoie le user auteur - * @return {Promise(User)} - * @rights viewer du groupe recipient - * @async - */ - author(args, context, info) { - return __awaiter(this, void 0, void 0, function* () { - yield this.fetchData(); - return new users_1.User(this.m_author); - }); - } - /** - * @memberof GraphQL.Question# - * @function recipient - * @summary Renvoie le groupe destinataire - * @return {Promise(Group)} - * @rights viewer du groupe recipient - * @async - */ - recipient(args, context, info) { - return __awaiter(this, void 0, void 0, function* () { - yield this.fetchData(); - throw "Not implemented"; - }); - } - /** - * @memberof GraphQL.Question# - * @function forAnswer - * @summary Renvoie la réponse correspondante, si elle existe - * @return {Promise(Answer)} - * @rights viewer du groupe recipient - * @async - */ - forAnswer(args, context, info) { - return __awaiter(this, void 0, void 0, function* () { - let data = yield knex_router_1.default.select('mid').from('messages_answers').where('for_question', this.mid); - if (data.length > 0) { - return new Answer(data[0].mid); - } - return null; - }); - } -} -exports.Question = Question; -class Answer extends Message { - /** - * @memberof GraphQL - * @class Answer - * @extends GraphQL.Message - * @summary Resolvers des réponses - * @classdesc Une classe représentant le type Answer du schéma. - * Comme Apollo Server, par défaut, appelle la propriété / fonction avec le nom a résoudre, il n'y a pas besoin d'écrire les resolvers explicitement. - * @arg {number} mid - Identifiant du message, supposé valide. - * @rights viewer du groupe author - */ - constructor(mid) { - super(mid); - } - /** - * @memberof GraphQL.Answer# - * @function tryCreate - * @summary Fonction qui va essayer de créer la réponse correspondante - * @arg {number} mid - Identifiant du message, sans hypothese sur la validité. - * @returns {Promise(Answer)} - Renvoie la Answer créée, ou null en cas d'erreur. - * @rights viewer du groupe author - * @async - * @static - */ - static tryCreate(mid) { - return __awaiter(this, void 0, void 0, function* () { - let m = new Answer(mid); - if (yield m.fetchData()) { - return m; - } - return null; - }); - } - /** - * @memberof GraphQL.Answer# - * @function fetchData - * @summary Fonction qui va chercher toutes les données sur ce post privé dans la BDD, si ce n'est pas déja fait. - * @returns {Promise(boolean)} Renvoie true si le chargement est réussi. - * @async - * @protected - */ - fetchData() { - return __awaiter(this, void 0, void 0, function* () { - if (!this.m_dataLoaded) { - let data = yield knex_router_1.default.select('created_at', 'updated_at', 'title', 'content', 'recipient', //<--- WTF ???? - 'for_question').from('messages_answers').where('mid', this.mid); - if (data.length > 0) { - let m = data[0]; - this.m_createdAt = m.created_at; - this.m_updatedAt = m.updated_at; - this.m_title = m.title; - this.m_content = m.content; - this.m_author = m.recipient; - this.m_forQuestion = m.for_question; - this.m_dataLoaded = true; - return true; - } - else { - return false; - } - } - return true; - }); - } - /** - * Ci-dessous les resolvers a proprement parler. - */ - /** - * @memberof GraphQL.Answer# - * @function author - * @summary Renvoie le groupe auteur - * @return {Promise(Group)} - * @rights viewer du groupe author - * @async - */ - author(args, context, info) { - return __awaiter(this, void 0, void 0, function* () { - yield this.fetchData(); - throw "Not implemented"; - }); - } - /** - * @memberof GraphQL.Answer# - * @function forQuestion - * @summary Renvoie la question correspondante - * @return {Promise(Question)} - * @rights viewer du groupe author - * @async - */ - forQuestion(args, context, info) { - return __awaiter(this, void 0, void 0, function* () { - yield this.fetchData(); - return new Question(this.m_forQuestion); - }); - } -} -exports.Answer = Answer; -//# sourceMappingURL=messages.js.map \ No newline at end of file diff --git a/tsbuild/src/graphql/object_resolvers/messages.js.map b/tsbuild/src/graphql/object_resolvers/messages.js.map deleted file mode 100644 index fd84eb2..0000000 --- a/tsbuild/src/graphql/object_resolvers/messages.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"messages.js","sourceRoot":"","sources":["../../../../src/graphql/object_resolvers/messages.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/tsbuild/src/graphql/object_resolvers/requests.js b/tsbuild/src/graphql/object_resolvers/requests.js deleted file mode 100644 index a926a7b..0000000 --- a/tsbuild/src/graphql/object_resolvers/requests.js +++ /dev/null @@ -1,374 +0,0 @@ -"use strict"; -/** - * @file Resolvers pour tous les types de messages - * @author akka, ofacklam - */ -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -const groups_1 = require("./groups"); -const users_1 = require("./users"); -const messages_1 = require("./messages"); -const knex_router_1 = __importDefault(require("../../../db/knex_router")); -const apollo_server_core_1 = require("apollo-server-core"); -class Request { - /** - * @memberof GraphQL - * @class Request - * @summary Resolvers des requetes - * @classdesc Une classe abstraite représentant l'interface Request du schéma. - * Comme Apollo Server, par défaut, appelle la propriété / fonction avec le nom a résoudre, il n'y a pas besoin d'écrire les resolvers explicitement. - * @arg {number} rid - Identifiant de la requete, supposé valide. - * @rights dépend du type de requete - * @abstract - */ - constructor(rid) { - this.rid = rid; - this.m_dataLoaded = false; - } - /** - * Ci-dessous les resolvers a proprement parler. - */ - /** - * @memberof GraphQL.Request# - * @function __resolveType - * @summary Renvoie quel type de Request c'est - * @return {string} - * @rights same as request object - */ - __resolveType() { - if (this instanceof UserJoinGroup) { - return "UserJoinGroup"; - } - else if (this instanceof GroupJoinMetagroup) { - return "GroupJoinMetagroup"; - } - else if (this instanceof GroupCoauthorEvent) { - return "GroupCoauthorEvent"; - } - else { - throw new apollo_server_core_1.ApolloError("Bad request type"); - } - } - /** - * @memberof GraphQL.Request# - * @function comment - * @summary Renvoie le commentaire associé - * @return {Promise(string)} - * @rights same as request object - * @async - */ - comment(args, context, info) { - return __awaiter(this, void 0, void 0, function* () { - yield this.fetchData(); - return this.m_comment; - }); - } -} -exports.Request = Request; -class UserJoinGroup extends Request { - /** - * @memberof GraphQL - * @class UserJoinGroup - * @extends GraphQL.Request - * @summary Resolvers des requetes UserJoinGroup - * @classdesc Une classe représentant le type UserJoinGroup du schéma. - * Comme Apollo Server, par défaut, appelle la propriété / fonction avec le nom a résoudre, il n'y a pas besoin d'écrire les resolvers explicitement. - * @arg {number} rid - Identifiant de la requete, supposé valide. - * @rights admin du groupe recipient ou le user émetteur - */ - constructor(rid) { - super(rid); - } - /** - * @memberof GraphQL.UserJoinGroup# - * @function tryCreate - * @summary Fonction qui va essayer de créer la requete correspondante - * @arg {number} rid - Identifiant de la requete, sans hypothese sur la validité. - * @returns {Promise(UserJoinGroup)} - Renvoie le UserJoinGroup créé, ou null en cas d'erreur. - * @rights admin du groupe recipient ou le user émetteur - * @async - * @static - */ - static tryCreate(rid) { - return __awaiter(this, void 0, void 0, function* () { - let r = new UserJoinGroup(rid); - if (yield r.fetchData()) { - return r; - } - return null; - }); - } - /** - * @memberof GraphQL.UserJoinGroup# - * @function fetchData - * @summary Fonction qui va chercher toutes les données sur cette requete dans la BDD, si ce n'est pas déja fait. - * @returns {Promise(boolean)} Renvoie true si le chargement est réussi. - * @async - * @protected - */ - fetchData() { - return __awaiter(this, void 0, void 0, function* () { - if (!this.m_dataLoaded) { - let data = yield knex_router_1.default.select('request_comment', 'request_from', 'request_to').from('requests_user_join_group').where('rid', this.rid); - if (data.length > 0) { - let r = data[0]; - this.m_comment = r.request_comment; - this.m_from = r.request_from; - this.m_to = r.request_to; - this.m_dataLoaded = true; - return true; - } - else { - return false; - } - } - return true; - }); - } - /** - * Ci-dessous les resolvers a proprement parler. - */ - /** - * @memberof GraphQL.UserJoinGroup# - * @function from - * @summary Renvoie le user émetteur - * @return {Promise(User)} - * @rights admin du groupe recipient ou le user émetteur - * @async - */ - from(args, context, info) { - return __awaiter(this, void 0, void 0, function* () { - yield this.fetchData(); - return new users_1.User(this.m_from); - }); - } - /** - * @memberof GraphQL.UserJoinGroup# - * @function to - * @summary Renvoie le groupe destinataire - * @return {Promise(SimpleGroup)} - * @rights admin du groupe recipient ou le user émetteur - * @async - */ - to(args, context, info) { - return __awaiter(this, void 0, void 0, function* () { - yield this.fetchData(); - return new groups_1.SimpleGroup(this.m_to); - }); - } -} -exports.UserJoinGroup = UserJoinGroup; -class GroupJoinMetagroup extends Request { - /** - * @memberof GraphQL - * @class GroupJoinMetagroup - * @extends GraphQL.Request - * @summary Resolvers des requetes GroupJoinMetagroup - * @classdesc Une classe représentant le type GroupJoinMetagroup du schéma. - * Comme Apollo Server, par défaut, appelle la propriété / fonction avec le nom a résoudre, il n'y a pas besoin d'écrire les resolvers explicitement. - * @arg {number} rid - Identifiant de la requete, supposé valide. - * @rights admin du groupe émetteur ou destinataire - */ - constructor(rid) { - super(rid); - } - /** - * @memberof GraphQL.GroupJoinMetagroup# - * @function tryCreate - * @summary Fonction qui va essayer de créer la requete correspondante - * @arg {number} rid - Identifiant de la requete, sans hypothese sur la validité. - * @returns {Promise(GroupJoinMetagroup)} - Renvoie le GroupJoinMetagroup créé, ou null en cas d'erreur. - * @rights admin du groupe émetteur ou destinataire - * @async - * @static - */ - static tryCreate(rid) { - return __awaiter(this, void 0, void 0, function* () { - let r = new GroupJoinMetagroup(rid); - if (yield r.fetchData()) { - return r; - } - return null; - }); - } - /** - * @memberof GraphQL.GroupJoinMetagroup# - * @function fetchData - * @summary Fonction qui va chercher toutes les données sur cette requete dans la BDD, si ce n'est pas déja fait. - * @returns {Promise(boolean)} Renvoie true si le chargement est réussi. - * @async - * @protected - */ - fetchData() { - return __awaiter(this, void 0, void 0, function* () { - if (!this.m_dataLoaded) { - let data = yield knex_router_1.default.select('request_comment', 'request_from', 'request_to').from('requests_group_join_metagroup').where('rid', this.rid); - if (data.length > 0) { - let r = data[0]; - this.m_comment = r.request_comment; - this.m_from = r.request_from; - this.m_to = r.request_to; - this.m_dataLoaded = true; - return true; - } - else { - return false; - } - } - return true; - }); - } - /** - * Ci-dessous les resolvers a proprement parler. - */ - /** - * @memberof GraphQL.GroupJoinMetagroup# - * @function from - * @summary Renvoie le groupe émetteur - * @return {Promise(SimpleGroup)} - * @rights admin du groupe émetteur ou destinataire - * @async - */ - from(args, context, info) { - return __awaiter(this, void 0, void 0, function* () { - yield this.fetchData(); - return new groups_1.SimpleGroup(this.m_from); - }); - } - /** - * @memberof GraphQL.GroupJoinMetagroup# - * @function to - * @summary Renvoie le groupe destinataire - * @return {Promise(MetaGroup)} - * @rights admin du groupe émetteur ou destinataire - * @async - */ - to(args, context, info) { - return __awaiter(this, void 0, void 0, function* () { - yield this.fetchData(); - return new groups_1.MetaGroup(this.m_to); - }); - } -} -exports.GroupJoinMetagroup = GroupJoinMetagroup; -class GroupCoauthorEvent extends Request { - /** - * @memberof GraphQL - * @class GroupCoauthorEvent - * @extends GraphQL.Request - * @summary Resolvers des requetes GroupCoauthorEvent - * @classdesc Une classe représentant le type GroupCoauthorEvent du schéma. - * Comme Apollo Server, par défaut, appelle la propriété / fonction avec le nom a résoudre, il n'y a pas besoin d'écrire les resolvers explicitement. - * @arg {number} rid - Identifiant de la requete, supposé valide. - * @rights admin du groupe émetteur ou destinataire - */ - constructor(rid) { - super(rid); - } - /** - * @memberof GraphQL.GroupCoauthorEvent# - * @function tryCreate - * @summary Fonction qui va essayer de créer la requete correspondante - * @arg {number} rid - Identifiant de la requete, sans hypothese sur la validité. - * @returns {Promise(GroupCoauthorEvent)} - Renvoie le GroupCoauthorEvent créé, ou null en cas d'erreur. - * @rights admin du groupe émetteur ou destinataire - * @async - * @static - */ - static tryCreate(rid) { - return __awaiter(this, void 0, void 0, function* () { - let r = new GroupCoauthorEvent(rid); - if (yield r.fetchData()) { - return r; - } - return null; - }); - } - /** - * @memberof GraphQL.GroupCoauthorEvent# - * @function fetchData - * @summary Fonction qui va chercher toutes les données sur cette requete dans la BDD, si ce n'est pas déja fait. - * @returns {Promise(boolean)} Renvoie true si le chargement est réussi. - * @async - * @protected - */ - fetchData() { - return __awaiter(this, void 0, void 0, function* () { - if (!this.m_dataLoaded) { - let data = yield knex_router_1.default.select('request_comment', 'request_from', 'request_to', 'for_event').from('requests_group_coauthor_event').where('rid', this.rid); - if (data.length > 0) { - let r = data[0]; - this.m_comment = r.request_comment; - this.m_from = r.request_from; - this.m_to = r.request_to; - this.m_forEvent = r.for_event; - this.m_dataLoaded = true; - return true; - } - else { - return false; - } - } - return true; - }); - } - /** - * Ci-dessous les resolvers a proprement parler. - */ - /** - * @memberof GraphQL.GroupCoauthorEvent# - * @function from - * @summary Renvoie le groupe émetteur - * @return {Promise(Group)} - * @rights admin du groupe émetteur ou destinataire - * @async - */ - from(args, context, info) { - return __awaiter(this, void 0, void 0, function* () { - yield this.fetchData(); - throw "Not implemented"; - }); - } - /** - * @memberof GraphQL.GroupCoauthorEvent# - * @function to - * @summary Renvoie le groupe destinataire - * @return {Promise(Group)} - * @rights admin du groupe émetteur ou destinataire - * @async - */ - to(args, context, info) { - return __awaiter(this, void 0, void 0, function* () { - yield this.fetchData(); - throw "Not implemented"; - }); - } - /** - * @memberof GraphQL.GroupCoauthorEvent# - * @function forEvent - * @summary Renvoie l'evenement a co-organiser - * @return {Promise(Event)} - * @rights admin du groupe émetteur ou destinataire - * @async - */ - forEvent(args, context, info) { - return __awaiter(this, void 0, void 0, function* () { - yield this.fetchData(); - throw "Not implemented"; - //a-t-il le droit de voir ??? - return new messages_1.Event(this.m_forEvent); - }); - } -} -exports.GroupCoauthorEvent = GroupCoauthorEvent; -//# sourceMappingURL=requests.js.map \ No newline at end of file diff --git a/tsbuild/src/graphql/object_resolvers/requests.js.map b/tsbuild/src/graphql/object_resolvers/requests.js.map deleted file mode 100644 index 59cdba3..0000000 --- a/tsbuild/src/graphql/object_resolvers/requests.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"requests.js","sourceRoot":"","sources":["../../../../src/graphql/object_resolvers/requests.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/tsbuild/src/graphql/object_resolvers/users.js b/tsbuild/src/graphql/object_resolvers/users.js deleted file mode 100644 index 706ecac..0000000 --- a/tsbuild/src/graphql/object_resolvers/users.js +++ /dev/null @@ -1,323 +0,0 @@ -"use strict"; -/** - * @file Resolvers des utilisateurs - * @author ofacklam - */ -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -Object.defineProperty(exports, "__esModule", { value: true }); -const groups_1 = require("./groups"); -const user_1 = require("../../ldap/export/user"); -const tools_1 = require("../models/tools"); -class User { - /** - * @memberof GraphQL - * @class User - * @summary Resolvers des utilisateurs - * @classdesc Une classe représentant le type User du schéma. - * Comme Apollo Server, par défaut, appelle la propriété / fonction avec le nom a résoudre, il n'y a pas besoin d'écrire les resolvers explicitement. - * @arg {string} uid - Identifiant du user, supposé valide. - * @rights connectedOrOnplatal - */ - constructor(uid) { - this.uid = uid; - this.m_dataLoaded = false; - } - /** - * @memberof GraphQL.User# - * @function tryCreate - * @summary Fonction qui va essayer de créer le user correspondant - * @arg {string} uid - Identifiant du user, sans hypothese sur la validité. - * @returns {Promise(User)} - Renvoie le user créé, ou null en cas d'erreur. - * @rights connectedOrOnplatal - * @async - * @static - */ - static tryCreate(uid) { - return __awaiter(this, void 0, void 0, function* () { - let u = new User(uid); - if (yield u.fetchData()) { - return u; - } - return null; - }); - } - /** - * @memberof GraphQL.User# - * @function fetchData - * @summary Fonction qui va chercher toutes les données sur ce user dans le LDAP, si ce n'est pas déja fait. - * @returns {Promise(boolean)} Renvoie true si le chargement est réussi. - * @async - * @protected - */ - fetchData() { - return __awaiter(this, void 0, void 0, function* () { - if (!this.m_dataLoaded) { - try { - let data = yield user_1.User.peek(this.uid); - if (data.uid !== this.uid) { - throw "Error in search"; - } - this.m_givenName = data.givenName; - this.m_lastName = data.lastName; - this.m_nickname = data.nickname; - this.m_nationality = data.nationality; - this.m_birthdate = data.birthdate; - this.m_mail = data.mail; - this.m_phone = data.phone; - this.m_address = data.address; - this.m_memberOf = data.members; - this.m_speakerOf = data.speakers; - this.m_adminOf = data.admins; - this.m_likes = data.followers; - this.m_dataLoaded = true; - return true; - } - catch (_a) { - return false; - } - } - return true; - }); - } - /** - * @memberof GraphQL.User# - * @function givenName - * @summary Renvoie le prénom - * @return {Promise(string)} - * @rights connectedOrOnplatal - * @async - */ - givenName(args, context, info) { - return __awaiter(this, void 0, void 0, function* () { - yield this.fetchData(); - return this.m_givenName; - }); - } - /** - * @memberof GraphQL.User# - * @function lastName - * @summary Renvoie le nom de famille - * @return {Promise(string)} - * @rights connectedOrOnplatal - * @async - */ - lastName(args, context, info) { - return __awaiter(this, void 0, void 0, function* () { - yield this.fetchData(); - return this.m_lastName; - }); - } - /** - * @memberof GraphQL.User# - * @function nickname - * @summary Renvoie le surnom - * @return {Promise(string)} - * @rights connectedOrOnplatal - * @async - */ - nickname(args, context, info) { - return __awaiter(this, void 0, void 0, function* () { - yield this.fetchData(); - return this.m_nickname; - }); - } - /** - * @memberof GraphQL.User# - * @function nationality - * @summary Renvoie la nationalité - * @return {Promise(string)} - * @rights connectedOrOnplatal - * @async - */ - nationality(args, context, info) { - return __awaiter(this, void 0, void 0, function* () { - yield this.fetchData(); - return this.m_nationality; - }); - } - /** - * @memberof GraphQL.User# - * @function birthdate - * @summary Renvoie la date de naissance - * @return {Promise(string)} - * @rights connectedOrOnplatal - * @async - */ - birthdate(args, context, info) { - return __awaiter(this, void 0, void 0, function* () { - yield this.fetchData(); - return this.m_birthdate; - }); - } - /** - * @memberof GraphQL.User# - * @function promotion - * @summary Renvoie la promotion - * @return {Promise(string)} - * @rights connectedOrOnplatal - * @async - */ - promotion(args, context, info) { - return __awaiter(this, void 0, void 0, function* () { - yield this.fetchData(); - throw "Not implemented"; - }); - } - /** - * @memberof GraphQL.User# - * @function mail - * @summary Renvoie l'adresse mail - * @return {Promise(string)} - * @rights connectedOrOnplatal - * @async - */ - mail(args, context, info) { - return __awaiter(this, void 0, void 0, function* () { - yield this.fetchData(); - return this.m_mail; - }); - } - /** - * @memberof GraphQL.User# - * @function phone - * @summary Renvoie le numéro de téléphone - * @return {Promise(string)} - * @rights connectedOrOnplatal - * @async - */ - phone(args, context, info) { - return __awaiter(this, void 0, void 0, function* () { - yield this.fetchData(); - return this.m_phone; - }); - } - /** - * @memberof GraphQL.User# - * @function address - * @summary Renvoie l'adresse - * @return {Promise(string)} - * @rights connectedOrOnplatal - * @async - */ - address(args, context, info) { - return __awaiter(this, void 0, void 0, function* () { - yield this.fetchData(); - return this.m_address; - }); - } - /** - * @memberof GraphQL.User# - * @function memberOf - * @summary Renvoie les groupes dont il est membre - * @return {Promise(Group[])} - * @rights connectedOrOnplatal - * @async - */ - memberOf(args, context, info) { - return __awaiter(this, void 0, void 0, function* () { - yield this.fetchData(); - let simple = new tools_1.GroupSet(this.m_memberOf); - let meta = yield tools_1.Tools.metaGroupsOfGroups(simple); - let all; - for (let gid of simple) { - all.push(new groups_1.SimpleGroup(gid)); - } - for (let gid of meta) { - all.push(new groups_1.MetaGroup(gid)); - } - return all; - }); - } - /** - * @memberof GraphQL.User# - * @function speakerOf - * @summary Renvoie les groupes dont il est speaker - * @return {Promise(Group[])} - * @rights connectedOrOnplatal - * @async - */ - speakerOf(args, context, info) { - return __awaiter(this, void 0, void 0, function* () { - yield this.fetchData(); - let speaker = new tools_1.GroupSet(this.m_speakerOf); - let admin = new tools_1.GroupSet(this.m_adminOf); - let meta = yield tools_1.Tools.metaGroupsOfGroups(admin); - let all; - for (let gid of speaker) { - all.push(new groups_1.SimpleGroup(gid)); - } - for (let gid of meta) { - all.push(new groups_1.MetaGroup(gid)); - } - return all; - }); - } - /** - * @memberof GraphQL.User# - * @function adminOf - * @summary Renvoie les groupes dont il est admin - * @return {Promise(Group[])} - * @rights connectedOrOnplatal - * @async - */ - adminOf(args, context, info) { - return __awaiter(this, void 0, void 0, function* () { - yield this.fetchData(); - let simple = new tools_1.GroupSet(this.m_adminOf); - let meta = yield tools_1.Tools.metaGroupsOfGroups(simple); - let all; - for (let gid of simple) { - all.push(new groups_1.SimpleGroup(gid)); - } - for (let gid of meta) { - all.push(new groups_1.MetaGroup(gid)); - } - return all; - }); - } - /** - * @memberof GraphQL.User# - * @function likes - * @summary Renvoie les groupes dont il est sympathisant - * @return {Promise(Group[])} - * @rights connectedOrOnplatal - * @async - */ - likes(args, context, info) { - return __awaiter(this, void 0, void 0, function* () { - yield this.fetchData(); - let simple = new tools_1.GroupSet(this.m_likes); - let meta = yield tools_1.Tools.metaGroupsOfGroups(simple); - let all; - for (let gid of simple) { - all.push(new groups_1.SimpleGroup(gid)); - } - for (let gid of meta) { - all.push(new groups_1.MetaGroup(gid)); - } - return all; - }); - } - /** - * @memberof GraphQL.User# - * @function questionsFromUser - * @summary Renvoie les questions que le user a posées - * @return {Promise(Question[])} - * @rights viewer of recipient group - * @async - */ - questionsFromUser(args, context, info) { - return __awaiter(this, void 0, void 0, function* () { - throw "Not implemented"; - }); - } -} -exports.User = User; -//# sourceMappingURL=users.js.map \ No newline at end of file diff --git a/tsbuild/src/graphql/object_resolvers/users.js.map b/tsbuild/src/graphql/object_resolvers/users.js.map deleted file mode 100644 index 654a83f..0000000 --- a/tsbuild/src/graphql/object_resolvers/users.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"users.js","sourceRoot":"","sources":["../../../../src/graphql/object_resolvers/users.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/tsbuild/src/graphql/resolvers.js b/tsbuild/src/graphql/resolvers.js deleted file mode 100644 index ffb1ba1..0000000 --- a/tsbuild/src/graphql/resolvers.js +++ /dev/null @@ -1,673 +0,0 @@ -"use strict"; -/** - * @file Résolveurs des requêtes GraphQL. - * @author akka vodol, ofacklam - * @memberof GraphQL - * @desc On ne définit dans ce fichier que les resolvers pour les types Query et Mutations. - * En effet on exploite les default resolvers fournis par Apollo Server (le deuxième point) : - * - * > Explicit resolvers are not needed for every type, since Apollo Server provides a default that can perform two actions depending on the contents of parent: - * > - Return the property from parent with the relevant field name - * > - Calls a function on parent with the relevant field name and provide the remaining resolver parameters as arguments - * https://www.apollographql.com/docs/apollo-server/v2/essentials/data.html#default - * - * Dans notre cas, le type de retour de chaque resolver est un objet JS (Group, Message, Request ou User) - * défini dans un des fichiers de `./object_resolvers/` ; donc les méthodes des classes Group, Message, Request et User - * dont le prototype est (parent, args, context: Context, info) sont utilisées comme resolvers de l'objet GraphQL respectif. - */ -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -Object.defineProperty(exports, "__esModule", { value: true }); -const apollo_server_core_1 = require("apollo-server-core"); -const requests_1 = require("./object_resolvers/requests"); -const tools_1 = require("./models/tools"); -exports.resolvers = { - Query: { - // User queries de base - // @rights connectedOrOnplatal - user: function (root, args, context) { - return __awaiter(this, void 0, void 0, function* () { - if (context.models.auth.isConnectedOrOnplatal()) { - return context.models.user.getUser(args.uid); - } - throw new apollo_server_core_1.AuthenticationError("Not connected or on-platal"); - }); - }, - // Group queries de base - // @rights connectedOrOnplatal - group: function (root, args, context) { - return __awaiter(this, void 0, void 0, function* () { - if (context.models.auth.isConnectedOrOnplatal()) { - return context.models.group.getGroup(args.gid); - } - throw new apollo_server_core_1.AuthenticationError("Not connected or on-platal"); - }); - }, - // @rights connectedOrOnplatal - simpleGroup: function (obj, args, context) { - return __awaiter(this, void 0, void 0, function* () { - if (context.models.auth.isConnectedOrOnplatal()) { - return context.models.group.getSimpleGroup(args.gid); - } - throw new apollo_server_core_1.AuthenticationError("Not connected or on-platal"); - }); - }, - // @rights connectedOrOnplatal - metaGroup: function (obj, args, context) { - return __awaiter(this, void 0, void 0, function* () { - if (context.models.auth.isConnectedOrOnplatal()) { - return context.models.group.getMetaGroup(args.gid); - } - throw new apollo_server_core_1.AuthenticationError("Not connected or on-platal"); - }); - }, - // Message queries de base - //message -> not implemented -> message(mid: ID!): Message - // @rights membre d'un groupe author ou d'un groupe recipient - announcement: function (root, args, context) { - return __awaiter(this, void 0, void 0, function* () { - //TODO : verifier les autorisations - throw "Not implemented"; - return context.models.message.getAnnouncement(args.mid); - throw new apollo_server_core_1.AuthenticationError("Not connected or on-platal"); - }); - }, - // @rights membre d'un groupe author ou d'un groupe recipient - event: function (root, args, context) { - return __awaiter(this, void 0, void 0, function* () { - //TODO : verifier les autorisations - throw "Not implemented"; - return context.models.message.getEvent(args.mid); - throw new apollo_server_core_1.AuthenticationError("Not connected or on-platal"); - }); - }, - // @rights membre du groupe recipient - privatePost: function (root, args, context) { - return __awaiter(this, void 0, void 0, function* () { - //TODO : verifier les autorisations - throw "Not implemented"; - return context.models.message.getPrivatePost(args.mid); - throw new apollo_server_core_1.AuthenticationError("Not connected or on-platal"); - }); - }, - // @rights viewer du groupe recipient - question: function (root, args, context) { - return __awaiter(this, void 0, void 0, function* () { - //TODO : verifier les autorisations - throw "Not implemented"; - return context.models.message.getQuestion(args.mid); - throw new apollo_server_core_1.AuthenticationError("Not connected or on-platal"); - }); - }, - // @rights viewer du groupe author - answer: function (root, args, context) { - return __awaiter(this, void 0, void 0, function* () { - //TODO : verifier les autorisations - throw "Not implemented"; - return context.models.message.getAnswer(args.mid); - throw new apollo_server_core_1.AuthenticationError("Not connected or on-platal"); - }); - }, - // Request queries de base - //request -> not implemented -> request(rid: ID!): Request - // @rights admin du groupe destinaire ou le user émetteur - userJoinGroupRequest: function (root, args, context) { - return __awaiter(this, void 0, void 0, function* () { - //TODO : verifier les autorisations - throw "Not implemented"; - return context.models.request.getUserJoinGroupRequest(args.rid); - throw new apollo_server_core_1.AuthenticationError("Not connected or on-platal"); - }); - }, - // @rights admin du groupe émetteur ou destinataire - groupJoinMetagroupRequest: function (root, args, context) { - return __awaiter(this, void 0, void 0, function* () { - //TODO : verifier les autorisations - throw "Not implemented"; - return context.models.request.getGroupJoinMetagroupRequest(args.rid); - throw new apollo_server_core_1.AuthenticationError("Not connected or on-platal"); - }); - }, - // @rights admin du groupe émetteur ou destinataire - groupCoauthorEventRequest: function (root, args, context) { - return __awaiter(this, void 0, void 0, function* () { - //TODO : verifier les autorisations - throw "Not implemented"; - return context.models.request.getGroupCoauthorEventRequest(args.rid); - throw new apollo_server_core_1.AuthenticationError("Not connected or on-platal"); - }); - }, - // Tous les Messages visibles par un utilisateur(dont le uid, et donc les autorisations, est passé par context) - // @rights member of groups - allMessages: function (root, args, context) { - return __awaiter(this, void 0, void 0, function* () { - let groups = context.models.auth.groupsMember(); - return context.models.message.getAllMessages(groups); - }); - }, - // @rights member of groups - allAnnouncements: function (root, args, context) { - return __awaiter(this, void 0, void 0, function* () { - let groups = context.models.auth.groupsMember(); - return context.models.message.getAllAnnouncements(groups); - }); - }, - // @rights member of groups - allEvents: function (root, args, context) { - return __awaiter(this, void 0, void 0, function* () { - let groups = context.models.auth.groupsMember(); - return context.models.message.getAllEvents(groups); - }); - }, - // @rights member of groups - allPrivatePosts: function (root, args, context) { - return __awaiter(this, void 0, void 0, function* () { - let groups = context.models.auth.groupsMember(); - return context.models.message.getAllPrivatePosts(groups); - }); - }, - // Tous les Groupes visibles par un utilisateur. - // Correspondrait au sous - champ "viewerOf" de User, volontairement non - défini comme tel.Tous les autres cas de figure sont couverts par les sous - champs "<permission>Of" de User - // @rights viewer of groups - allGroups: function (root, args, context) { - return __awaiter(this, void 0, void 0, function* () { - let visibleGroupCollection = context.models.auth.groupsViewer(); - return context.models.group.getAllGroupsByCollection(visibleGroupCollection); - }); - }, - // @rights viewer of groups - allSimpleGroups: function (root, args, context) { - return __awaiter(this, void 0, void 0, function* () { - let visibleGroupCollection = context.models.auth.groupsViewer(); - return context.models.group.getAllSimpleGroups(visibleGroupCollection.simpleGroups); - }); - }, - // @rights supervisor of groups - supervisorOf: function (root, args, context) { - return __awaiter(this, void 0, void 0, function* () { - let supervisorGroupCollection = context.models.auth.groupsSupervisor(); - return context.models.group.getAllGroupsByCollection(supervisorGroupCollection); - }); - }, - // TOL - // @rights connectedOrOnplatal - searchTOL: function (root, args, context) { - return __awaiter(this, void 0, void 0, function* () { - if (context.models.auth.isConnectedOrOnplatal()) { - return context.models.user.searchTOL(args); - } - throw new apollo_server_core_1.AuthenticationError("Not connected or on-platal"); - }); - } - }, - Mutation: { - // Groups - independent mutations - // @rights authenticated - editProfile: function (root, args, context) { - return __awaiter(this, void 0, void 0, function* () { - if (context.models.auth.isAuthenticated()) { - return context.models.user.editProfile(args); - } - throw new apollo_server_core_1.AuthenticationError("Not authenticated"); - }); - }, - // Viewer mutations - // @rights viewer - likeGroup: function (root, args, context) { - return __awaiter(this, void 0, void 0, function* () { - if (context.models.auth.isViewer(args.gid)) { - return context.models.group.likeGroup(args.gid); - } - throw new apollo_server_core_1.AuthenticationError("Not a viewer"); - }); - }, - // @rights viewer - unlikeGroup: function (root, args, context) { - return __awaiter(this, void 0, void 0, function* () { - if (context.models.auth.isViewer(args.gid)) { - return context.models.group.unlikeGroup(args.gid); - } - throw new apollo_server_core_1.AuthenticationError("Not a viewer"); - }); - }, - // @rights member d'un groupe author ou recipient - userParticipate: function (root, args, context) { - return __awaiter(this, void 0, void 0, function* () { - throw "Not implemented"; - //TODO : Vérifier les autorisations - return context.models.message.userParticipate(context.user.uid, args.forEvent); - throw new apollo_server_core_1.AuthenticationError("Not a viewer"); - }); - }, - // @rights member d'un groupe author ou recipient - userUnparticipate: function (root, args, context) { - return __awaiter(this, void 0, void 0, function* () { - throw "Not implemented"; - //TODO : Vérifier les autorisations - return context.models.message.userUnparticipate(context.user.uid, args.forEvent); - throw new apollo_server_core_1.AuthenticationError("Not a viewer"); - }); - }, - // @rights viewer - userRequestJoinGroup: function (root, args, context) { - return __awaiter(this, void 0, void 0, function* () { - if (context.models.auth.isViewer(args.toGroup)) { - return context.models.request.userRequestJoinGroup(args.toGroup, args.comment); - } - throw new apollo_server_core_1.AuthenticationError("Not a viewer"); - }); - }, - // @rights viewer - createQuestion: function (root, args, context) { - return __awaiter(this, void 0, void 0, function* () { - if (context.models.auth.isViewer(args.toGroup)) { - return context.models.message.createQuestion(args.toGroup, args.title, args.content); - } - throw new apollo_server_core_1.AuthenticationError("Not a viewer"); - }); - }, - // @rights viewer du groupe et author de la question - editQuestion: function (root, args, context) { - return __awaiter(this, void 0, void 0, function* () { - throw "Not implemented"; - // TODO : Vérifier qu'il est l'auteur de la question et viewer - return context.models.message.editQuestion(args.questionToEdit, args.title, args.content); - throw new apollo_server_core_1.AuthenticationError("Not a viewer"); - }); - }, - // @rights viewer du groupe et author de la question - removeQuestion: function (root, args, context) { - return __awaiter(this, void 0, void 0, function* () { - throw "Not implemented"; - // TODO : Vérifier qu'il est l'auteur de la question et viewer - return context.models.message.removeQuestion(args.questionToRemove); - throw new apollo_server_core_1.AuthenticationError("Not a viewer"); - }); - }, - // Member mutations - // @rights member - userLeaveGroup: function (root, args, context) { - return __awaiter(this, void 0, void 0, function* () { - if (context.models.auth.isMember(args.gid)) { - return context.models.group.userLeaveGroup(args.gid); - } - throw new apollo_server_core_1.AuthenticationError("Not a member"); - }); - }, - // @rights member - createPrivatePost: function (root, args, context) { - return __awaiter(this, void 0, void 0, function* () { - if (context.models.auth.isMember(args.toGroup)) { - return context.models.message.createPrivatePost(args.toGroup, args.title, args.content); - } - throw new apollo_server_core_1.AuthenticationError("Not a member"); - }); - }, - // @rights member du groupe et author du post - editPrivatePost: function (root, args, context) { - return __awaiter(this, void 0, void 0, function* () { - throw "Not implemented"; - // TODO : Vérifier qu'il est l'auteur du post et member - return context.models.message.editPrivatePost(args.privatePostToEdit, args.title, args.content); - throw new apollo_server_core_1.AuthenticationError("Not a member"); - }); - }, - // @rights member du groupe et author du post - removePrivatePost: function (root, args, context) { - return __awaiter(this, void 0, void 0, function* () { - throw "Not implemented"; - // TODO : Vérifier qu'il est l'auteur du post et member - return context.models.message.removePrivatePost(args.privatePostToRemove); - throw new apollo_server_core_1.AuthenticationError("Not a member"); - }); - }, - // Speaker mutations - // @rights speaker - writePostsSummary: function (root, args, context) { - return __awaiter(this, void 0, void 0, function* () { - if (context.models.auth.isSpeaker(args.forGroup)) { - return context.models.group.writePostsSummary(args.forGroup, args.content); - } - throw new apollo_server_core_1.AuthenticationError("Not a speaker"); - }); - }, - // @rights speaker - groupParticipate: function (root, args, context) { - return __awaiter(this, void 0, void 0, function* () { - if (context.models.auth.isSpeaker(args.gid)) { - return context.models.message.groupParticipate(args.gid, args.forEvent); - } - throw new apollo_server_core_1.AuthenticationError("Not a speaker"); - }); - }, - // @rights speaker - groupUnparticipate: function (root, args, context) { - return __awaiter(this, void 0, void 0, function* () { - if (context.models.auth.isSpeaker(args.gid)) { - return context.models.message.groupUnparticipate(args.gid, args.forEvent); - } - throw new apollo_server_core_1.AuthenticationError("Not a speaker"); - }); - }, - // @rights speaker du groupe émetteur - groupRequestCoauthorEvent: function (root, args, context) { - return __awaiter(this, void 0, void 0, function* () { - if (context.models.auth.isSpeaker(args.fromGroup)) { - return context.models.request.groupRequestCoauthorEvent(args.fromGroup, args.toGroup, args.forEvent, args.comment); - } - throw new apollo_server_core_1.AuthenticationError("Not a speaker"); - }); - }, - // @rights speaker du groupe émetteur - createAnnouncement: function (root, args, context) { - return __awaiter(this, void 0, void 0, function* () { - if (context.models.auth.isSpeaker(args.fromGroup)) { - return context.models.message.createAnnouncement(args.fromGroup, new tools_1.GroupSet(args.toGroups), args.title, args.content, args.forEvent); - } - throw new apollo_server_core_1.AuthenticationError("Not a speaker"); - }); - }, - // @rights speaker du groupe émetteur - editAnnouncement: function (root, args, context) { - return __awaiter(this, void 0, void 0, function* () { - throw "Not implemented"; - // TODO : Vérifier les autorisations. - return context.models.message.editAnnouncement(args.announcementToEdit, args.title, args.content, args.forEvent); - throw new apollo_server_core_1.AuthenticationError("Not a speaker"); - }); - }, - // @rights speaker du groupe émetteur - removeAnnouncement: function (root, args, context) { - return __awaiter(this, void 0, void 0, function* () { - throw "Not implemented"; - // TODO : Vérifier les autorisations - return context.models.message.removeAnnouncement(args.announcementToRemove); - throw new apollo_server_core_1.AuthenticationError("Not a speaker"); - }); - }, - // @rights speaker du groupe émetteur - createEvent: function (root, args, context) { - return __awaiter(this, void 0, void 0, function* () { - if (context.models.auth.isSpeaker(args.fromGroup)) { - return context.models.message.createEvent(args.fromGroup, new tools_1.GroupSet(args.toGroups), args.title, args.content, args.location, args.startTime, args.endTime, args.forAnnouncement); - } - throw new apollo_server_core_1.AuthenticationError("Not a speaker"); - }); - }, - // @rights speaker du groupe émetteur - editEvent: function (root, args, context) { - return __awaiter(this, void 0, void 0, function* () { - throw "Not implemented"; - // TODO : Vérifier les autorisations. - return context.models.message.editEvent(args.eventToEdit, args.title, args.content, args.location, args.startTime, args.endTime, args.forAnnouncement); - throw new apollo_server_core_1.AuthenticationError("Not a speaker"); - }); - }, - // @rights speaker du groupe émetteur - removeEvent: function (root, args, context) { - return __awaiter(this, void 0, void 0, function* () { - throw "Not implemented"; - // TODO : Vérifier les autorisations - return context.models.message.removeEvent(args.eventToRemove); - throw new apollo_server_core_1.AuthenticationError("Not a speaker"); - }); - }, - // @rights speaker du groupe - createAnswer: function (root, args, context) { - return __awaiter(this, void 0, void 0, function* () { - throw "Not implemented"; - // TODO : Vérifier les autorisations. - return context.models.message.createAnswer(args.forQuestion, args.title, args.content); - throw new apollo_server_core_1.AuthenticationError("Not a speaker"); - }); - }, - // @rights speaker du groupe - editAnswer: function (root, args, context) { - return __awaiter(this, void 0, void 0, function* () { - throw "Not implemented"; - // TODO : Vérifier les autorisations. - return context.models.message.editAnswer(args.answerToEdit, args.title, args.content); - throw new apollo_server_core_1.AuthenticationError("Not a speaker"); - }); - }, - // @rights speaker du groupe - removeAnswer: function (root, args, context) { - return __awaiter(this, void 0, void 0, function* () { - throw "Not implemented"; - // TODO : Vérifier les autorisations - return context.models.message.removeAnswer(args.answerToRemove); - throw new apollo_server_core_1.AuthenticationError("Not a speaker"); - }); - }, - // Admin mutations - // @rights admin of parent group - createSubgroup: function (root, args, context) { - return __awaiter(this, void 0, void 0, function* () { - if (context.models.auth.isAdmin(args.fromGroup)) { - return context.models.group.createSubgroup(args); - } - throw new apollo_server_core_1.AuthenticationError("Not an admin"); - }); - }, - // @rights admin - makeAdmin: function (root, args, context) { - return __awaiter(this, void 0, void 0, function* () { - if (context.models.auth.isAdmin(args.forGroup)) { - return context.models.group.makeAdmin(args.forGroup, args.uid); - } - throw new apollo_server_core_1.AuthenticationError("Not an admin"); - }); - }, - // @rights admin - unmakeAdmin: function (root, args, context) { - return __awaiter(this, void 0, void 0, function* () { - if (context.models.auth.isAdmin(args.forGroup)) { - return context.models.group.unmakeAdmin(args.forGroup, args.uid); - } - throw new apollo_server_core_1.AuthenticationError("Not an admin"); - }); - }, - // @rights admin - makeSpeaker: function (root, args, context) { - return __awaiter(this, void 0, void 0, function* () { - if (context.models.auth.isAdmin(args.forGroup)) { - return context.models.group.makeSpeaker(args.forGroup, args.uid); - } - throw new apollo_server_core_1.AuthenticationError("Not an admin"); - }); - }, - // @rights admin - unmakeSpeaker: function (root, args, context) { - return __awaiter(this, void 0, void 0, function* () { - if (context.models.auth.isAdmin(args.forGroup)) { - return context.models.group.unmakeSpeaker(args.forGroup, args.uid); - } - throw new apollo_server_core_1.AuthenticationError("Not an admin"); - }); - }, - // @rights admin - editGroup: function (root, args, context) { - return __awaiter(this, void 0, void 0, function* () { - if (context.models.auth.isAdmin(args.forGroup)) { - return context.models.group.editGroup(args); - } - throw new apollo_server_core_1.AuthenticationError("Not an admin"); - }); - }, - // @rights admin - addVisibilityEdge: function (root, args, context) { - return __awaiter(this, void 0, void 0, function* () { - if (context.models.auth.isAdmin(args.forGroup)) { - return context.models.group.addVisibilityEdge(args.forGroup, args.visibleBy); - } - throw new apollo_server_core_1.AuthenticationError("Not an admin"); - }); - }, - // @rights admin - removeVisibilityEdge: function (root, args, context) { - return __awaiter(this, void 0, void 0, function* () { - if (context.models.auth.isAdmin(args.forGroup)) { - return context.models.group.removeVisibilityEdge(args.forGroup, args.visibleBy); - } - throw new apollo_server_core_1.AuthenticationError("Not an admin"); - }); - }, - // @rights admin du groupe émetteur - groupRequestJoinMetagroup: function (root, args, context) { - return __awaiter(this, void 0, void 0, function* () { - if (context.models.auth.isAdmin(args.fromGroup)) { - return context.models.request.groupRequestJoinMetagroup(args.fromGroup, args.toMetagroup, args.comment); - } - throw new apollo_server_core_1.AuthenticationError("Not an admin"); - }); - }, - // @rights admin du groupe destinataire - acceptUserJoinRequest: function (root, args, context) { - return __awaiter(this, void 0, void 0, function* () { - let req = yield requests_1.UserJoinGroup.tryCreate(args.request); - throw "Not implemented"; - //TODO : Vérifier les autorisations - //if (context.models.auth.isAdmin(req.to)) { - return context.models.request.acceptUserJoinRequest(req, args.comment); - throw new apollo_server_core_1.AuthenticationError("Not an admin"); - }); - }, - // @rights admin du groupe destinataire - acceptGroupJoinRequest: function (root, args, context) { - return __awaiter(this, void 0, void 0, function* () { - let req = yield requests_1.GroupJoinMetagroup.tryCreate(args.request); - throw "Not implemented"; - //TODO : Vérifier les autorisations - //if (context.models.auth.isAdmin(req.to)) { - return context.models.request.acceptGroupJoinRequest(req, args.comment); - throw new apollo_server_core_1.AuthenticationError("Not an admin"); - }); - }, - // @rights admin du groupe destinataire - refuseUserJoinRequest: function (root, args, context) { - return __awaiter(this, void 0, void 0, function* () { - let req = yield requests_1.UserJoinGroup.tryCreate(args.request); - throw "Not implemented"; - //TODO : Vérifier les autorisations - //if (context.models.auth.isAdmin(req.to)) { - return context.models.request.refuseUserJoinRequest(req, args.comment); - throw new apollo_server_core_1.AuthenticationError("Not an admin"); - }); - }, - // @rights admin du groupe destinataire - refuseGroupJoinRequest: function (root, args, context) { - return __awaiter(this, void 0, void 0, function* () { - let req = yield requests_1.GroupJoinMetagroup.tryCreate(args.request); - throw "Not implemented"; - //TODO : Vérifier les autorisations - //if (context.models.auth.isAdmin(req.to)) { - return context.models.request.refuseGroupJoinRequest(req, args.comment); - throw new apollo_server_core_1.AuthenticationError("Not an admin"); - }); - }, - // @rights admin - removeUser: function (root, args, context) { - return __awaiter(this, void 0, void 0, function* () { - if (context.models.auth.isAdmin(args.fromGroup)) { - return context.models.group.removeUser(args.fromGroup, args.uid); - } - throw new apollo_server_core_1.AuthenticationError("Not an admin"); - }); - }, - // @rights admin du groupe destinataire - acceptGroupCoauthorEventRequest: function (root, args, context) { - return __awaiter(this, void 0, void 0, function* () { - // Pour l'instant, ce n'est pas a implémenter... - let req = yield requests_1.GroupCoauthorEvent.tryCreate(args.request); - throw "Not implemented"; - //TODO : Vérifier les autorisations - //if (context.models.auth.isAdmin(req.to)) { - return context.models.request.acceptGroupCoauthorEventRequest(req, args.comment); - throw new apollo_server_core_1.AuthenticationError("Not an admin"); - }); - }, - // @rights admin du groupe destinataire - refuseGroupCoauthorEventRequest: function (root, args, context) { - return __awaiter(this, void 0, void 0, function* () { - // Pour l'instant, ce n'est pas a implémenter... - let req = yield requests_1.GroupCoauthorEvent.tryCreate(args.request); - throw "Not implemented"; - //TODO : Vérifier les autorisations - //if (context.models.auth.isAdmin(req.to)) { - return context.models.request.refuseGroupCoauthorEventRequest(req, args.comment); - throw new apollo_server_core_1.AuthenticationError("Not an admin"); - }); - }, - // @rights admin du groupe - censorQuestion: function (root, args, context) { - return __awaiter(this, void 0, void 0, function* () { - throw "Not implemented"; - //TODO : Vérifier les autorisations - return context.models.message.censorQuestion(args.questionToCensor); - throw new apollo_server_core_1.AuthenticationError("Not an admin"); - }); - }, - // @rights admin du groupe - censorAnswer: function (root, args, context) { - return __awaiter(this, void 0, void 0, function* () { - throw "Not implemented"; - //TODO : Vérifier les autorisations - return context.models.message.censorAnswer(args.answerToCensor); - throw new apollo_server_core_1.AuthenticationError("Not an admin"); - }); - }, - // @rights admin du groupe - censorPrivatePost: function (root, args, context) { - return __awaiter(this, void 0, void 0, function* () { - throw "Not implemented"; - //TODO : Vérifier les autorisations - return context.models.message.censorPrivatePost(args.privatePostToCensor); - throw new apollo_server_core_1.AuthenticationError("Not an admin"); - }); - }, - // @rights admin d'un groupe author - censorAnnouncement: function (root, args, context) { - return __awaiter(this, void 0, void 0, function* () { - throw "Not implemented"; - //TODO : Vérifier les autorisations - return context.models.message.censorAnnouncement(args.announcementToCensor); - throw new apollo_server_core_1.AuthenticationError("Not an admin"); - }); - }, - // @rights admin d'un groupe author - censorEvent: function (root, args, context) { - return __awaiter(this, void 0, void 0, function* () { - throw "Not implemented"; - //TODO : Vérifier les autorisations - return context.models.message.censorEvent(args.eventToCensor); - throw new apollo_server_core_1.AuthenticationError("Not an admin"); - }); - }, - // Supervisor mutations - // @rights supervisor - takeAdminRights: function (root, args, context) { - return __awaiter(this, void 0, void 0, function* () { - if (context.models.auth.isSupervisor(args.forGroup)) { - return context.models.group.takeAdminRights(args.forGroup, context.user.uid); - } - throw new apollo_server_core_1.AuthenticationError("Not a supervisor"); - }); - }, - // @rights supervisor - releaseAdminRights: function (root, args, context) { - return __awaiter(this, void 0, void 0, function* () { - if (context.models.auth.isSupervisor(args.forGroup)) { - return context.models.group.releaseAdminRights(args.forGroup, context.user.uid); - } - throw new apollo_server_core_1.AuthenticationError("Not a supervisor"); - }); - } - } -}; -//# sourceMappingURL=resolvers.js.map \ No newline at end of file diff --git a/tsbuild/src/graphql/resolvers.js.map b/tsbuild/src/graphql/resolvers.js.map deleted file mode 100644 index 3d08a40..0000000 --- a/tsbuild/src/graphql/resolvers.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"resolvers.js","sourceRoot":"","sources":["../../../src/graphql/resolvers.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/tsbuild/src/index.js b/tsbuild/src/index.js deleted file mode 100644 index 3e27ff2..0000000 --- a/tsbuild/src/index.js +++ /dev/null @@ -1,24 +0,0 @@ -"use strict"; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -/** - * @file Lance le serveur configuré dans {@link app.ts} - * @author manifold - */ -const dotenv_1 = __importDefault(require("dotenv")); //loads environment variables from (hidden) .env file into process.env -dotenv_1.default.config(); -const app_1 = __importDefault(require("./app")); -const colors_1 = __importDefault(require("colors")); -const port = process.env.PORT; -const hostnameConfigMap = { - 'development': 'localhost', - 'staging': '0.0.0.0', - 'production': '0.0.0.0' -}; -const hostname = process.env.HOST || hostnameConfigMap[process.env.TARGET_ENV]; -app_1.default.listen(port, () => { - console.log(colors_1.default.blue("🚀 Server ready on %s:%s."), hostname, port); -}); -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/tsbuild/src/index.js.map b/tsbuild/src/index.js.map deleted file mode 100644 index b6d31be..0000000 --- a/tsbuild/src/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;AAAA;;;GAGG;AACH,oDAA4B,CAAC,sEAAsE;AACnG,gBAAM,CAAC,MAAM,EAAE,CAAC;AAChB,gDAAwB;AACxB,oDAA4B;AAE5B,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;AAC9B,MAAM,iBAAiB,GAAG;IACtB,aAAa,EAAE,WAAW;IAC1B,SAAS,EAAE,SAAS;IACpB,YAAY,EAAE,SAAS;CAC1B,CAAC;AACF,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,iBAAiB,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AAE/E,aAAG,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE;IAClB,OAAO,CAAC,GAAG,CAAC,gBAAM,CAAC,IAAI,CAAC,4BAA4B,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;AAC3E,CAAC,CAAC,CAAC"} \ No newline at end of file diff --git a/tsbuild/src/ldap/export/group.js b/tsbuild/src/ldap/export/group.js deleted file mode 100644 index 9f3d05a..0000000 --- a/tsbuild/src/ldap/export/group.js +++ /dev/null @@ -1,337 +0,0 @@ -"use strict"; -/** - * @file Ce fichier contient la classe de l'API du LDAP qui gère les opérations sur les groupes. Elle est destinée à être exportée pour être utilisée par les resolvers. - * @author hawkspar - */ -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -Object.defineProperty(exports, "__esModule", { value: true }); -const config_1 = require("../internal/config"); -const basics_1 = require("../internal/basics"); -const tools_1 = require("../internal/tools"); -//------------------------------------------------------------------------------------------------------------------------ -// Classes à exporter TBT -//------------------------------------------------------------------------------------------------------------------------ -class Group { - /** - * @memberof LDAP - * @class Group - * @classdesc Cette classe est une des deux classes exportables permettant de faire des opérations sur les groupes. - * @summary Constructeur vide. - */ - constructor() { } - /** - * @memberof LDAP - * @summary Fonction qui renvoit toutes les infos relatives à un groupe particulier. - * @desc Cette fonction utilise {@link Tools.peek} avec l'interface {@link groupData}. Elle rajoute les individus - * @arg {string} gid - Identifiant du groupe - * @return {Promise(groupData)} Informations recueillies ; renvoie une liste de dictionnaire avec le profil complet du groupe au format {@link groupData}. - * @static - * @async - */ - static peek(gid) { - return __awaiter(this, void 0, void 0, function* () { - try { - return tools_1.Tools.peek("group", gid, config_1.groupData); - } - catch (err) { - throw "Erreur lors d'une recherche d'informations sur un groupe."; - } - }); - } - /** - * @memberof LDAP - * @summary Fonction qui retrouve le groupe qui ressemblent à l'input et qui correspond au type fourni. Etape 0 vers un vrai TOL (Trombino On Line) pour les groupes. - * @desc Cette fonction utilise {@link Tools.search}. - * @arg {groupData} input - String entré par l'utilisateur qui ressemble au nom du groupe. - * @return {Promise(string[])} Liste des gid dont le nom ressemble à l'input. - * @static - * @async - */ - static search(data) { - return __awaiter(this, void 0, void 0, function* () { - try { - return tools_1.Tools.search("group", data); - } - catch (err) { - throw "Erreur lors de la recherche approximative d'un groupe."; - } - }); - } - /** - * @memberof LDAP - * @summary Fonction qui permet de rajouter un administrateur à un groupe. - * @desc Cette fonction fait essentiellement appel à {@link Tools.add}. Le nouvel administrateur ne devient pas membre ou porte-parole du groupe pour autant ! - * @arg {string} uid - Identifiant du membre futur admin - * @arg {string} gid - Identifiant du groupe - * @return {boolean} `true` si la modification s'est bien déroulée, false sinon - * @async - * @static - */ - static addAdmin(uid, gid) { - return __awaiter(this, void 0, void 0, function* () { return yield tools_1.Tools.add(uid, gid, "admins"); }); - } - /** - * @memberof LDAP - * @summary Fonction qui permet de supprimer un administrateur. - * @desc Cette fonction fait essentiellement appel à {@link Tools.remove}. - * Elle ne remonte pas les échelons, car cela permettrait à un admin d'un petit groupe de supprimer un admin d'un grand. - * @arg {string} uid - Identifiant de l'admin à dégrader, supposé membre - * @arg {string} gid - Identifiant du groupe - * @return {boolean} `true` si la modification s'est bien déroulée, false sinon - * @async - * @static - */ - static remAdmin(uid, gid) { - return __awaiter(this, void 0, void 0, function* () { return tools_1.Tools.remove(uid, gid, "admins"); }); - } - /** - * @memberof LDAP - * @summary Fonction qui permet de rajouter un porte-parole à un groupe. - * @desc Cette fonction fait essentiellement appel à {@link Tools.add}. Elle ne rajoute pas l'utilisateur au groupe. - * @arg {string} uid - Identifiant du membre futur porte-parole - * @arg {string} gid - Identifiant du groupe - * @return {boolean} `true` si la modification s'est bien déroulée, false sinon - * @async - * @static - */ - static addSpeaker(uid, gid) { - return __awaiter(this, void 0, void 0, function* () { return yield tools_1.Tools.add(uid, gid, "speakers"); }); - } - /** - * @memberof LDAP - * @summary Fonction qui permet de rétrograder un membre du stade de porte-parole d'un groupe au stade d'utilisateur. - * @desc Cette fonction fait essentiellement appel à {@link Tools.remove}. Elle dégrade aussi d'un éventuel statut d'administrateur. - * @arg {string} uid - Identifiant de l'admin à dégrader (pas supposé valide) - * @arg {string} gid - Identifiant du groupe - * @return {boolean} `true` si la modification s'est bien déroulée, false sinon - * @async - * @static - */ - static remSpeaker(uid, gid) { - return __awaiter(this, void 0, void 0, function* () { return yield tools_1.Tools.remove(uid, gid, "speakers"); }); - } - /** - * @memberof LDAP - * @summary Fonction qui permet d'ajouter un utilisateur à un groupe. - * @desc Cette fonction fait essentiellement appel à {@link Tools.add}. - * @arg {string} uid - Identifiant de l'utilisateur à ajouter - * @arg {string} gid - Identifiant du groupe - * @return {Promise(boolean)} `true` si la modification s'est bien déroulée, false sinon - * @async - * @static - */ - static addMember(uid, gid) { - return __awaiter(this, void 0, void 0, function* () { return tools_1.Tools.add(uid, gid, "members"); }); - } - /** - * @memberof LDAP - * @summary Fonction qui permet de supprimer un membre existant d'un groupe. - * @desc Cette fonction fait essentiellement appel à {@link Tools.add}. - * Cette fonction supprime tous les droits de l'utilisateur sur le groupe, mais aussi sur les groupes sources si son statut de membre était hérité. - * @arg {string} uid - Identifiant de l'ex-membre (pas supposé valide) - * @arg {string} gid - Identifiant du groupe - * @return {Promise(boolean)} `true` si la modification s'est bien déroulée, false sinon - * @async - * @static - */ - static remMember(uid, gid) { - return __awaiter(this, void 0, void 0, function* () { - return yield tools_1.Tools.remove(uid, gid, "members"); - // Ce qui suit est une suppression récursive du membre dans tous les groupes fils - let stack = []; - let res = true; - let visited = {}; - stack.push(gid); - while (stack.length > 0) { - let cur_id = stack.pop(); - if (visited[cur_id] == undefined) { - visited[cur_id] = true; - res = res && (yield tools_1.Tools.remove(uid, cur_id, "admins")) && - (yield tools_1.Tools.remove(uid, cur_id, "speakers")) && - (yield tools_1.Tools.remove(uid, cur_id, "members")); - stack.concat(yield basics_1.Basics.searchSingle("group", config_1.ldapConfig.group.childs, cur_id)); - } - } - return res; - }); - } - /** - * @memberof LDAP - * @summary Fonction qui permet d'ajouter un sympathisant à un groupe. - * @desc Cette fonction fait essentiellement appel à {@link Tools.add}. - * @arg {string} uid - Identifiant de l'utilisateur à ajouter - * @arg {string} gid - Identifiant du groupe - * @return {Promise(boolean)} `true` si la modification s'est bien déroulée, false sinon - * @async - * @static - */ - static addFollower(uid, gid) { - return __awaiter(this, void 0, void 0, function* () { return tools_1.Tools.add(uid, gid, "followers"); }); - } - /** - * @memberof LDAP - * @summary Fonction qui permet de supprimer un sympathisant d'un groupe. - * @desc Cette fonction fait essentiellement appel à {@link Tools.add}. - * @arg {string} uid - Identifiant de l'ex-sympathisant (pas supposé valide) - * @arg {string} gid - Identifiant du groupe - * @return {Promise(boolean)} `true` si la modification s'est bien déroulée, false sinon - * @async - * @static - */ - static remFollower(uid, gid) { - return __awaiter(this, void 0, void 0, function* () { return tools_1.Tools.remove(uid, gid, "followers"); }); - } - /** - * @memberof LDAP - * @summary Fonction qui créé un nouveau groupe dans le LDAP. - * @desc Cette fonction fait une utilisation massive d'eval pour anonymiser son code ; c'est mal et cela suppose que beaucoup de soins ont été pris lors de - * l'escape de ses paramètres. Appelle {@link LDAP.add} et {@link LDAP.change}, mais aussi {@link Tools.add} - * pour gérer les groupes du nouvel utilisateur. Cettte application permet de rajouter des utilisateurs à toutes les catégories du groupe. - * @arg {groupData} data - Dictionnaire des informations utilisateurs (voir détail des champs dans ldapConfig.json) - * @return {Promise(boolean)} `true` si la modification s'est bien déroulée, false sinon - * @async - * @static - */ - static create(data) { - return __awaiter(this, void 0, void 0, function* () { - // Calcul d'un dictionnaire d'ajout - let vals = {}; - // gid de base généré à partir du nom standardisé, pas à partir de l'entrée 'gid' ! - try { - tools_1.Tools.generateReadableId(data['name']).then(id => { - vals[config_1.ldapConfig.key_id] = id; - vals[config_1.ldapConfig.group['name']] = id; - }); - } - catch (err) { - throw "Erreur lors de la génération d'un hruid pour créer un nouveau groupe."; - } - let gid = vals[config_1.ldapConfig.key_id]; - // Ecriture de toutes les valeurs directement inscrites dans le LDAP - for (let key_att in data) { - vals[config_1.ldapConfig.group[key_att]] = data[key_att]; - } - ; - // Appel à la fonction de base - if (!(yield basics_1.Basics.add("group", vals))) { - throw "Erreur lors de la création d'une nouvelle feuille dans l'arbre des groupes."; - } - // Certains champs nécessitent de petits calculs - let vals2 = {}; - // ?! - vals2[config_1.ldapConfig.group['password']] = "{CRYPT}" + data['password']; - // Génération id aléatoire et test contre le LDAP - try { - tools_1.Tools.generateId(config_1.ldapConfig.group["idNumber"], "group").then(id => { vals2[config_1.ldapConfig.group['idNumber']] = id; }); - } - catch (err) { - throw "Erreur lors de la génération d'un id numérique pour créer un nouveau groupe."; - } - // Code root - vals2[config_1.ldapConfig.group['cleanFullName']] = data['name'].replace(':', ';').toLowerCase().normalize('UFD'); - // Inscription des valeurs calculées par effet de bord - if (!(yield basics_1.Basics.change("group", gid, "add", vals2))) { - throw "Erreur lors de l'ajout des valeurs intelligentes du nouveau groupe."; - } - ["posixGroup", "brGroup"].forEach(cst => { - let vals3 = {}; - vals3[config_1.ldapConfig.group['classes']] = cst; - basics_1.Basics.change("group", gid, "add", vals3).then(res => { - if (!res) { - throw "Erreur lors de l'ajout des valeurs constantes du nouveau groupe."; - } - }); - }); - // Utilisation des fonctions adaptées pour assurer la cohérence de l'ensemble - for (let cat in config_1.categories) { - data[cat].forEach(uid => { - tools_1.Tools.add(uid, gid, cat).then(res => { - if (!res) { - throw "Erreur de l'ajout d'un membre au nouveau groupe."; - } - }); - }); - } - return true; - }); - } - /** - * @memberof LDAP - * @summary Fonction qui supprime un groupe du LDAP. - * @desc Cette fonction commence par gérer les groupes du membre puis le supprime entièrement. A modifier une fois que le LDAP incluerait les groupes administres par une utilisateur. - * Appelle {@link LDAP.clear} bien sûr, mais aussi {@link Tools.remove} pour gérer les groupes de l'utilisateur sortant. - * @arg {string} gid - gid de la victime - * @return {Promise(boolean)} `true` si la modification s'est bien déroulée, false sinon - * @async - * @static - */ - static delete(gid) { - return __awaiter(this, void 0, void 0, function* () { - try { - // Gestion des catégories en bloc d'abord - let profil = yield Group.peek(gid); - for (let cat of config_1.categories) { - profil[config_1.ldapConfig.group[cat]].forEach(function quickPartRemUser(uid) { - return __awaiter(this, void 0, void 0, function* () { - // Modification des profils de tous les utilisateurs - let lg = yield tools_1.Tools.get(uid, "user", cat); - // Vérifie que l'utilisateur est pas déjà viré pour users - if (lg.includes(gid)) { - // Supprime tous les groupes - if (!(yield basics_1.Basics.change("user", uid, "del", config_1.ldapConfig.user[cat]))) { - throw "Erreur lors de la suppression de tous les groupes du membre."; - } - // Les rajoute un par un, sauf pour le groupe supprimé - lg.forEach(id => { - if (id != gid) { - tools_1.Tools.add(uid, id, cat).then(res => { - if (!res) { - throw "Erreur lors du ré-ajout des autres groupes"; - } - }); - } - }); - } - }); - }); - } - // Elimination - if (!(yield basics_1.Basics.clear("group", gid))) { - throw "Erreur lors de la suppression de la feuille dans l'arbre des groupes."; - } - return true; - } - catch (err) { - throw "Erreur lors de l'obtention du profil d'un groupe pour le supprimer."; - } - }); - } - /** - * @memberof LDAP - * @summary Fonction qui édite un groupe existant dans le LDAP. Sans influence sur ses membres ou admins. - * @desc Appelle {@link Tools.edit}. - * @arg {groupData} data - Dictionnaire des informations du groupe. - * @return {Promise(boolean)} `true` si la modification s'est bien déroulée, false sinon - * @async - * @static - */ - static edit(data) { - return __awaiter(this, void 0, void 0, function* () { - try { - return tools_1.Tools.edit("group", data); - } - catch (err) { - throw "Erreur lors de la modification d'un groupe."; - } - }); - } -} -exports.Group = Group; -//# sourceMappingURL=group.js.map \ No newline at end of file diff --git a/tsbuild/src/ldap/export/group.js.map b/tsbuild/src/ldap/export/group.js.map deleted file mode 100644 index 4dc5b68..0000000 --- a/tsbuild/src/ldap/export/group.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"group.js","sourceRoot":"","sources":["../../../../src/ldap/export/group.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/tsbuild/src/ldap/export/user.js b/tsbuild/src/ldap/export/user.js deleted file mode 100644 index 900d881..0000000 --- a/tsbuild/src/ldap/export/user.js +++ /dev/null @@ -1,234 +0,0 @@ -"use strict"; -/** - * @file Ce fichier contient la classe de l'API du LDAP qui gère les opérations sur les groupes. Elle est destinée à être exportée pour être utilisée par les resolvers. - * @author hawkspar - */ -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -Object.defineProperty(exports, "__esModule", { value: true }); -const config_1 = require("../internal/config"); -exports.userData = config_1.userData; -const basics_1 = require("../internal/basics"); -const tools_1 = require("../internal/tools"); -class User { - /** - * @memberof LDAP - * @class User - * @classdesc Cette classe est une des deux classes exportables permettant de faire des opérations sur les utilisateurs. - * @summary Constructeur vide. - */ - constructor() { } - /** - * @memberof LDAP - * @summary Fonction qui renvoit les infos de base relatives à un utilisateur particulier. - * @desc Cette fonction utilise {@link Tools.peek} avec l'interface {@link userData}. - * @arg {string} uid - Identifiant de l'utilisateur, supposé valide. - * @return {Promise(userData)} Informations recueillies au format {@link userData}. - * @static - * @async - */ - static peek(uid) { - return __awaiter(this, void 0, void 0, function* () { - try { - let data = yield tools_1.Tools.peek("user", uid, config_1.userData); - for (let cat in config_1.categories) { - data[cat] = yield basics_1.Basics.searchSingle("group", config_1.ldapConfig.group.key_id, "*", config_1.ldapConfig.group[cat] + "=" + uid); - } - return data; - } - catch (err) { - throw "Error while peeking a user."; - } - }); - } - /** - * @memberof LDAP - * @summary Fonction qui retrouve les uid des paxs validant les critères de recherche. Utiliser {@link User.peek} au cas par cas après pour obtenir les vraies infos. - * @desc Cette fonction utilise {@link Tools.search}. - * @arg {userData} data - Dictionnaire contenant les données nécessaires à la recherche. Les valeurs sont celles entrées par l'utilisateur et sont par hypothèse - * comme des sous-parties compactes des valeurs renvoyées. Tous les champs ci-dessous peuvent être indifféremment des listes (par exemple pour chercher un membre - * de plusieurs groupes) ou des éléments isolés. Si un champ n'est pas pertinent, le mettre à '' ou undefined. - * @return {Promise(string[])} gids des profils qui "match" les critères proposés. - * @static - * @async - */ - static search(data) { - return __awaiter(this, void 0, void 0, function* () { - try { - return tools_1.Tools.search("user", data); - } - catch (err) { - throw "Erreur lors de la recherche approximative d'un utilisateur."; - } - }); - } - /** - * @memberof LDAP - * @summary Fonction qui créé un nouvel utilisateur dans le LDAP. - * @desc Appelle {@link LDAP.add} bien sûr, mais aussi {@link Tools.add} pour gérer les groupes du nouvel utilisateur. - * @arg {userData} data - Dictionnaire des informations utilisateurs. Des erreurs peuvent apparaître si tous les champs ne sont pas remplis. - * Cette application permet de rejoindre des groupes en masse pour toute catégorie. - * @return {Promise(boolean)} `true` si la modification s'est bien déroulée, false sinon - * @async - * @static - */ - static create(data) { - return __awaiter(this, void 0, void 0, function* () { - // Calcul d'un dictionnaire d'ajout - let vals = {}; - // uid de base généré à partir de nom et prénom, plus potentiellement promo et un offset - // MEF mélange de Promise et de fonction standard - try { - tools_1.Tools.generateUid(data['givenName'], data['lastName'], data['birthdate']).then(id => { vals[config_1.ldapConfig.key_id] = id; }); - } - catch (err) { - throw "Erreur lors de la génération d'un hruid pour un nouvel utilisateur."; - } - let uid = vals[config_1.ldapConfig.key_id]; - // Génère une erreur si un champ n'est pas rempli - for (let key_att in data) { - // Ecriture de toutes les valeurs uniques - if (!Array.isArray(data[key_att])) { - vals[config_1.ldapConfig.user[key_att]] = data[key_att]; - } - } - // Appel à la fonction de base - if (!(yield basics_1.Basics.add("user", vals))) { - throw "Erreur de l'ajout de la feuille à l'arbre utilisateur."; - } - for (let key_att in data) { - // Modifications multiples pour avoir plusieurs champs de même type ; boucle sur les attributs multiples - if (Array.isArray(data[key_att])) { - // On rajoute chaque valeur en entrée - data[key_att].forEach(val => { - let vals2 = {}; - vals2[config_1.ldapConfig.user[key_att]] = val; - basics_1.Basics.change("user", uid, "add", vals2).then(res => { - if (!res) { - throw "Erreur lors de l'ajout d'une valeur pour un champ à valeurs multiples à la feuille du nouvel utilisateur."; - } - }); - }); - } - } - // Certains champs nécessitent de petits calculs - let vals3 = {}; - // ldapConfiguration du mot de passe utilisateur - // Le préfixe {CRYPT} signifie que le mdp est hashé dans OpenLDAP voir : https://www.openldap.org/doc/admin24/security.html - vals3[config_1.ldapConfig.user['password']] = "{CRYPT}" + data['password']; - // Ecriture d'un surnom s'il y a lieu - if ((data['nickname'] != undefined) && (data['nickname'] != '')) { - vals3[config_1.ldapConfig.user['nickname']] = data['nickname']; - } - try { - // Génération id aléatoire unique - vals3[config_1.ldapConfig.user['id']] = yield tools_1.Tools.generateId(config_1.ldapConfig.user['id'], "user"); - } - catch (err) { - throw "Erreur lors de la génération d'un id numérique pour un nouvel utilisateur."; - } - // Code root - vals3[config_1.ldapConfig.user['cleanFullName']] = data['fullName'].replace(':', ';').toLowerCase().normalize('UFD'); - // Inscription des valeurs calculées - if (!(yield basics_1.Basics.change("user", uid, "add", vals3))) { - throw "Erreur lors de l'ajout des valeurs calculées à la feuille du nouvel utilisateur."; - } - ["posixAccount", "shadowAccount", "brUser"].forEach(cst => { - let val3 = {}; - vals3[config_1.ldapConfig.user['class']] = cst; - basics_1.Basics.change("user", uid, "add", vals3).then(res => { - if (!res) { - throw "Erreur lors de l'ajout d'une valeur constante à la feuille du nouvel utilisateur."; - } - }); - }); - // Ajout dans les groupes à la catégorie voulue - for (let cat of config_1.categories) { - for (let gid of data[cat]) { - tools_1.Tools.add(uid, gid, cat); - } - } - return true; - }); - } - //------------------------------------------------------------------------------------------------------------------------ - // Fonctions de suppression TBT - //------------------------------------------------------------------------------------------------------------------------ - /** - * @memberof LDAP - * @summary Fonction qui supprime un utilisateur du LDAP. - * @desc Cette fonction commence par gérer les groupes du membre puis le supprime entièrement. - * Appelle {@link LDAP.clear} bien sûr, mais aussi {@link Tools.remove} pour gérer les groupes de l'utilisateur sortant. - * @arg {string} uid - uid de la victime - * @return {Promise(boolean)} `true` si la modification s'est bien déroulée, false sinon - * @async - * @static - */ - static delete(uid) { - return __awaiter(this, void 0, void 0, function* () { - try { - // Gestion des groupes d'abord - let profil = yield User.peek(uid); - for (let cat of config_1.categories) { - profil[config_1.ldapConfig.user[cat]].forEach(function (gid) { - return __awaiter(this, void 0, void 0, function* () { - // Enlever de la liste des membres - let lm = yield tools_1.Tools.get(gid, "group", cat); - if (lm.includes(uid)) { - // Supprime tous les membres - if (!(yield basics_1.Basics.change("group", gid, "del", config_1.ldapConfig.group[cat]))) { - throw "Erreur lors de la suppression de tous les membres du groupe."; - } - // Les rajoute un par un, sauf pour le supprimé - lm.forEach(id => { - if (id != uid) { - tools_1.Tools.add(id, gid, cat).then(res => { - if (!res) { - throw "Erreur lors du ré-ajout d'un autre membre"; - } - }); - } - }); - } - }); - }); - } - } - catch (err) { - throw "Erreur lors de l'obtention des informations de l'utilisateur à supprimer."; - } - // Elimination - if (!basics_1.Basics.clear("user", uid)) { - throw "Erreur lors de la suppression de l'utilisateur."; - } - return true; - }); - } - /** - * @memberof LDAP - * @summary Fonction qui édite un utilisateur existant dans le LDAP. - * @desc Appelle simplement {@link Tools.edit}. Sans effet sur les groupes de l'utilisateur concerné. - * @arg {userData} data - Dictionnaire des informations utilisateurs - * @return {Promise(boolean)} `true` si la modification s'est bien déroulée, false sinon - * @async - * @static - */ - static edit(data) { - return __awaiter(this, void 0, void 0, function* () { - try { - return tools_1.Tools.edit("user", data); - } - catch (err) { - throw "Erreur lors de la modification d'un utilisateur."; - } - }); - } -} -exports.User = User; -//# sourceMappingURL=user.js.map \ No newline at end of file diff --git a/tsbuild/src/ldap/export/user.js.map b/tsbuild/src/ldap/export/user.js.map deleted file mode 100644 index 2a3beec..0000000 --- a/tsbuild/src/ldap/export/user.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"user.js","sourceRoot":"","sources":["../../../../src/ldap/export/user.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/tsbuild/src/ldap/internal/basics.js b/tsbuild/src/ldap/internal/basics.js deleted file mode 100644 index db06c51..0000000 --- a/tsbuild/src/ldap/internal/basics.js +++ /dev/null @@ -1,270 +0,0 @@ -"use strict"; -/** - * @file Ce fichier regroupe les fonctions fondamentales aux interactions avec le LDAP. - * C'est ici que tout le filtrage est opéré, au plus bas niveau. - * Toutes les fonctions écrites ici sont asynchrones et renvoient des Promises ce qui nécessite de les appeler avec la synthaxe - * un peu particulière `f(args).then(res => ...)` pour exploiter leur résultat. - * @author hawkspar - */ -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -const ldapjs_1 = __importDefault(require("ldapjs")); -// Toutes les entrées utilisateur sont escapées par sécurité -const ldap_escape_1 = __importDefault(require("ldap-escape")); -// Fichier de ldapConfig du ldap -const config_1 = require("./config"); -// Connection au serveur LDAP avec des temps de timeout arbitraires -var client = ldapjs_1.default.createClient({ url: config_1.ldapConfig.server }); -//------------------------------------------------------------------------------------------------------------------------ -// Fonctions de base agissant sur le LDAP -//------------------------------------------------------------------------------------------------------------------------ -class Basics { - /** - * @class Basics - * @classdesc Cette classe est la brique de base du fichier tout entier puisqu'elle contient les functions qui agissent directement sur le LDAP. - * @memberof LDAP - * @summary Constructeur vide. - */ - constructor() { } - /** - * @memberof LDAP - * @summary Fonction qui sert à s'identifier sur le LDAP. - * @desc Assez important en terme de sécurité, de gestion de conflit, et de droit d'accès. Méthode ldapjs - * (voir [`Client API`](http://ldapjs.org/client.html) méthode bind). - * @arg {string} dn - Nom de domaine ; identifiant de l'utilisateur cherchant à se connecter - * @arg {string} password - Mot de passe de l'utilisateur cherchant à se connecter - * @returns {Promise(boolean)} `true` si l'opération s'est bien déroulée, `false` sinon. - * @static - * @async - */ - static bind(dn, password) { - return __awaiter(this, void 0, void 0, function* () { - // Escape DN as everywhere in this file, but password is taken as is - client.bind(dn, password, res => { - // Gestion erreur - try { - res; - } - catch (err) { - throw "Erreur lors de la connection au LDAP."; - } - }); - // End with a boolean - return true; - }); - } - /** - * @memberof LDAP - * @summary Fonction qui sert à s'identifier sur le LDAP avec plein pouvoirs. - * @desc Appelle {@link bind} avec un utilisateur tout puissant. - * @returns {Promise(boolean)} `true` si l'opération s'est bien déroulée, `false` sinon. - * @static - * @async - */ - static adminBind() { - return __awaiter(this, void 0, void 0, function* () { return Basics.bind(config_1.credentialsLdapConfig.dn, config_1.credentialsLdapConfig.password); }); - } - /** - * @memberof LDAP - * @summary Fonction qui sert à se déconnecter du LDAP. - * @desc Assez important en terme de sécurité, de gestion de conflit, et de droit d'accès. - * Fait appel à {@link Basics.bind} avec deux champs vides. - * @returns {Promise(boolean)} `true` si l'opération s'est bien déroulée, `false` sinon. - * @static - * @async - */ - static unbind() { - return __awaiter(this, void 0, void 0, function* () { return Basics.bind("", ""); }); - } - /** - * @callback entryHandler - * @arg entry {*} - Convoluted ldap.js search result object - */ - /** - * @memberof LDAP - * @summary Fonction qui interroge le LDAP selon un protocole spécifié en argument et modifie une liste pour y insérer les valeurs trouvées. - * @desc Cette fonction utilise ldapjs (voir [`Client API`](http://ldapjs.org/client.html) méthode search). Cette fonction fait une demande au LDAP - * qu'elle filtre selon un schéma prédéfini dans `filter` et à chaque résultat (event SearchEntry) le met dans une liste, et renvoit la liste à l'issue (event end). - * @arg {'gr'|'us'} domain - Emplacement de la requête (groupe ou utilisateur) - * @arg {string[]} attributes - Attributs à renvoyer - * @arg {string} id [null] - Identifiant facultatif pour une recherche triviale en o(1) - * @arg {string} filter ["(objectClass=*)"] - Filtre logique de la recherche (format [`RFC2254`](https://tools.ietf.org/search/rfc2254)) déjà passé au ldapEscape - * @arg {entryHandler} handler - Wrapper pour gérer les requêtes simples ou multiples - * @return {void} Utilise handler pour gérer ses résultats au fur et à mesure - * @static - * @async - */ - static search(domain, attributes, id, filter, handler) { - Basics.adminBind(); - let dn = ""; - if (id != null) { - dn += config_1.ldapConfig.key_id + '=' + ldap_escape_1.default.dn("${txt}", { txt: id }) + ','; - } - dn += config_1.ldapConfig.dn[domain]; - // Interrogation LDAP selon filter - let promise = new Promise(function (resolve, reject) { - client.search(dn, { - "scope": "sub", - "filter": filter, - "attributes": attributes - }, (err, res) => { - // Gestion erreur ; pb car pas simple true / autre en sortie - if (err) { - throw "Erreur lors de la recherche sur le LDAP."; - } - else { - // Dès que la recherche renvoit une entrée, on stocke les attributs qui nous intéresse - res.on('searchEntry', entry => { handler(entry); }); - // Si la recherche renvoie une erreur, on renvoit - res.on('error', resErr => { throw resErr; }); - // Quand la recherche est finie on se déconnecte - res.on('end', _ => { Basics.unbind(); resolve(); }); - } - }); - }); - return promise; - } - /** - * @memberof LDAP - * @summary Fonction qui interroge le LDAP selon un protocole spécifié en argument et renvoit une liste de valeurs trouvées. - * @desc Cette fonction utilise {@link LDAP.search} directement. - * @arg {'gr'|'us'} domain - Emplacement de la requête (groupe ou utilisateur) - * @arg {string} attribute - Attribut unique à renvoyer - * @arg {string} id [null] - Identifiant facultatif pour une recherche triviale en o(1) - * @arg {string} filter ["(objectClass=*)"] - Filtre logique de la recherche (format [`RFC2254`](https://tools.ietf.org/search/rfc2254)) déjà passé au ldapEscape - * @return {Promise(string[])} Résultats de la recherche ; soit une liste de valeurs d'attributs, - * soit une liste de dictionnaires si on veut plus d'un attribut (les clés du dictionnaire sont celles du LDAP) - * @static - * @async - */ - static searchSingle(domain, attribute, id = null, filter = "(objectClass=*)") { - return __awaiter(this, void 0, void 0, function* () { - let vals = []; - yield Basics.search(domain, [attribute], id, filter, entry => { - // Cas un seul attribut où le résultat est une liste directement - vals.push(entry.object[attribute]); - }); - return vals; - }); - } - /** - * @memberof LDAP - * @summary Fonction qui interroge le LDAP selon un protocole spécifié en argument et renvoit les valeurs trouvées. - * @desc Cette fonction utilise ldapjs (voir [`Client API`](http://ldapjs.org/client.html) méthode search). Cette fonction fait une demande au LDAP - * qu'elle filtre selon un schéma prédéfini dans `filter` et à chaque résultat (event SearchEntry) le met dans une liste, et renvoit la liste à l'issue (event end). - * @arg {'gr'|'us'} domain - Emplacement de la requête (groupe ou utilisateur) - * @arg {string[]} attributes - Liste des attributs qui figureront dans le résultat final ; peut aussi être un seul élément - * @arg {string} id [null] - Identifiant facultatif pour une recherche triviale en o(1) - * @arg {string} filter ["(objectClass=*)"] - Filtre logique de la recherche (format [`RFC2254`](https://tools.ietf.org/search/rfc2254)) déjà passé au ldapEscape - * @return {Promise(Array<dic>)} Résultats de la recherche ; soit une liste de valeurs d'attributs, - * soit une liste de dictionnaires si on veut plus d'un attribut (les clés du dictionnaire sont celles du LDAP) - * @static - * @async - */ - static searchMultiple(domain, attributes, id = null, filter = "(objectClass=*)") { - return __awaiter(this, void 0, void 0, function* () { - let vals = []; - yield Basics.search(domain, attributes, id, filter, entry => { - // Cas plusieurs attributs donc résultat dictionnaire - vals.push({}); - attributes.forEach(attribute => { - vals.slice(-1)[0][attribute] = entry.object[attribute]; - }); - }); - return vals; - }); - } - //TBT - /** - * @memberof LDAP - * @summary Fonction qui permet de modifier un élément sur le LDAP. Gestion intelligente de l'appartenance à un binet. - * @desc Cette fonction traite la demande avec ldapjs (voir [`Client API`](http://ldapjs.org/client.html) méthode modify). - * @arg {'gr'|'us'} domain - Emplacement de la requête (groupe ou utilisateur) - * @arg {string} id - Identifiant unique de la feuille à modifier - * @arg {"add"|"del"|"replace"} op - Operation à réaliser sur le LDAP. Trois opération sont possibles ; "add", qui rajoute des attributs et qui peut créer des doublons, - * "del" qui en supprime, et "replace" qui remplace du contenu par un autre. - * @arg {dic} mod - Dictionnaire contenant les attributs à modifier et les nouvelles valeurs des attributs. - * @arg {string} mod[key] - Nouvelle valeur de l'attribut key. Une nouvelle valeur vide ("") est équivalent à la suppression de cet attribut. - * @return {Promise(boolean)} `true` si la modification s'est bien déroulée, `false` sinon. - * @static - * @async - */ - static change(domain, id, op, mod) { - return __awaiter(this, void 0, void 0, function* () { - Basics.adminBind(); - let dn = config_1.ldapConfig.key_id + '=' + id + ','; - dn += config_1.ldapConfig.dn[domain]; - // Modification LDAP selon dn fourni en argument (pourrait prendre une liste de Changes) - client.modify(ldap_escape_1.default.dn("${txt}", { txt: dn }), new ldapjs_1.default.Change({ - operation: op, - modification: mod, - }), err => { - throw "Erreur lors d'une opération de modification sur le LDAP."; - }); - Basics.unbind(); - return true; - }); - } - //TBT - /** - * @memberof LDAP - * @summary Fonction qui permet de rajouter un élément sur le LDAP. - * @desc Cette fonction traite la demande avec ldapjs (voir [`Client API`](http://ldapjs.org/client.html) méthode add). - * @arg {'gr'|'us'} domain - Emplacement de la requête (groupe ou utilisateur) - * @arg {Object.<string, string>} vals - Dictionnaire contenant les valeurs à créer (contient un champ en ldapConfig.key_id) - * @arg {Object} vals[key] - Nouvelle valeur pour le champ key - * @return {Promise(boolean)} `true` si la modification s'est bien déroulée, false sinon. - * @static - * @async - */ - static add(domain, vals) { - return __awaiter(this, void 0, void 0, function* () { - Basics.adminBind(); - let dn = config_1.ldapConfig.key_id + "=" + vals[config_1.ldapConfig.key_id]; - dn += config_1.ldapConfig.dn[domain]; - // Ajout LDAP selon la ldapConfiguration en argument - client.add(ldap_escape_1.default.dn("${txt}", { txt: dn }), vals, err => { - throw "Erreur lors d'une opération d'ajout sur le LDAP."; - }); - Basics.unbind(); - return true; - }); - } - //TBT - /** - * @memberof LDAP - * @summary Fonction qui permet de supprimer une feuille du LDAP. - * @desc Cette fonction traite la demande avec ldapjs (voir [`Client API`](http://ldapjs.org/client.html) méthode del). - * Elle est différente de modify avec "del" car elle affecte directement une feuille et pas un attribut. - * @arg {'gr'|'us'} domain - Emplacement de la requête (groupe ou utilisateur) - * @arg {string} id - Identifiant unique de la cible - * @return {Promise(boolean)} `true` si la modification s'est bien déroulée, false sinon - * @static - * @async - */ - static clear(domain, id) { - return __awaiter(this, void 0, void 0, function* () { - Basics.adminBind(); - let dn = config_1.ldapConfig.key_id + '=' + id + ','; - dn += config_1.ldapConfig.dn[domain]; - // Suppression LDAP - client.del(ldap_escape_1.default.dn("${txt}", { txt: dn }), err => { - throw "Erreur lors d'une opération de suppression sur le LDAP."; - }); - Basics.unbind(); - return true; - }); - } -} -exports.Basics = Basics; -//# sourceMappingURL=basics.js.map \ No newline at end of file diff --git a/tsbuild/src/ldap/internal/basics.js.map b/tsbuild/src/ldap/internal/basics.js.map deleted file mode 100644 index ad889f7..0000000 --- a/tsbuild/src/ldap/internal/basics.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"basics.js","sourceRoot":"","sources":["../../../../src/ldap/internal/basics.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;;;;;;;;;;;AAEH,oDAA0B;AAC1B,4DAA4D;AAC5D,8DAAqC;AACrC,gCAAgC;AAChC,qCAA2D;AAE3D,mEAAmE;AACnE,IAAI,MAAM,GAAG,gBAAI,CAAC,YAAY,CAAC,EAAE,GAAG,EAAE,mBAAU,CAAC,MAAM,EAAC,CAAC,CAAC;AAO1D,0HAA0H;AAC1H,yCAAyC;AACzC,0HAA0H;AAE1H,MAAa,MAAM;IACf;;;;;OAKG;IACH,gBAAe,CAAC;IAEhB;;;;;;;;;;OAUG;IACH,MAAM,CAAO,IAAI,CAAC,EAAU,EAAE,QAAgB;;YAC1C,oEAAoE;YACpE,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,QAAQ,EAAE,GAAG,CAAC,EAAE;gBAC5B,iBAAiB;gBACjB,IAAI;oBAAE,GAAG,CAAC;iBAAE;gBACZ,OAAM,GAAG,EAAE;oBACP,MAAM,uCAAuC,CAAC;iBACjD;YACL,CAAC,CAAC,CAAC;YACH,qBAAqB;YACrB,OAAO,IAAI,CAAC;QAChB,CAAC;KAAA;IAED;;;;;;;OAOG;IACH,MAAM,CAAO,SAAS;8DAAwB,OAAO,MAAM,CAAC,IAAI,CAAC,8BAAqB,CAAC,EAAE,EAAE,8BAAqB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;KAAA;IAE7H;;;;;;;;OAQG;IACH,MAAM,CAAO,MAAM;8DAAwB,OAAO,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;KAAA;IAGxE;;;OAGG;IAEH;;;;;;;;;;;;;OAaG;IACH,MAAM,CAAC,MAAM,CAAC,MAAsB,EAAE,UAAoB,EAAE,EAAU,EAAE,MAAc,EAAE,OAA8B;QAClH,MAAM,CAAC,SAAS,EAAE,CAAC;QACnB,IAAI,EAAE,GAAE,EAAE,CAAC;QACX,IAAI,EAAE,IAAI,IAAI,EAAM;YAAE,EAAE,IAAE,mBAAU,CAAC,MAAM,GAAC,GAAG,GAAE,qBAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,EAAE,GAAG,EAAE,EAAE,EAAC,CAAC,GAAE,GAAG,CAAC;SAAE;QAC5F,EAAE,IAAE,mBAAU,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;QAC1B,kCAAkC;QAClC,IAAI,OAAO,GAAG,IAAI,OAAO,CAAO,UAAS,OAAO,EAAE,MAAM;YACpD,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE;gBACd,OAAO,EAAE,KAAK;gBACd,QAAQ,EAAE,MAAM;gBAChB,YAAY,EAAE,UAAU;aAC3B,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;gBACZ,4DAA4D;gBAC5D,IAAI,GAAG,EAAE;oBACL,MAAM,0CAA0C,CAAC;iBACpD;qBAAM;oBACH,sFAAsF;oBACtF,GAAG,CAAC,EAAE,CAAC,aAAa,EAAE,KAAK,CAAC,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBACpD,iDAAiD;oBACjD,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,GAAG,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC7C,gDAAgD;oBAChD,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;iBACvD;YACL,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC;IACnB,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,MAAM,CAAO,YAAY,CAAC,MAAsB,EAAE,SAAiB,EAAE,KAAW,IAAI,EAAE,SAAe,iBAAiB;;YAClH,IAAI,IAAI,GAAC,EAAE,CAAC;YACZ,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,MAAM,EAAG,KAAK,CAAC,EAAE;gBAC1D,gEAAgE;gBAChE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;YACvC,CAAC,CAAC,CAAC;YACH,OAAO,IAAI,CAAC;QAChB,CAAC;KAAA;IAED;;;;;;;;;;;;;OAaG;IACH,MAAM,CAAO,cAAc,CAAC,MAAsB,EAAE,UAAoB,EAAE,KAAW,IAAI,EAAE,SAAe,iBAAiB;;YACvH,IAAI,IAAI,GAAC,EAAE,CAAC;YACZ,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,EAAG,KAAK,CAAC,EAAE;gBACzD,qDAAqD;gBACrD,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACd,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;oBAC3B,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;gBACzD,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YACH,OAAO,IAAI,CAAC;QAChB,CAAC;KAAA;IAED,KAAK;IACL;;;;;;;;;;;;;OAaG;IACH,MAAM,CAAO,MAAM,CAAC,MAAsB,EAAE,EAAU,EAAE,EAAyB,EAAE,GAAQ;;YACvF,MAAM,CAAC,SAAS,EAAE,CAAC;YACnB,IAAI,EAAE,GAAG,mBAAU,CAAC,MAAM,GAAC,GAAG,GAAC,EAAE,GAAC,GAAG,CAAA;YACrC,EAAE,IAAE,mBAAU,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;YAC1B,wFAAwF;YACxF,MAAM,CAAC,MAAM,CAAC,qBAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,EAAC,GAAG,EAAE,EAAE,EAAC,CAAC,EAAE,IAAI,gBAAI,CAAC,MAAM,CAAC;gBAC9D,SAAS,EAAE,EAAE;gBACb,YAAY,EAAE,GAAG;aAEpB,CAAC,EAAE,GAAG,CAAC,EAAE;gBACN,MAAM,0DAA0D,CAAC;YACrE,CAAC,CAAC,CAAC;YACH,MAAM,CAAC,MAAM,EAAE,CAAC;YAChB,OAAO,IAAI,CAAC;QAChB,CAAC;KAAA;IAED,KAAK;IACL;;;;;;;;;;OAUG;IACH,MAAM,CAAO,GAAG,CAAC,MAAsB,EAAE,IAAI;;YACzC,MAAM,CAAC,SAAS,EAAE,CAAC;YACnB,IAAI,EAAE,GAAG,mBAAU,CAAC,MAAM,GAAC,GAAG,GAAC,IAAI,CAAC,mBAAU,CAAC,MAAM,CAAC,CAAC;YACvD,EAAE,IAAE,mBAAU,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;YAC1B,oDAAoD;YACpD,MAAM,CAAC,GAAG,CAAC,qBAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,EAAE,GAAG,EAAE,EAAE,EAAC,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,EAAE;gBACxD,MAAM,kDAAkD,CAAC;YAC7D,CAAC,CAAC,CAAC;YACH,MAAM,CAAC,MAAM,EAAE,CAAC;YAChB,OAAO,IAAI,CAAC;QAChB,CAAC;KAAA;IAED,KAAK;IACL;;;;;;;;;;OAUG;IACH,MAAM,CAAO,KAAK,CAAC,MAAsB,EAAE,EAAU;;YACjD,MAAM,CAAC,SAAS,EAAE,CAAC;YACnB,IAAI,EAAE,GAAG,mBAAU,CAAC,MAAM,GAAC,GAAG,GAAC,EAAE,GAAC,GAAG,CAAA;YACrC,EAAE,IAAE,mBAAU,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;YAC1B,mBAAmB;YACnB,MAAM,CAAC,GAAG,CAAC,qBAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,EAAC,GAAG,EAAE,EAAE,EAAC,CAAC,EAAE,GAAG,CAAC,EAAE;gBACjD,MAAM,yDAAyD,CAAC;YACpE,CAAC,CAAC,CAAC;YACH,MAAM,CAAC,MAAM,EAAE,CAAC;YAChB,OAAO,IAAI,CAAC;QAChB,CAAC;KAAA;CACJ;AArOD,wBAqOC"} \ No newline at end of file diff --git a/tsbuild/src/ldap/internal/config.js b/tsbuild/src/ldap/internal/config.js deleted file mode 100644 index 6fbcdf5..0000000 --- a/tsbuild/src/ldap/internal/config.js +++ /dev/null @@ -1,84 +0,0 @@ -"use strict"; -/** - * Namespace qui regroupe toutes les fonctions en rapport avec le LDAP - API et fonctions internes - * @namespace LDAP - * @file Importe la configuration du LDAP au sein de l'application, et remplace certaines valeurs en fonction des variables d'environnement. - * @memberof LDAP - * @author manifold, hawkspar - */ -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -const fs_1 = __importDefault(require("fs")); -const path_1 = __importDefault(require("path")); -const colors_1 = __importDefault(require("colors")); -const dotenv_1 = __importDefault(require("dotenv")); -dotenv_1.default.config({ path: path_1.default.resolve(__dirname, '..', '..', '..', './.env') }); -// Point central ; tous les champs de la BDD sont 'cachés' dans config.json et pas visibles directement -let path_config = path_1.default.resolve(__dirname, '..', '..', '..', '..', './ldap_config.json'); -console.log(colors_1.default.cyan("Loading LDAP config file from " + path_config)); -exports.ldapConfig = JSON.parse(fs_1.default.readFileSync(path_config).toString()); -// Override config server from environment -if (process.env.LDAP_URI != null) { - exports.ldapConfig.server = process.env.LDAP_URI; -} -else { - if (process.env.TARGET_ENV == `production`) { - exports.ldapConfig.server = exports.ldapConfig.server_prod; - } - else { - exports.ldapConfig.server = exports.ldapConfig.server_dev; - } -} -// Gestion des super-identifiants -let path_credentials = path_1.default.resolve(__dirname, '..', '..', '..', '..', 'ldap_credentials.json'); -console.log(colors_1.default.cyan("Loading LDAP credentials from " + path_credentials)); -exports.credentialsLdapConfig = JSON.parse(fs_1.default.readFileSync(path_credentials).toString()); -// Data formats and useful constants -exports.categories = ["admins", "speakers", "members", "followers"]; -/** - * @class userData - * @desc Interface avec toutes les données extractables pour un utilisateur. - * @var {string?} uid - Identifiant utilisateur - * @var {string?} password - Mot de passe généré en amont (utilisé seulement à l'initialialisation, pas stocké bien sûr) - * @var {string?} givenName - Prénom - * @var {string?} lastName - Nom - * @var {string?} nickname - Surnom - * @var {string?} gender - Sexe - * @var {string?} photo - Bytestring de la photo de l'utilisateur - * @var {string?} phone - Numéro(s) de téléphone - * @var {string?} address - Adresse(s) - * @var {string?} mail - Adresse(s) courriel - * @var {string?} birthdate - Date d'anniversaire - * @var {string?} nationality - Nationalité d'origine - * @var {string[]?} admins - Liste des gid (group id, inclus section sportive, binet, PA...) dont l'utilisateur est admin ; pas forcément sous-liste de members - * @var {string[]?} speakers - Liste des gid dont l'utilisateur est porte-parole ; pas forcément sous-liste de members - * @var {string[]?} members - Liste des gid dont l'utilisateur est membre - * @var {string[]?} followers - Liste des gid dont l'utilisateur est sympathisant - * @memberof LDAP - */ -class userData { -} -exports.userData = userData; -/** - * @class groupData - * @var {string} gid - Identifiant du groupe - * @var {string} password - Mot de passe du groupe - * @var {string} name - Nom du groupe (souvent son nom mais pas nécessairement) - * @var {string} logo - Logo du groupe (en bytestring) - * @var {string} description - Description du groupe (script Markdown) - * @var {string} site - Site web du groupe (URL) - * @var {string} category - Statut du groupe ; binet, section sportive... (actuellement juste 'binet' ou 'free') - * @var {string[]} childs - Liste des groupes enfants de première génération de celui-ci - * @var {string[]} parents - Liste des groupes directement parents de celui-ci ; symétrique du précédent - * @var {string[]} admins - Liste des admins du groupe - * @var {string[]} speakers - Liste des porte-parole du groupe - * @var {string[]} members - Liste des membres du groupe - * @var {string[]} followers - Liste des sympathisants du groupe - * @memberof LDAP - */ -class groupData { -} -exports.groupData = groupData; -//# sourceMappingURL=config.js.map \ No newline at end of file diff --git a/tsbuild/src/ldap/internal/config.js.map b/tsbuild/src/ldap/internal/config.js.map deleted file mode 100644 index 2922c6a..0000000 --- a/tsbuild/src/ldap/internal/config.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../../src/ldap/internal/config.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;;;AAEH,4CAAoB;AACpB,gDAAwB;AACxB,oDAA4B;AAC5B,oDAA4B;AAC5B,gBAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,cAAI,CAAC,OAAO,CAAC,GAAG,GAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;AAEjF,uGAAuG;AACvG,IAAI,WAAW,GAAG,cAAI,CAAC,OAAO,CAAC,GAAG,GAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,oBAAoB,CAAC,CAAC;AACtF,OAAO,CAAC,GAAG,CAAC,gBAAM,CAAC,IAAI,CAAC,gCAAgC,GAAC,WAAW,CAAC,CAAC,CAAC;AAC1D,QAAA,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,YAAE,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAE9E,0CAA0C;AAC1C,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,IAAI,EAAE;IAC9B,kBAAU,CAAC,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;CAC5C;KACI;IACD,IAAI,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,YAAY,EAAM;QAAE,kBAAU,CAAC,MAAM,GAAG,kBAAU,CAAC,WAAW,CAAC;KAAE;SAC/C;QAAE,kBAAU,CAAC,MAAM,GAAG,kBAAU,CAAC,UAAU,CAAC;KAAE;CACjG;AAED,iCAAiC;AACjC,IAAI,gBAAgB,GAAG,cAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,uBAAuB,CAAC,CAAC;AAC1F,OAAO,CAAC,GAAG,CAAC,gBAAM,CAAC,IAAI,CAAC,gCAAgC,GAAC,gBAAgB,CAAC,CAAC,CAAC;AAC/D,QAAA,qBAAqB,GAAG,IAAI,CAAC,KAAK,CAAC,YAAE,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAE9F,oCAAoC;AACvB,QAAA,UAAU,GAAG,CAAC,QAAQ,EAAC,UAAU,EAAC,SAAS,EAAC,WAAW,CAAC,CAAC;AAEtE;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAa,QAAQ;CAiBpB;AAjBD,4BAiBC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAa,SAAS;CAcrB;AAdD,8BAcC"} \ No newline at end of file diff --git a/tsbuild/src/ldap/internal/tools.js b/tsbuild/src/ldap/internal/tools.js deleted file mode 100644 index d41d097..0000000 --- a/tsbuild/src/ldap/internal/tools.js +++ /dev/null @@ -1,422 +0,0 @@ -"use strict"; -/** - * @file Ce fichier regroupe les fonctions génériques de recherche et de test utiles, mais trop puissantes pour être exportées directement. - * @author hawkspar - */ -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -// Toutes les entrées utilisateur sont escapées par sécurité -const ldap_escape_1 = __importDefault(require("ldap-escape")); -// Imports internes -const config_1 = require("./config"); -const basics_1 = require("./basics"); -//------------------------------------------------------------------------------------------------------------------------ -// Fonctions intermédiaires TBT -//------------------------------------------------------------------------------------------------------------------------ -class Tools { - /** - * @memberof LDAP - * @class Tools - * @classdesc Cette classe contient des fonctions intermédiaires qui ne sont pas destinées à être utilisées dans les resolvers. - * @summary Constructeur vide. - */ - constructor() { } - /** - * @memberof LDAP - * @summary Fonction qui renvoit toutes les infos relatives à un groupe ou un utilisateur particulier. - * @desc Cette fonction utilise {@link LDAP.search} avec des attributs prédéfinis. Elle est naïve et n'opère pas de récursion. - * @param T - Format renvoyé (en pratique {@link userData} ou {@link groupData}) - * @arg {string} domain - Domaine de la recherche (utilisateur ou groupe) - * @arg {string} id - Identifiant de la feuille cherchée (uid ou gid) - * @return {Promise(T)} Informations recueillies ; renvoie une liste de dictionnaire avec le profil complet du groupe tel que défini par le paramètre T. - * @static - * @async - */ - static peek(domain, id, type) { - return __awaiter(this, void 0, void 0, function* () { - var dirtyKeys = config_1.ldapConfig[domain]; - let cleanData = new type(); - let attr = Object.keys(dirtyKeys).map(key => dirtyKeys[key]); - //console.log(attr); - let dirtyData = (yield basics_1.Basics.searchMultiple(domain, attr, id))[0]; - console.log(dirtyData); - console.log(cleanData); - // Rename output - for (let uncleanKey in dirtyData) { - for (let cleanKey of Object.keys(cleanData)) { - console.log(cleanKey); - if (uncleanKey == dirtyKeys[cleanKey]) { - cleanData[cleanKey] = dirtyData[uncleanKey]; - } - } - } - return cleanData; - }); - } - /** - * @memberof LDAP - * @summary Fonction qui retrouve les id des paxs ou groupes validant les critères de recherche. Etape vers vrai TOL (Trombino On Line). - * Utiliser {@link peekUser} au cas par cas après pour obtenir les vraies infos. - * @desc Cette fonction utilise {@link LDAP.search} mais avec un filtre généré à la volée. Accepte des champs exacts ou incomplets pour la plupart des champs - * mais pas approximatifs et ne gère pas l'auto-complete. MEF Timeout pour des recherches trop vagues. Va crasher si un champ n'est pas dans ldapConfig. - * @param T - Format renvoyé (en pratique {@link userData} ou {@link groupData}) - * @arg {"us"|"gr"} domain - Domaine de la recherche (utilisateur ou groupe) - * @arg {userData | groupData} data - Dictionnaire contenant les données nécessaires à la recherche. Les valeurs sont celles entrées par l'utilisateur et sont par hypothèse - * comme des sous-parties compactes des valeurs renvoyées. Tous les champs ci-dessous peuvent être indifféremment des listes (par exemple pour chercher un membre - * de plusieurs groupes) ou des éléments isolés. Si un champ n'est pas pertinent, le mettre à '' ou undefined. - * @return {Promise(string[])} ids des profils qui "match" les critères proposés. - * @static - * @async - */ - static search(domain, data) { - return __awaiter(this, void 0, void 0, function* () { - let filter = ""; - // Iteration pour chaque champ, alourdissement du filtre selon des trucs prédéfinis dans ldapConfig encore - for (var key in data) { - if ((data[key] != undefined) && (data[key] != '')) { // Si il y a qque chose à chercher pour ce filtre - if (!Array.isArray(data[key])) { - data[key] = [data[key]]; - } // Génération systématique d'une liste de valeurs à rechercher - // Iteration pour chaque valeur fournie par l'utilisateur - data[key].forEach(val => { - // Traduction en language LDAP - let attribute = ""; - attribute = config_1.ldapConfig[domain][key]; - // Escape user input - val = ldap_escape_1.default.filter("${fil}", { fil: val }); - // Creation incrémentale du filtre - filter = "(&" + filter + "(|(" + attribute + "=" + val + ")" + // On cherche la valeur exacte - "(" + attribute + "=*" + val + ")" + // La valeur finale avec des trucs avant ; wildcard * (MEF la wildcart ne marche pas pour tous les attributs) - "(" + attribute + "=*" + val + "*)" + // La valeur du milieu avec des trucs avant et après - "(" + attribute + "=" + val + "*)))"; // La valeur du début avec des trucs après - }); - } - } - // Appel avec filtre de l'espace - return basics_1.Basics.searchSingle(domain, config_1.ldapConfig.key_id, null, filter); - }); - } - /** - * @memberof LDAP - * @summary Fonction qui édite un groupe ou utilisateur existant dans le LDAP. N'agit pas sur l'apprtenance à un groupe. - * @desc Appelle {@link LDAP.change}. - * @arg {"us"|"gr"} domain - Domaine de l'opération' (utilisateur ou groupe). - * @arg {userData | groupData} data - Dictionnaire avec les nouvelles valeurs de la feuille. - * @return {Promise(boolean)} `true` si la modification s'est bien déroulée, false sinon. - * @async - * @static - */ - static edit(domain, data) { - return __awaiter(this, void 0, void 0, function* () { - if (domain == "user") { - var id = data['uid']; - } - else { - var id = data['gid']; - } - var dirtyKeys = config_1.ldapConfig[domain]; - // Rename in an LDAP-friendly way - let dirtyData = {}; - Object.keys(data).forEach(function (key) { - // Some values edit can't change - if (!['readPerm', 'writePerm', 'groups', 'groupsIsAdmin', 'followers', 'members', 'speakers', 'admins'].includes(key)) { - dirtyData[dirtyKeys.key] = data[key]; - } - }); - return basics_1.Basics.change(domain, id, "replace", dirtyData); - }); - } - /** - * @memberof LDAP - * @summary Fonction qui permet d'ajouter un utilisateur à une catégorie d'un groupe. - * @desc Cette fonction fait essentiellement appel à d'autres fonctions de {@link Tools} passées en argument et {@link LDAP.change}. - * Cette fonction ne créé pas de doublon et opère conjointement dans les deux arbres "group" et "user" - * @arg {string} uid - Identifiant du futur membre - * @arg {string} gid - Identifiant du groupe - * @arg {"admins"|"speakers"|"members"|"followers"} category - Categorie de l'utilisateur concerné (admin, speaker, member ou follower) - * @return {Promise(boolean)} `true` si la modification s'est bien déroulée, false sinon - * @async - * @static - */ - static add(uid, gid, category) { - return __awaiter(this, void 0, void 0, function* () { - try { - // Vérifie que l'utilisateur est pas déjà membre pour groupes - let lu = yield Tools.get(gid, "group", category); - let catName = config_1.ldapConfig.group[category]; - if (!lu.includes(uid)) { - // Ajoute l'utilisateur dans la catégorie concernée - if (!(yield basics_1.Basics.change("group", gid, "add", catName))) { - throw "Erreur lors de la modification dans l'arbre des groupes pour ajouter un membre dans la catégorie voulue."; - } - } - } - catch (err) { - throw "Erreur pour obtenir une liste de membres d'une catégorie d'un groupe pour ajouter un membre de cette categorie du groupe."; - } - try { - // Vérifie que l'utilisateur est pas déjà membre pour user - let lg = yield Tools.get(uid, "user", category); - let catName = config_1.ldapConfig.user[category]; - if (!lg.includes(gid)) { - // Ajoute l'utilisateur dans la categorie voulue - if (!(yield basics_1.Basics.change("user", uid, "add", catName))) { - throw "Erreur lors de l'ajout d'un utilisateur dans une catégorie d'un groupe."; - } - } - return true; - } - catch (err) { - throw "Erreur pour obtenir une liste de groupes d'une categorie d'un membre pour ajouter un groupe de cette category pour le membre."; - } - }); - } - /** - * @memberof LDAP - * @summary Fonction qui permet de supprimer un membre d'une catégorie existant d'un groupe. - * @desc Cette fonction fait essentiellement appel à d'autres fonctions de {@link Tools} passées en argument et {@link LDAP.change}. - * @arg {string} uid - Identifiant de l'ex-membre - * @arg {string} gid - Identifiant du groupe - * @arg {"admins"|"speakers"|"members"|"followers"} category - Categorie de l'utilisateur concerné (admin, speaker, member ou follower) - * @return {Promise(boolean)} `true` si la modification s'est bien déroulée, false sinon - * @async - * @static - */ - static remove(uid, gid, category) { - return __awaiter(this, void 0, void 0, function* () { - try { - // Vérifie que l'utilisateur est pas déjà viré pour groupes - let lu = yield Tools.get(gid, "group", category); - let catName = config_1.ldapConfig.group[category]; - if (lu.includes(uid)) { - // Supprime tous les utilisateurs - if (!(yield basics_1.Basics.change("group", gid, "del", catName))) { - throw "Erreur lors de la suppression de tous les membres d'une catégorie du groupe."; - } - // Les rajoute un par un, sauf pour le supprimé - lu.forEach(id => { - if (id != uid) { - Tools.add(id, gid, category).then(res => { - if (!res) { - throw "Erreur lors du ré-ajout d'un autre membre d'une catégorie."; - } - }); - } - }); - } - } - catch (err) { - throw "Erreur pour obtenir une liste de membres d'une catégorie d'un groupe pour supprimer un membre de cette categorie du groupe."; - } - try { - // Vérifie que l'utilisateur est pas déjà viré pour user - let lg = yield Tools.get(uid, "user", category); - let catName = config_1.ldapConfig.user[category]; - if (lg.includes(gid)) { - // Supprime tous les groupes de la catégorie pour l'utilisateur - if (!(yield basics_1.Basics.change("user", uid, "del", catName))) { - throw "Erreur lors de la suppression de tous les groupes d'un membre."; - } - // Les rajoute un par un, sauf pour le supprimé - lg.forEach(id => { - if (id != uid) { - Tools.add(id, gid, category).then(res => { - if (!res) { - throw "Erreur lors du ré-ajout d'un autre groupe."; - } - }); - } - }); - } - return true; - } - catch (err) { - throw "Erreur pour obtenir une liste de groupes d'une categorie d'un membre pour supprimer un groupe de cette category pour le membre."; - } - }); - } - /** - * @callback changeValueCallback - * @param {string} id - Id à modifier - * @param {number} n - Nombre d'itérations - * @return {string} Nouveau id - */ - /** - * @memberof LDAP - * @summary Cette fonction teste une valeur d'un attribut (typiquement un identifiant) et le fait évoluer jusqu'à ce qu'il soit unique. - * @desc Librement adapté de Stack Overflow. Appelle {@link LDAP.search} pour vérifier - * qu'il n'y a pas d'autres occurences de cette valeur pour cette attribut - * dans le dn fourni. - * @param {string} value - Valeur de l'attribut (le plus souvent un identifiant) à tester à cette itération - * @param {string} attribute - Attribut à tester - * @param {"gr"|"us"} domain - Domaine dans lequel l'attribut doit être unique - * @param {changeValueCallback} changeValue - Fonction qui prend uniquement en argument l'id courant et - * le nombre d'itérations et qui renvoit la prochaine valeur de l'attribut - * @param {number} n [0] - Nombre d'itérations (à initialiser à 0) - * @return {Promise(string)} Valeur unique dans le domaine spécifié de l'attribut spécifié - * @static - * @async - */ - static ensureUnique(value, attribute, domain, changeValue, n = 0) { - return __awaiter(this, void 0, void 0, function* () { - // Recherche d'autres occurences de l'id - try { - return basics_1.Basics.searchSingle(domain, config_1.ldapConfig.key_id, null, "(" + attribute + "=" + value + ")").then(function (matches) { - if (!matches) { - throw ""; - } - // On renvoit la valeur si elle est bien unique - else if (matches.length = 0) { - return value; - } - // Sinon, on tente de nouveau notre chance avec la valeur suivante - else { - return Tools.ensureUnique(changeValue(value, n + 1), attribute, domain, changeValue, n + 1); - } - }); - } - catch (err) { - throw "Erreur lors de la recherche d'une valeur pour assurer son unicité."; - } - }); - } - /** - * @memberof LDAP - * @summary Cette fonction génère un uid standard, puis le fait évoluer jusqu'à ce qu'il soit unique. - * @desc Limité à un appel à {@link Tools.ensureUnique} avec les bons paramètres, et quelques opérations sur l'uid pour qu'il soit valide (escape, normalisation). - * @param {string} givenName - Prénom - * @param {string} lastName - Nom - * @param {string} promotion - Année de promotion - * @return {Promise(string)} Valeur unique dans le domaine spécifié de l'attribut spécifié - * @static - * @async - */ - static generateUid(givenName, lastName, promotion) { - return __awaiter(this, void 0, void 0, function* () { - try { - // normalize et lowerCase standardisent le format - return Tools.ensureUnique((givenName + '.' + lastName).toLowerCase().normalize('UFD'), config_1.ldapConfig.key_id, "user", (id, n) => { - if (n = 1) { - id += '.' + promotion; - } // Si prénom.nom existe déjà , on rajoute la promo - else if (n = 2) { - id += '.' + (n - 1).toString(); - } // Puis si prénom.nom.promo existe déjà on passe à nom.prenom.promo .1 - else if (n > 2) { - id += n; - } // Ensuite on continue .123, .1234, etc... - return id; - }); - } - catch (err) { - throw "Erreur lors de l'assurance de l'unicité d'un human readable unique identifier (hruid)."; - } - }); - } - /** - * @memberof LDAP - * @summary Cette fonction génère un id lisible, puis le fait évoluer jusqu'à ce qu'il soit unique. - * @desc Limité à un appel à {@link Tools.ensureUnique} avec les bons paramètres, et quelques opérations sur l'uid pour qu'il soit valide (escape, normalisation). - * @param {string} name - Nom - * @return {Promise(string)} Valeur unique dans le domaine spécifié de l'attribut spécifié - * @static - * @async - */ - static generateReadableId(name) { - return __awaiter(this, void 0, void 0, function* () { - try { - // normalize et lowerCase standardisent le format - return Tools.ensureUnique(name.toLowerCase().normalize('UFD'), config_1.ldapConfig.key_id, "group", (id, n) => { - if (n = 1) { - id += '.' + n.toString(); - } // Si nom existe déjà , on essaie nom.1 - else if (n > 1) { - id += n.toString(); - } // Ensuite on continue .12, .123, etc... - return id; - }); - } - catch (err) { - throw "Erreur lors de l'assurance de l'unicité d'un human readable unique identifier (hruid)."; - } - }); - } - /** - * @memberof LDAP - * @summary Cette fonction teste une valeur dummy (0) pour un identifiant numérique puis le fait évoluer aléatoirement (entre 1 et 100 000) jusqu'à ce qu'il soit unique. - * @param {string} attribut - Intitulé exact de l'id concerné - * @param {"gr"|"us"} domain - Domaine dans lequel l'attribut doit être unique - * @return {Promise(string)} Valeur unique dans le domaine spécifié de l'attribut spécifié - * @static - * @async - */ - static generateId(attribut, domain) { - return __awaiter(this, void 0, void 0, function* () { - try { - return Tools.ensureUnique("0", attribut, domain, (id, n) => { return Math.floor((Math.random() * 100000) + 1).toString(); }); - } - catch (err) { - throw "Erreur lors de l'assurance de l'unicité d'un unique identifier numérique."; - } - }); - } - /** - * @memberof LDAP - * @summary Fonction qui retrouve les utilisateurs ou groupes respectivement correspondant à un groupe ou un utilisateur de la même catégorie. - * @desc Cette fonction utilise {@link LDAP.search} et va directement à la feuille de l'utilisateur ou du groupe interrogé. - * Pour autant, elle est moins naïve qu'elle en a l'air. Elle ne gère ni la descente des admins ni la remontée des membres et renvoit une réponse naïve. - * @param {string} id - Identifiant du groupe ou de l'individu à interroger (supposé valide) - * @param {"user"|"group"} domain - Arbre à interroger - * @param {"admins"|"speakers"|"members"|"followers"} category - Catégorie considérée - * @return {Promise(string[])} Liste des id de groupes ou d'utilisateurs de la bonne catégorie associé à l'id - * @static - * @async - */ - static get(id, domain, category) { - return __awaiter(this, void 0, void 0, function* () { - try { - return yield basics_1.Basics.searchSingle(domain, config_1.ldapConfig[domain][category], id); - // Ce qui suit est une récursion qui sera déplacée dans la gestion des autorisations - if (!(category in ["admins", "members"]) || domain == "user") { - return yield basics_1.Basics.searchSingle(domain, config_1.ldapConfig[domain][category], id); - } - else { - // Clean depth-first search for inherited members and admins - let stack = []; - let res = []; - let visited = {}; - stack.push(id); - while (stack.length > 0) { - let cur_id = stack.pop(); - if (visited[cur_id] == undefined) { - visited[cur_id] = true; - res.concat(yield basics_1.Basics.searchSingle("group", config_1.ldapConfig.group[category], cur_id)); - // In the end, the precise category only changes the iteration direction - if (category == "members") { - stack.concat(yield basics_1.Basics.searchSingle("group", config_1.ldapConfig.group.childs, cur_id)); - } - else { - stack.concat(yield basics_1.Basics.searchSingle("group", config_1.ldapConfig.group.parents, cur_id)); - } - } - } - } - } - catch (err) { - throw "Erreur lors d'une recherche générique d'un membre d'une certaine catégorie d'un groupe."; - } - }); - } -} -exports.Tools = Tools; -//# sourceMappingURL=tools.js.map \ No newline at end of file diff --git a/tsbuild/src/ldap/internal/tools.js.map b/tsbuild/src/ldap/internal/tools.js.map deleted file mode 100644 index 4f4cbfe..0000000 --- a/tsbuild/src/ldap/internal/tools.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../../../src/ldap/internal/tools.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;;;;;;;;AAEH,4DAA4D;AAC5D,8DAAqC;AACrC,mBAAmB;AACnB,qCAAyD;AACzD,qCAAgC;AAEhC,0HAA0H;AAC1H,+BAA+B;AAC/B,0HAA0H;AAE1H,MAAa,KAAK;IACd;;;;;OAKG;IACH,gBAAe,CAAC;IAEhB;;;;;;;;;;OAUG;IACH,MAAM,CAAO,IAAI,CAAI,MAAsB,EAAE,EAAU,EAAE,IAAiB;;YACtE,IAAI,SAAS,GAAG,mBAAU,CAAC,MAAM,CAAC,CAAC;YACnC,IAAI,SAAS,GAAO,IAAI,IAAI,EAAE,CAAC;YAC/B,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;YAC7D,oBAAoB;YACpB,IAAI,SAAS,GAAG,CAAC,MAAM,eAAM,CAAC,cAAc,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACnE,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YACvB,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YACvB,gBAAgB;YAChB,KAAK,IAAI,UAAU,IAAI,SAAS,EAAE;gBAC9B,KAAK,IAAI,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;oBACzC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;oBACtB,IAAI,UAAU,IAAE,SAAS,CAAC,QAAQ,CAAC,EAAE;wBAAE,SAAS,CAAC,QAAQ,CAAC,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC;qBAAE;iBACxF;aACJ;YACD,OAAO,SAAS,CAAC;QACrB,CAAC;KAAA;IAED;;;;;;;;;;;;;;OAcG;IACH,MAAM,CAAO,MAAM,CAAC,MAAsB,EAAE,IAAwB;;YAChE,IAAI,MAAM,GAAC,EAAE,CAAC;YACd,0GAA0G;YAC1G,KAAK,IAAI,GAAG,IAAI,IAAI,EAAE;gBAClB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,EAAqB,iDAAiD;oBACpH,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE;wBAAE,IAAI,CAAC,GAAG,CAAC,GAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;qBAAE,CAAU,8DAA8D;oBACjI,yDAAyD;oBACzD,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;wBACpB,8BAA8B;wBAC9B,IAAI,SAAS,GAAG,EAAE,CAAC;wBACnB,SAAS,GAAG,mBAAU,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC;wBACpC,oBAAoB;wBACpB,GAAG,GAAG,qBAAU,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,GAAG,EAAE,GAAG,EAAC,CAAC,CAAC;wBAC/C,kCAAkC;wBAClC,MAAM,GAAC,IAAI,GAAC,MAAM,GAAE,KAAK,GAAC,SAAS,GAAC,GAAG,GAAE,GAAG,GAAC,GAAG,GAAK,8BAA8B;4BAC/D,GAAG,GAAC,SAAS,GAAC,IAAI,GAAC,GAAG,GAAC,GAAG,GAAO,6GAA6G;4BAC9I,GAAG,GAAC,SAAS,GAAC,IAAI,GAAC,GAAG,GAAC,IAAI,GAAM,oDAAoD;4BACrF,GAAG,GAAG,SAAS,GAAC,GAAG,GAAE,GAAG,GAAC,MAAM,CAAC,CAAC,0CAA0C;oBACnG,CAAC,CAAC,CAAC;iBACN;aACJ;YACD,iCAAiC;YACjC,OAAO,eAAM,CAAC,YAAY,CAAC,MAAM,EAAE,mBAAU,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QACxE,CAAC;KAAA;IAED;;;;;;;;;OASG;IACH,MAAM,CAAO,IAAI,CAAC,MAAsB,EAAE,IAAwB;;YAC9D,IAAI,MAAM,IAAI,MAAM,EAAI;gBAAE,IAAI,EAAE,GAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aAAE;iBACvB;gBAAE,IAAI,EAAE,GAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aAAE;YAC/C,IAAI,SAAS,GAAC,mBAAU,CAAC,MAAM,CAAC,CAAC;YACjC,iCAAiC;YACjC,IAAI,SAAS,GAAG,EAAE,CAAC;YACnB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,UAAS,GAAW;gBAC1C,gCAAgC;gBAChC,IAAI,CAAC,CAAC,UAAU,EAAC,WAAW,EAAC,QAAQ,EAAC,eAAe,EAAC,WAAW,EAAC,SAAS,EAAC,UAAU,EAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;oBAC5G,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,GAAC,IAAI,CAAC,GAAG,CAAC,CAAC;iBACtC;YACL,CAAC,CAAC,CAAC;YACH,OAAO,eAAM,CAAC,MAAM,CAAC,MAAM,EAAC,EAAE,EAAC,SAAS,EAAC,SAAS,CAAC,CAAC;QACxD,CAAC;KAAA;IAED;;;;;;;;;;;OAWG;IACH,MAAM,CAAO,GAAG,CAAC,GAAW,EAAE,GAAW,EAAE,QAAgB;;YACvD,IAAI;gBACA,6DAA6D;gBAC7D,IAAI,EAAE,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;gBACjD,IAAI,OAAO,GAAG,mBAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;gBACzC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;oBACnB,mDAAmD;oBACnD,IAAI,CAAC,CAAA,MAAM,eAAM,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC,CAAA,EAAE;wBACpD,MAAM,0GAA0G,CAAC;qBACpH;iBACJ;aACJ;YACD,OAAM,GAAG,EAAE;gBACP,MAAM,2HAA2H,CAAC;aACrI;YACD,IAAI;gBACA,0DAA0D;gBAC1D,IAAI,EAAE,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;gBAChD,IAAI,OAAO,GAAG,mBAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACxC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;oBACnB,gDAAgD;oBAChD,IAAI,CAAC,CAAA,MAAM,eAAM,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC,CAAA,EAAE;wBACnD,MAAM,yEAAyE,CAAC;qBACnF;iBACJ;gBACD,OAAO,IAAI,CAAC;aACf;YACD,OAAM,GAAG,EAAE;gBACP,MAAM,+HAA+H,CAAC;aACzI;QACL,CAAC;KAAA;IAED;;;;;;;;;;OAUG;IACH,MAAM,CAAO,MAAM,CAAC,GAAW,EAAE,GAAW,EAAE,QAAiB;;YAC3D,IAAI;gBACA,2DAA2D;gBAC3D,IAAI,EAAE,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;gBACjD,IAAI,OAAO,GAAG,mBAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;gBACzC,IAAI,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;oBAClB,iCAAiC;oBACjC,IAAI,CAAC,CAAA,MAAM,eAAM,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC,CAAA,EAAE;wBACpD,MAAM,8EAA8E,CAAC;qBACxF;oBACD,+CAA+C;oBAC/C,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE;wBACZ,IAAI,EAAE,IAAE,GAAG,EAAE;4BACT,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;gCACpC,IAAI,CAAC,GAAG,EAAE;oCAAE,MAAM,4DAA4D,CAAC;iCAAE;4BACrF,CAAC,CAAC,CAAC;yBACN;oBACL,CAAC,CAAC,CAAC;iBACN;aACJ;YACD,OAAM,GAAG,EAAE;gBACP,MAAM,6HAA6H,CAAC;aACvI;YACD,IAAI;gBACA,wDAAwD;gBACxD,IAAI,EAAE,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;gBAChD,IAAI,OAAO,GAAG,mBAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACxC,IAAI,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;oBAClB,+DAA+D;oBAC/D,IAAI,CAAC,CAAA,MAAM,eAAM,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC,CAAA,EAAE;wBACnD,MAAM,gEAAgE,CAAC;qBAC1E;oBACD,+CAA+C;oBAC/C,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE;wBACZ,IAAI,EAAE,IAAE,GAAG,EAAE;4BACT,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;gCACpC,IAAI,CAAC,GAAG,EAAE;oCAAE,MAAM,4CAA4C,CAAC;iCAAE;4BACrE,CAAC,CAAC,CAAC;yBACN;oBACL,CAAC,CAAC,CAAC;iBACN;gBACD,OAAO,IAAI,CAAC;aACf;YACD,OAAM,GAAG,EAAE;gBACP,MAAM,iIAAiI,CAAC;aAC3I;QACL,CAAC;KAAA;IAED;;;;;OAKG;IACH;;;;;;;;;;;;;;;OAeG;IACH,MAAM,CAAO,YAAY,CAAC,KAAa,EAAE,SAAiB,EAAE,MAAsB,EAAE,WAAuC,EAAE,IAAU,CAAC;;YACpI,wCAAwC;YACxC,IAAI;gBACA,OAAO,eAAM,CAAC,YAAY,CAAC,MAAM,EAAE,mBAAU,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,GAAC,SAAS,GAAC,GAAG,GAAC,KAAK,GAAC,GAAG,CAAC,CAAC,IAAI,CAAC,UAAU,OAAiB;oBACrH,IAAI,CAAC,OAAO,EAAE;wBAAE,MAAM,EAAE,CAAC;qBAAE;oBAC3B,+CAA+C;yBAC1C,IAAI,OAAO,CAAC,MAAM,GAAC,CAAC,EAAE;wBAAE,OAAO,KAAK,CAAC;qBAAE;oBAC5C,kEAAkE;yBAC7D;wBAAE,OAAO,KAAK,CAAC,YAAY,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC,GAAC,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,GAAC,CAAC,CAAC,CAAC;qBAAE;gBACrG,CAAC,CAAC,CAAC;aACN;YACD,OAAM,GAAG,EAAE;gBACP,MAAM,oEAAoE,CAAC;aAC9E;QACL,CAAC;KAAA;IAED;;;;;;;;;;OAUG;IACH,MAAM,CAAO,WAAW,CAAC,SAAiB,EAAE,QAAgB,EAAE,SAAiB;;YAC3E,IAAI;gBACA,iDAAiD;gBACjD,OAAO,KAAK,CAAC,YAAY,CAAC,CAAC,SAAS,GAAC,GAAG,GAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,mBAAU,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,EAAU,EAAE,CAAS,EAAE,EAAE;oBACpI,IAAI,CAAC,GAAC,CAAC,EAAE;wBAAE,EAAE,IAAE,GAAG,GAAC,SAAS,CAAC;qBAAE,CAAgB,iDAAiD;yBAC3F,IAAI,CAAC,GAAC,CAAC,EAAE;wBAAE,EAAE,IAAE,GAAG,GAAC,CAAC,CAAC,GAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;qBAAE,CAAI,sEAAsE;yBAChH,IAAI,CAAC,GAAC,CAAC,EAAE;wBAAE,EAAE,IAAE,CAAC,CAAC;qBAAE,CAAwB,0CAA0C;oBAC1F,OAAO,EAAE,CAAC;gBACd,CAAC,CAAC,CAAC;aACN;YACD,OAAM,GAAG,EAAE;gBACP,MAAM,wFAAwF,CAAC;aAClG;QACL,CAAC;KAAA;IAED;;;;;;;;OAQG;IACH,MAAM,CAAO,kBAAkB,CAAC,IAAY;;YACxC,IAAI;gBACA,iDAAiD;gBACjD,OAAO,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,mBAAU,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,EAAU,EAAE,CAAS,EAAE,EAAE;oBACjH,IAAI,CAAC,GAAC,CAAC,EAAS;wBAAE,EAAE,IAAE,GAAG,GAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;qBAAE,CAAG,sCAAsC;yBAC7E,IAAI,CAAC,GAAC,CAAC,EAAI;wBAAE,EAAE,IAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;qBAAE,CAAO,wCAAwC;oBACpF,OAAO,EAAE,CAAC;gBACd,CAAC,CAAC,CAAC;aACN;YACD,OAAM,GAAG,EAAE;gBACP,MAAM,wFAAwF,CAAC;aAClG;QACL,CAAC;KAAA;IAED;;;;;;;;OAQG;IACH,MAAM,CAAO,UAAU,CAAC,QAAgB,EAAE,MAAsB;;YAC5D,IAAI;gBACA,OAAO,KAAK,CAAC,YAAY,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,EAAE,EAAC,CAAC,EAAE,EAAE,GAAG,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;aAC/H;YACD,OAAM,GAAG,EAAE;gBACP,MAAM,2EAA2E,CAAC;aACrF;QACL,CAAC;KAAA;IAED;;;;;;;;;;;OAWG;IACH,MAAM,CAAO,GAAG,CAAC,EAAW,EAAE,MAAuB,EAAE,QAAiB;;YACpE,IAAI;gBACA,OAAO,MAAM,eAAM,CAAC,YAAY,CAAC,MAAM,EAAE,mBAAU,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC;gBAE3E,qFAAqF;gBACrF,IAAI,CAAC,CAAC,QAAQ,IAAI,CAAC,QAAQ,EAAC,SAAS,CAAC,CAAC,IAAI,MAAM,IAAE,MAAM,EAAE;oBACvD,OAAO,MAAM,eAAM,CAAC,YAAY,CAAC,MAAM,EAAE,mBAAU,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC;iBAC9E;qBACI;oBACD,4DAA4D;oBAC5D,IAAI,KAAK,GAAG,EAAE,CAAC;oBACf,IAAI,GAAG,GAAG,EAAE,CAAC;oBACb,IAAI,OAAO,GAAG,EAAE,CAAC;oBACjB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBACf,OAAO,KAAK,CAAC,MAAM,GAAC,CAAC,EAAE;wBACnB,IAAI,MAAM,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;wBACzB,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,SAAS,EAAE;4BAC9B,OAAO,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;4BACvB,GAAG,CAAC,MAAM,CAAC,MAAM,eAAM,CAAC,YAAY,CAAC,OAAO,EAAE,mBAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;4BACnF,wEAAwE;4BACxE,IAAI,QAAQ,IAAI,SAAS,EAAG;gCAAE,KAAK,CAAC,MAAM,CAAC,MAAM,eAAM,CAAC,YAAY,CAAC,OAAO,EAAE,mBAAU,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;6BAAE;iCACtF;gCAAE,KAAK,CAAC,MAAM,CAAC,MAAM,eAAM,CAAC,YAAY,CAAC,OAAO,EAAE,mBAAU,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;6BAAE;yBACtH;qBACJ;iBACJ;aACJ;YACD,OAAM,GAAG,EAAE;gBACP,MAAM,yFAAyF,CAAC;aACnG;QACL,CAAC;KAAA;CACJ;AAjWD,sBAiWC"} \ No newline at end of file -- GitLab