From 4cff4dfca4f4f275c687474b2d0a0ed98a41ed86 Mon Sep 17 00:00:00 2001 From: ManifoldFR <wilson.jallet@gmail.com> Date: Sun, 2 Sep 2018 00:05:06 +0200 Subject: [PATCH] fix members field resolver in SimpleGroups --- src/graphql/{resolvers.js => resolvers.ts} | 74 ++++++++++--------- .../resolvers/{groups.js => groups.ts} | 5 +- src/graphql/resolvers/messages.js | 1 - src/ldap/ldap_data.js | 19 +++-- 4 files changed, 54 insertions(+), 45 deletions(-) rename src/graphql/{resolvers.js => resolvers.ts} (73%) rename src/graphql/resolvers/{groups.js => groups.ts} (92%) diff --git a/src/graphql/resolvers.js b/src/graphql/resolvers.ts similarity index 73% rename from src/graphql/resolvers.js rename to src/graphql/resolvers.ts index 5f3b6ab..19df865 100644 --- a/src/graphql/resolvers.js +++ b/src/graphql/resolvers.ts @@ -6,28 +6,32 @@ import _ from 'lodash'; import { assertBinaryExpression } from 'babel-types'; import knex from '../../db/knex_router'; -import passport from 'passport'; -import './../config_passport'; +import '../config_passport'; -import authenticator from '../graphql/authenticator'; +import authenticator from './authenticator'; import * as connectors from './connectors/connectors'; -import * as list_selectors from './connectors/list_selectors'; import * as authentifiers from './connectors/authentifiers'; import MessageResolvers from './resolvers/messages'; import GroupResolvers from './resolvers/groups'; // nouveau test - -/** +/** * @description Résolveurs des différentes requêtes GraphQL */ - -function ChevalierError(err){ - this.returned_error = err; - this.name = "chevalier error"; - this.message = "Error encountered while running ldap access code : " + err.message; - this.toString = () => this.message; +class ChevalierError { + returned_error: any + name: String + message: String + constructor(err) { + this.returned_error = err; + this.name = "chevalier error"; + this.message = "Error encountered while running ldap access code : " + err.message; + } + + toString(): String { + return this.message + } } @@ -37,27 +41,27 @@ export const resolvers = { // group queries - allGroups: async function(obj, args, context){ - let user = await authentifiers.anonymous(context.bindUser); + allGroups: async function(root, args, context){ + let user = await authentifiers.anonymous(context.user); return user && connectors.getAllVisibleGroups(user); }, - allSimpleGroups: async function (obj, args, context){ - let user = await authentifiers.anonymous(context.bindUser); + allSimpleGroups: async function (root, args, context){ + let user = await authentifiers.anonymous(context.user); return user && connectors.getAllVisibleSimpleGroups(user); }, - group: async function(obj, args, context){ - let user = await authentifiers.anonymous(context.bindUser); + group: async function(root, args, context) { + let user = await authentifiers.anonymous(context.user); return user && connectors.getGroupIfVisible(user, args.uid); }, simpleGroup: async function(obj, args, context){ - let user = await authentifiers.anonymous(context.bindUser); + let user = await authentifiers.anonymous(context.user); return user && connectors.getSimpleGroupIfVisible(user, args.uid); }, metaGroup: async function(obj, args, context){ - let user = await authentifiers.anonymous(context.bindUser); + let user = await authentifiers.anonymous(context.user); return user && connectors.getMetaGroupIfVisible(user, args.uid); }, @@ -85,7 +89,7 @@ export const resolvers = { // user queries user: async function(obj, args, context){ - let user = await authentifiers.anonymous(context.bindUser); + let user = await authentifiers.anonymous(context.user); return user && connectors.getUser(user,args.uid); }, @@ -113,15 +117,15 @@ export const resolvers = { // member queries allMembers : async function(obj, args, context){ - let user = await authentifiers.member(context.bindUser, args.from); - return user && connectors.getGroupMemberUsers(context.bindUser, obj.groupUID); + let user = await authentifiers.member(context.user, args.from); + return user && connectors.getGroupMemberUsers(context.user, obj.groupUID); }, // speaker queries allRequests: async function(obj, args, context){ let res = []; - let user = authentifiers.admin(context.bindUser, args.from); + let user = authentifiers.admin(context.user, args.from); if(user){ res = res.concat(await connectors.getUserJoinGroupRequests(user, args.from)); } @@ -148,11 +152,11 @@ export const resolvers = { // @rights admin(obj.groupUID) UserJoinGroup: { user : (obj, args, context) => { - return connectors.getUser(context.bindUser, obj.useruid); - /*return connectors.getUser(context.bindUser, "quentin.gendre"); + return connectors.getUser(context.user, obj.useruid); + /*return connectors.getUser(context.user, "quentin.gendre"); if(obj.useruid === "anatole.romon"){ - return connectors.getUser(context.bindUser, "anatole.romon").then(res => { - return connectors.getUser(context.bindUser, "quentin.gendre"); + return connectors.getUser(context.user, "anatole.romon").then(res => { + return connectors.getUser(context.user, "quentin.gendre"); }); }else{ return new Promise( (resolve, reject) => { @@ -165,20 +169,20 @@ export const resolvers = { // @rights speaker(obj.groupUID) GroupJoinEvent : { event: (obj, args, context) => { - return connectors.getEvent(context.bindUser, obj.eventuid); + return connectors.getEvent(context.user, obj.eventuid); }, groupWantingToJoin: (obj, args, context) => { - return connectors.getGroup(context.bindUser, obj.senderuid); + return connectors.getGroup(context.user, obj.senderuid); } }, // @rights speaker(obj.groupUID) YourGroupHostEvent : { event: (obj, args, context) => { - return connectors.getEvent(context.bindUser, obj.eventuid); + return connectors.getEvent(context.user, obj.eventuid); }, sender: (obj, args, context) => { - return connectors.getGroup(context.bindUser, obj.senderuid); + return connectors.getGroup(context.user, obj.senderuid); } }, @@ -186,7 +190,7 @@ export const resolvers = { User : { groups : (obj, args, context) => { let result = Promise.all(obj.groups.map((grid) => { - return connectors.getSimpleGroup(context.bindUser,grid); + return connectors.getSimpleGroup(context.user,grid); })); return result.then(groups => { @@ -207,14 +211,14 @@ export const resolvers = { }, releaseAdminRights : async function(obj, args, context){ - let user = await authentifiers.superviser(user, args.from); + let user = await authentifiers.superviser(context.user, args.from); return user && await connectors.releaseAdminRights(user, args.from, user.justification); }, // Admin mutations createSubgroup: async function (obj, args, context){ - let user = authentifiers.admin(context.bindUser, args.from); + let user = authentifiers.admin(context.user, args.from); return user && connectors.createSubgroup(user, args); }, login: function (obj, args, context) { diff --git a/src/graphql/resolvers/groups.js b/src/graphql/resolvers/groups.ts similarity index 92% rename from src/graphql/resolvers/groups.js rename to src/graphql/resolvers/groups.ts index cf5f798..7e56a74 100644 --- a/src/graphql/resolvers/groups.js +++ b/src/graphql/resolvers/groups.ts @@ -23,7 +23,10 @@ const GroupResolvers = { async members(obj, args, context) { let user = await authentifiers.member(context.user, obj.uid); - return user.ldap_access.listMembers(context.user, obj.uid); + const res: String[] = await user.ldap_access.listMembers(context.user, obj.uid); + return res.map(x => { + return {uid: x}; + }); }, async likers(obj, args, context) { diff --git a/src/graphql/resolvers/messages.js b/src/graphql/resolvers/messages.js index e4c3a6b..c0b2a3a 100644 --- a/src/graphql/resolvers/messages.js +++ b/src/graphql/resolvers/messages.js @@ -5,7 +5,6 @@ import * as connectors from '../connectors/connectors'; const MessageResolvers = { Message: { - __resolveType: function(obj) { if (obj.location) { return "Event"; diff --git a/src/ldap/ldap_data.js b/src/ldap/ldap_data.js index 24407ef..dca4424 100644 --- a/src/ldap/ldap_data.js +++ b/src/ldap/ldap_data.js @@ -352,13 +352,13 @@ function genererIdNum(attribut, dn) { * @method repliquerTOLdesIds permet de retrouver des ids à partir d'infos parcellaires */ class UtilisateurAnonyme { - //------------------------------------------------------------------------------------------------------------------------ + //---------------------------------------------------------------------------------------------- // Fonctions de lecture - //------------------------------------------------------------------------------------------------------------------------ + //---------------------------------------------------------------------------------------------- - //------------------------------------------------------------------------------------------------------------------------ + //---------------------------------------------------------------------------------------------- // Fonctions intermédiaires TBT - //------------------------------------------------------------------------------------------------------------------------ + //---------------------------------------------------------------------------------------------- /** * @summary Cette fonction teste si un utilisateur est membre d'un groupe. @@ -404,14 +404,17 @@ class UtilisateurAnonyme { /** * @summary Fonction qui retrouve la liste des membres d'un groupe. * @desc Cette fonction utilise {@link rechercherLDAP} avec un dictionnaire prédéfini dans config.json. Elle utilise LDAPEscape pour éviter les injections. - * @arg {string} uid - Identifiant du groupe à interroger (le plus souvent nom du groupe en minuscule) + * @arg {string} uid - Identifiant de l'utilisateur interrogeant + * @arg {string} gid - Identifiant du groupe à interroger (le plus souvent nom du groupe en minuscule) * @return {Promise(String[])} Liste des uid des membres où l'id fournie est membre (noms flat des groupes) */ - listMembers(uid) { - let filtered_request = ldapEscape.filter(ldapConfig.key_id + "=${id}," + ldapConfig.dn_groups, { id: uid }); + listMembers(uid, gid) { + // console.log("Listing members of %s", gid); + let filtered_request = ldapEscape + .filter(ldapConfig.key_id + "=${id}," + ldapConfig.dn_groups, { id: gid }); // console.log(filtered_request); return rechercherLDAP(filtered_request, ldapConfig.group.member) - .then(res => res); + .then(res => res[0]); } /** -- GitLab