diff --git a/doc/db_knex_router.js.html b/doc/db_knex_router.js.html index 23c54c2b8a12a8bbaabe791aff923a5b7cf3c9b9..ac5723faee992dfd495afad109d6e24588ed42e6 100644 --- a/doc/db_knex_router.js.html +++ b/doc/db_knex_router.js.html @@ -51,7 +51,7 @@ module.exports = require('knex')(config);</code></pre> <br class="clear"> <footer> - Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.5.5</a> on Thu Mar 01 2018 15:55:14 GMT+0100 (Paris, Madrid) + Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.5.5</a> on Thu Mar 01 2018 17:00:05 GMT+0100 (Paris, Madrid) </footer> <script> prettyPrint(); </script> diff --git a/doc/global.html b/doc/global.html index 6064377098821f000260b39e0f8eb0a0391f77f3..78e9b0dc1349f07a72ed1a23f72c264c95d3cba7 100644 --- a/doc/global.html +++ b/doc/global.html @@ -651,7 +651,7 @@ <dt class="tag-source">Source:</dt> <dd class="tag-source"><ul class="dummy"><li> - <a href="src_ldap_ldap_data.js.html">src/ldap/ldap_data.js</a>, <a href="src_ldap_ldap_data.js.html#line157">line 157</a> + <a href="src_ldap_ldap_data.js.html">src/ldap/ldap_data.js</a>, <a href="src_ldap_ldap_data.js.html#line163">line 163</a> </li></ul></dd> @@ -943,7 +943,7 @@ <dt class="tag-source">Source:</dt> <dd class="tag-source"><ul class="dummy"><li> - <a href="src_ldap_ldap_data.js.html">src/ldap/ldap_data.js</a>, <a href="src_ldap_ldap_data.js.html#line121">line 121</a> + <a href="src_ldap_ldap_data.js.html">src/ldap/ldap_data.js</a>, <a href="src_ldap_ldap_data.js.html#line127">line 127</a> </li></ul></dd> @@ -1102,7 +1102,7 @@ <dt class="tag-source">Source:</dt> <dd class="tag-source"><ul class="dummy"><li> - <a href="src_ldap_ldap_data.js.html">src/ldap/ldap_data.js</a>, <a href="src_ldap_ldap_data.js.html#line85">line 85</a> + <a href="src_ldap_ldap_data.js.html">src/ldap/ldap_data.js</a>, <a href="src_ldap_ldap_data.js.html#line91">line 91</a> </li></ul></dd> @@ -1261,7 +1261,7 @@ <dt class="tag-source">Source:</dt> <dd class="tag-source"><ul class="dummy"><li> - <a href="src_ldap_ldap_data.js.html">src/ldap/ldap_data.js</a>, <a href="src_ldap_ldap_data.js.html#line97">line 97</a> + <a href="src_ldap_ldap_data.js.html">src/ldap/ldap_data.js</a>, <a href="src_ldap_ldap_data.js.html#line103">line 103</a> </li></ul></dd> @@ -1420,7 +1420,7 @@ <dt class="tag-source">Source:</dt> <dd class="tag-source"><ul class="dummy"><li> - <a href="src_ldap_ldap_data.js.html">src/ldap/ldap_data.js</a>, <a href="src_ldap_ldap_data.js.html#line109">line 109</a> + <a href="src_ldap_ldap_data.js.html">src/ldap/ldap_data.js</a>, <a href="src_ldap_ldap_data.js.html#line115">line 115</a> </li></ul></dd> @@ -1625,7 +1625,7 @@ <dt class="tag-source">Source:</dt> <dd class="tag-source"><ul class="dummy"><li> - <a href="src_ldap_ldap_data.js.html">src/ldap/ldap_data.js</a>, <a href="src_ldap_ldap_data.js.html#line260">line 260</a> + <a href="src_ldap_ldap_data.js.html">src/ldap/ldap_data.js</a>, <a href="src_ldap_ldap_data.js.html#line266">line 266</a> </li></ul></dd> @@ -1681,7 +1681,7 @@ - <h4 class="name" id="rechercheLDAP"><span class="type-signature"></span>rechercheLDAP<span class="signature">(base, filter, filter_dic, attributes)</span><span class="type-signature"> → {Array.<string>}</span></h4> + <h4 class="name" id="rechercheLDAP"><span class="type-signature"></span>rechercheLDAP<span class="signature">(base, filter, filter_dic, attributes)</span><span class="type-signature"> → {Object}</span></h4> @@ -1880,7 +1880,7 @@ <div class="param-desc"> - <p>Résultats de la recherche</p> + <p>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)</p> </div> @@ -1891,7 +1891,7 @@ </dt> <dd> -<span class="param-type">Array.<string></span> +<span class="param-type">Object</span> </dd> @@ -2012,7 +2012,7 @@ <dt class="tag-source">Source:</dt> <dd class="tag-source"><ul class="dummy"><li> - <a href="src_ldap_ldap_data.js.html">src/ldap/ldap_data.js</a>, <a href="src_ldap_ldap_data.js.html#line133">line 133</a> + <a href="src_ldap_ldap_data.js.html">src/ldap/ldap_data.js</a>, <a href="src_ldap_ldap_data.js.html#line139">line 139</a> </li></ul></dd> @@ -2447,7 +2447,7 @@ <dt class="tag-source">Source:</dt> <dd class="tag-source"><ul class="dummy"><li> - <a href="src_ldap_ldap_data.js.html">src/ldap/ldap_data.js</a>, <a href="src_ldap_ldap_data.js.html#line196">line 196</a> + <a href="src_ldap_ldap_data.js.html">src/ldap/ldap_data.js</a>, <a href="src_ldap_ldap_data.js.html#line202">line 202</a> </li></ul></dd> @@ -2519,7 +2519,7 @@ <br class="clear"> <footer> - Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.5.5</a> on Thu Mar 01 2018 15:55:14 GMT+0100 (Paris, Madrid) + Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.5.5</a> on Thu Mar 01 2018 17:00:05 GMT+0100 (Paris, Madrid) </footer> <script> prettyPrint(); </script> diff --git a/doc/index.html b/doc/index.html index f363b33bd2249baa9fbc40eb4a7aa18078bd1ddf..3798742d02c37410c929233d6ceaffa939bd1959 100644 --- a/doc/index.html +++ b/doc/index.html @@ -941,7 +941,7 @@ npm install -g eslint</code></pre><p>Les dépendances les plus importantes sont <br class="clear"> <footer> - Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.5.5</a> on Thu Mar 01 2018 15:55:14 GMT+0100 (Paris, Madrid) + Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.5.5</a> on Thu Mar 01 2018 17:00:05 GMT+0100 (Paris, Madrid) </footer> <script> prettyPrint(); </script> diff --git a/doc/knexfile.js.html b/doc/knexfile.js.html index 2d9141b61810967bd4323368e8001dddc430201b..ef1955a0a9f73e2aa80c426616327c448e80afd7 100644 --- a/doc/knexfile.js.html +++ b/doc/knexfile.js.html @@ -72,7 +72,7 @@ module.exports = { <br class="clear"> <footer> - Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.5.5</a> on Thu Mar 01 2018 15:55:14 GMT+0100 (Paris, Madrid) + Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.5.5</a> on Thu Mar 01 2018 17:00:05 GMT+0100 (Paris, Madrid) </footer> <script> prettyPrint(); </script> diff --git a/doc/src_admin_view_admin_router.js.html b/doc/src_admin_view_admin_router.js.html index a5a2691b3e2d58775c0a351152e19adb796437e4..f87c527f98c3a177294b28cbd7e981e193f2127e 100644 --- a/doc/src_admin_view_admin_router.js.html +++ b/doc/src_admin_view_admin_router.js.html @@ -160,7 +160,7 @@ export default router; <br class="clear"> <footer> - Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.5.5</a> on Thu Mar 01 2018 15:55:14 GMT+0100 (Paris, Madrid) + Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.5.5</a> on Thu Mar 01 2018 17:00:05 GMT+0100 (Paris, Madrid) </footer> <script> prettyPrint(); </script> diff --git a/doc/src_graphql_schema.js.html b/doc/src_graphql_schema.js.html index 074f99d4080d0854356ccb775a4fb6bbf5d4a2d9..30211a82e9ae57c90aa4591e02506faca71d2749 100644 --- a/doc/src_graphql_schema.js.html +++ b/doc/src_graphql_schema.js.html @@ -39,29 +39,37 @@ import { request } from 'https'; const typeDefs = ` type Query { allGroups: [Group] - group(id: ID) : [Group] + group(uid: ID) : Group } type Group { - name: String! - id: ID! + name: String + uid: ID website: String - updatedAt: String! + updatedAt: String description: String - school: String! + school: String } `; const getAllVisibleGroups = (user) => { - console.log("getAllVisibleGroups gets called"); - // let group_ids = listGroups(user.id); - return knex.select().from('groups')/*.whereIn('id', group_ids)*/; + + var group_ids = listGroups(user.id).then(res => { + console.log(res.concat(['kes'])); + return res.concat(['kes']); + }); + var membered_groups = qb => qb.select().from('groups').whereIn('uid', ['faerix', 'data']); + return knex.with('membered_groups', membered_groups).distinct('groups.*').select().from('groups').innerJoin('membered_groups', + function() { + this.on('groups.uid', '=', 'membered_groups.uid').orOn('groups.parentuid', '=', 'membered_groups.uid'); + } + ); }; -const getGroupIfVisible = (user, id) => { - console.log("getGroupIfVisible gets called"); - return getAllVisibleGroups(user).where('id', id)/*.then(function(table) { - console.log(JSON.stringify(table,null,2))*/; +const getGroupIfVisible = (user, uid) => { + return getAllVisibleGroups(user).where('groups.uid', uid).then(res => { + return res[0]; + }); }; const resolvers = { @@ -70,7 +78,7 @@ const resolvers = { return getAllVisibleGroups(context.user); }, group: (obj, args, context) => { - return getGroupIfVisible(context.user, args.id); + return getGroupIfVisible(context.user, args.uid); } } }; @@ -96,7 +104,7 @@ export default schema;</code></pre> <br class="clear"> <footer> - Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.5.5</a> on Thu Mar 01 2018 15:55:14 GMT+0100 (Paris, Madrid) + Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.5.5</a> on Thu Mar 01 2018 17:00:05 GMT+0100 (Paris, Madrid) </footer> <script> prettyPrint(); </script> diff --git a/doc/src_index.js.html b/doc/src_index.js.html index 5ba92747e9cb2d3c3d0cc063ce4e2f12ab83b2aa..4264146652db86bdc9acb82a36199c1564eadf2e 100644 --- a/doc/src_index.js.html +++ b/doc/src_index.js.html @@ -61,7 +61,7 @@ server.listen(port, () => { <br class="clear"> <footer> - Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.5.5</a> on Thu Mar 01 2018 15:55:14 GMT+0100 (Paris, Madrid) + Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.5.5</a> on Thu Mar 01 2018 17:00:05 GMT+0100 (Paris, Madrid) </footer> <script> prettyPrint(); </script> diff --git a/doc/src_ldap_ldap_auth.js.html b/doc/src_ldap_ldap_auth.js.html index 192b0c5b5cdcb5b0025bc694193981f8903df960..860e8a8d87974d059365f0b826f83c08f8d45940 100644 --- a/doc/src_ldap_ldap_auth.js.html +++ b/doc/src_ldap_ldap_auth.js.html @@ -90,7 +90,7 @@ export default setupLdapAuth; <br class="clear"> <footer> - Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.5.5</a> on Thu Mar 01 2018 15:55:14 GMT+0100 (Paris, Madrid) + Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.5.5</a> on Thu Mar 01 2018 17:00:05 GMT+0100 (Paris, Madrid) </footer> <script> prettyPrint(); </script> diff --git a/doc/src_ldap_ldap_data.js.html b/doc/src_ldap_ldap_data.js.html index c164c012660cb4636470e12eda635a745a6faf8b..93607e18a36f4e66a422ef677989a77177e4056e 100644 --- a/doc/src_ldap_ldap_data.js.html +++ b/doc/src_ldap_ldap_data.js.html @@ -63,7 +63,7 @@ var client = ldap.createClient({ url: config.ldap.server}); * @arg {string} filter - Filtre logique de la recherche (format RFC2254) * @arg {Object} filter_dic - Dictionnaire qui associe les faux champs dans filter aux vraies valeurs pertinentes de la recherche * @arg {string[]} attributes - Liste des attributs qui figureront dans le résultat final - * @return {string[]} Résultats de la recherche + * @return {Object} 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) */ function rechercheLDAP(base, filter, filter_dic, attributes) { // Debug @@ -88,9 +88,15 @@ function rechercheLDAP(base, filter, filter_dic, attributes) { } else { // Dès que la recherche renvoit une entrée, on stocke les attributs qui nous intéresse res.on('searchEntry', function(entry) { - attributes.forEach((element) => { - eval("vals.push(entry.object."+element+")"); - }); + // Cas un seul attribut où le résultat est une liste + if (attributes.length == 1) { eval("vals.push(entry.object."+attributes[0]+")"); } + // Cas plusieurs attributs donc résultat dictionnaire + else { + vals.push({}); + attributes.forEach((element) => { + vals.slice(-1)[0][element]=eval("entry.object."+element+";"); + }); + } }); // Si la recherche est finie on se déconnecte et on renvoit la liste res.on('end', function(res) { @@ -136,7 +142,7 @@ function listGroups2(uid) { */ function listMembers(gid) { return new Promise(function(resolve, reject) { - resolve(rechercheLDAP(config.dn_groups, config.filter_id, { id: gid }, config.attributes_lm).then(res => res[0])); + resolve(rechercheLDAP(config.key_id+"="+gid+","+config.dn_groups, config.filter_id, { id: gid }, config.attributes_lm).then(res => res[0])); }); } @@ -148,7 +154,7 @@ function listMembers(gid) { */ function listAdmins(gid) { return new Promise(function(resolve, reject) { - resolve(rechercheLDAP(config.key_al+"="+gid+","+config.dn_groups, config.filter_id, { id: gid }, config.attributes_al).then(res => res[0])); + resolve(rechercheLDAP(config.key_id+"="+gid+","+config.dn_groups, config.filter_id, { id: gid }, config.attributes_al).then(res => res[0])); }); } @@ -241,14 +247,14 @@ function TOL(c0="", c1="", c2="", c3="", c4="", c5="", c6="", c7="", c8="", c9=" }); // Debug //console.log(filter); - console.log(dic); + //console.log(dic); var candidatesList=[]; // Interrogation LDAP et filtre de malade client.search(config.dn_users, { scope: "sub", - attributes: config.search_attributes_tol, + attributes: config.attributes_all, filter: ldapEscape.filter(filter, dic) }, function(err, res) { @@ -258,10 +264,10 @@ function TOL(c0="", c1="", c2="", c3="", c4="", c5="", c6="", c7="", c8="", c9=" } else { // Toujours gestion différenciée début et fin res.on('searchEntry', function(entry) { - // De nouveau, iteration sur les valeurs recherchées et entrée dans la liste - candidatesList.push([]); + // De nouveau, iteration sur les valeurs recherchées et entrée dans la liste sous la forme d'un dictionnaire + candidatesList.push({}); config.attributes_all.forEach((element) => { - eval("candidatesList.slice(-1)[0].push(entry.object."+element+")"); + candidatesList.slice(-1)[0][element]=eval("entry.object."+element+";"); }); }); res.on('page', function(result, cb) { @@ -286,7 +292,7 @@ function TOL(c0="", c1="", c2="", c3="", c4="", c5="", c6="", c7="", c8="", c9=" * @return {boolean} `true` si la modification s'est bien déroulée, false sinon */ function modifierLDAP(name, op, mod) { - // Debug + // Debug TBM //console.log(base); //console.log(operation); //console.log(modification); @@ -305,15 +311,13 @@ function modifierLDAP(name, op, mod) { }); } -//TOL("","","","","","2016","","","ultimate","","","","").then(res => console.log(res)); - //modifierLDAP("uid=quentin.chevalier,ou=eleves,dc=frankiz,dc=net","replace", {"displayName": ["hawkspar"]}).then(res => console.log(res)); -rechercheLDAP("ou=eleves,dc=frankiz,dc=net","(displayName=${cn})",{ cn: "Sire hawkspar" }, ["uid"]).then(res => console.log(res)); +//rechercheLDAP("uid=quentin.chevalier,ou=eleves,dc=frankiz,dc=net","(displayName=${cn})",{ cn: "Sire hawkspar" }, ["jpegPhoto"]).then(res => console.log(res)); /* Partage pour le reste du monde ; même remarque synthaxe que pour l'import export { listGroups, listMembers, TOL };*/ -/**/module.exports ={ listGroups, listMembers, TOL }; +/**/module.exports ={ listGroups, listMembers, listAdmins, rens, idTOL, TOL }; </code></pre> </article> </section> @@ -330,7 +334,7 @@ export { listGroups, listMembers, TOL };*/ <br class="clear"> <footer> - Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.5.5</a> on Thu Mar 01 2018 15:55:14 GMT+0100 (Paris, Madrid) + Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.5.5</a> on Thu Mar 01 2018 17:00:05 GMT+0100 (Paris, Madrid) </footer> <script> prettyPrint(); </script> diff --git a/doc/src_server.js.html b/doc/src_server.js.html index 2693daecb774082675311b94cdcfe398dda94810..d5b2f88a1ad2f6a4626ef6f0b2a71d18e07d8b5b 100644 --- a/doc/src_server.js.html +++ b/doc/src_server.js.html @@ -65,7 +65,8 @@ server.use('/graphql', bodyParser.json(), cors(), let uid; try { - uid = req.session.id; + uid = "anatole.romon"; + //uid = req.session.id; } catch (err) { uid = "1"; } @@ -99,7 +100,7 @@ export default server; <br class="clear"> <footer> - Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.5.5</a> on Thu Mar 01 2018 15:55:14 GMT+0100 (Paris, Madrid) + Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.5.5</a> on Thu Mar 01 2018 17:00:05 GMT+0100 (Paris, Madrid) </footer> <script> prettyPrint(); </script>