diff --git a/src/graphql/connectors/authentifiers.js b/src/graphql/connectors/authentifiers.js index 47fc848e76622bd4a1f5f8635bd10d91c7676496..4c6c0ad1da6040f2ae8befb6505d7c80c3e28faf 100644 --- a/src/graphql/connectors/authentifiers.js +++ b/src/graphql/connectors/authentifiers.js @@ -60,9 +60,9 @@ export function viewer(user, groupUID){ */ export async function member(user, groupUID){ let group_list = await selectors.groupsWithMember(user); - let test = await knex.with('group_list', group_list).select().from('group_list').where('uid', groupUID); - if(test[0]) - return new User(user, new UtilisateurConnecte(user)); + let test = group_list && await knex.with('group_list', group_list).select().from('group_list').where('uid', groupUID); + if(test && test[0]) + return new User(user, null); return await admin(user, groupUID); } @@ -87,7 +87,7 @@ export async function speaker(user, groupUID){ export async function admin(user, groupUID){ let adminList = await list_selectors.usersWithAdminRights(user, groupUID); if (typeof adminList != "undefined" && adminList.indexOf(user.uid) != -1) - return new User(user, AdministrateurConnecte()); + return new User(user, null); } /** @@ -100,8 +100,13 @@ export async function admin(user, groupUID){ */ export async function superviser(user, groupUID){ let supervised_groups = await list_selectors.supervisedGroups(user); - let i = supervised_groups.indexOf(groupUID); - if(i < 0) - return false; - return supervised_groups.justification(i) || true; + console.log(supervised_groups); + for(let i = 0; i < supervised_groups.length; i++){ + if(supervised_groups[i].uid == groupUID){ + let user_obj = new User(user, null); + user_obj.justification = (supervised_groups.justification && supervised_groups.justification[i]); + return user_obj; + } + } + return false; } \ No newline at end of file diff --git a/src/graphql/connectors/connectors.js b/src/graphql/connectors/connectors.js index ed3a360cd035a69c3293740ef482e9c8584defe0..1538d86380f9497e813f3538838dcf9d62c9d132 100644 --- a/src/graphql/connectors/connectors.js +++ b/src/graphql/connectors/connectors.js @@ -432,33 +432,34 @@ export async function allVisibleAnnouncements(user){ return result; } -export async function allVisiblePrivatePosts(user){ - let selection = await selectors.visiblePrivatePosts(user); - let result = await knex.select().from('private_posts').whereIn('id', selection); - for(r of result){ - r.type = 'PrivatePost'; +export async function recievedPrivatePosts(user, groupUID){ + let result = await knex('private_post').select() + .where('recipient_uid', groupUID); + for(element of result){ + element.type = 'PrivatePost'; } return result; } -export async function allVisibleQuestions(user){ - let selection = await selectors.visibleQuestions(user); - let result = await knex.select().from('questions').whereIn('id', selection); - for(r of result){ - r.type = 'Question'; +export async function receivedQuestions(user, groupUID){ + let result = await knex().select().from('question') + .where('recipient_uid', groupUID); + for(element of result){ + element.type = 'Question'; } return result; } -export async function allVisibleAnswers(user){ - let selection = await selectors.visibleAnswers(user); - let result = await knex.select().from('answers').whereIn('id', selection); - for(r of result){ - r.type = 'Answer'; +export async function recievedAnswers(user, groupUID){ + let result = await knex().select().from('answer') + .where('recipient_uid', groupUID); + for(element of result){ + element.type = 'Answer'; } return result; } + export async function visibleMessages(user, messageID){ } diff --git a/src/graphql/connectors/list_selectors.js b/src/graphql/connectors/list_selectors.js index ac714ae57e4e0c6c2e8571b9ba891fe8316a7b7f..2591c6b7e16a85b46adff6c4d812bc0b90f02418 100644 --- a/src/graphql/connectors/list_selectors.js +++ b/src/graphql/connectors/list_selectors.js @@ -48,13 +48,13 @@ export async function supervisedGroups(user){ .whereIn('member_uid', child_simple_groups); let new_start_groups = difference(child_simple_groups.concat(child_meta_groups), visited_groups); let new_visited_groups = visited_groups.concat(new_start_groups); - if(new_start_groups) + if(new_start_groups.length > 0) return recursive_explorer(new_visited_groups, new_start_groups); else return new_visited_groups; } - let groups_with_admin = await selectors.groupsWithAdmin(user)(knex); + let groups_with_admin = (await selectors.groupsWithAdmin(user))(knex); return recursive_explorer([], groups_with_admin); } diff --git a/src/graphql/connectors/selectors.js b/src/graphql/connectors/selectors.js index 5a3458930cecd6a46dc1ab4c37d4c149ba854155..85c16fb32925941ede3a94bf594f5f08fffc7f1b 100644 --- a/src/graphql/connectors/selectors.js +++ b/src/graphql/connectors/selectors.js @@ -44,7 +44,7 @@ export async function groupsWithSpeaker(user){ export async function groupsWithAdmin(user){ return function (query_builder){ - return null; + return ["kes"]; }; } @@ -63,25 +63,6 @@ export async function visibleEvents(user){ }; } -export async function visiblePrivatePosts(user){ - return query_builder => { - return query_builder; - }; -} - -export async function visibleQuestions(user){ - return query_builder => { - return query_builder; - }; -} - -export async function visibleAnswers(user){ - return query_builder => { - return query_builder; - }; -} - - export async function messageHosts(user, messageID){ return function(query_builder){ return query_builder.select({uid : 'group'}).from('group_message_relationships') diff --git a/src/graphql/resolvers.js b/src/graphql/resolvers.js index 9715465f8fba9b44ecf065690a111903aa929e62..09aecebef60945ec1cbd553f6a18f60c9203aa24 100644 --- a/src/graphql/resolvers.js +++ b/src/graphql/resolvers.js @@ -181,7 +181,7 @@ export const resolvers = { // Superviser mutations takeAdminRights : 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.takeAdminRights(user, args.from, user.justification); }, @@ -326,12 +326,42 @@ export const resolvers = { likers: async function(obj, args, context){ return connectors.utilisateur.listMembers(context.user,obj.uid); + }, + + privatePosts: async function(obj, args, context){ + let user = await authentifiers.member(context.user, obj.uid); + return user && connectors.recievedPrivatePosts(user, obj.uid); + }, + + questions: async function(obj, args, context){ + let user = await authentifiers.member(context.user, obj.uid); + return user && connectors.recievedQuestions(user, obj.uid); + }, + + answers: async function(obj, args, context){ + let user = await authentifiers.member(context.user, obj.uid); + return user && connectors.recievedAnswers(user, obj.uid); } }, // @rights viewer(obj.uid) MetaGroup: { members: (obj, args, context) => { + }, + + privatePosts: async function(obj, args, context){ + let user = await authentifiers.member(context.user, obj.uid); + return user && connectors.recievedPrivatePosts(user, obj.uid); + }, + + questions: async function(obj, args, context){ + let user = await authentifiers.member(context.user, obj.uid); + return user && connectors.recievedQuestions(user, obj.uid); + }, + + answers: async function(obj, args, context){ + let user = await authentifiers.member(context.user, obj.uid); + return user && connectors.recievedAnswers(user, obj.uid); } } }; diff --git a/src/graphql/typeDefs/objects.js b/src/graphql/typeDefs/objects.js index 2bd52bfd36deb35b63446c50fcbb31677386786b..625be4487c48418e4596fb4ca0800f9ae2618466 100644 --- a/src/graphql/typeDefs/objects.js +++ b/src/graphql/typeDefs/objects.js @@ -47,11 +47,11 @@ const Group = ` # member requests # Les posts prives dans ce groupe - # privatePosts: [PrivatePost] + privatePosts: [PrivatePost] # Les questions addressees à ce groupe - # questions: [Question] + questions: [Question] # Les reponses donnees par ce groupe - # answers: [Answer] + answers: [Answer] } @@ -74,6 +74,10 @@ const Group = ` school: String # Groupe parent parent: Group + + privatePosts: [PrivatePost] + questions: [Question] + answers: [Answer] } # Un groupe dont les membre sont d'autres groupes @@ -87,6 +91,10 @@ const Group = ` # Les groupes constitutifs du méta-groupe. members: [Group]! + + privatePosts: [PrivatePost] + questions: [Question] + answers: [Answer] } `;