Skip to content
Snippets Groups Projects
Commit 4cd4659b authored by Olivér FACKLAM's avatar Olivér FACKLAM
Browse files

[Groups] requests + children

parent 160379d7
No related branches found
No related tags found
No related merge requests found
......@@ -10,6 +10,7 @@ import { MetaGroup } from "../object_resolvers/groups/metaGroups";
import { Request } from "../object_resolvers/requests/requests";
import { User } from "../object_resolvers/users";
import knex from "../../../db/knex_router";
import { Group as LDAP_Group, groupData } from "../../ldap/export/group";
import { GroupCollection, GroupSet, Tools } from "../../utils/tools";
import { createSubgroupArgs, editGroupArgs } from "../typeDefs/queries";
import {Cache} from "../../utils/cache";
......@@ -139,6 +140,24 @@ export class GroupModel {
return res;
}
/**
* @memberof GraphQL.GroupModel#
* @function getAllMetaGroups
* @summary Fonction qui renvoie tous les méta-groupes donnés en argument.
* @arg {GroupSet} groups - Ensemble d'identifiants, supposés valides.
* @return {MetaGroup[]} Renvoie le tableau de groupes correspondant
* @rights connectedOrOnplatal
*/
async getAllMetaGroups(groups: GroupSet): Promise<MetaGroup[]> {
let res = new Array<MetaGroup>();
for (let g of groups) {
res.push(await this.getMetaGroup(g, false));
}
return res;
}
/**
* @memberof GraphQL.GroupModel#
* @function getAllMetaGroups
......@@ -208,6 +227,21 @@ export class GroupModel {
return null;
}
/**
* @memberof GraphQL.GroupModel#
* @function getSimpleGroupChildren
* @summary Fonction qui renvoie les enfants d'un groupe simple.
* @arg {string} gid - identifiant du groupe en question.
* @return {Promise(GroupSet)} Renvoie la frontpage.
* @rights viewer
*/
async getSimpleGroupChildren(gid: string): Promise<GroupSet> {
let gd = new groupData();
gd.parents = [gid];
let gids = await LDAP_Group.search(gd);
return new GroupSet(gids);
}
/**
* @memberof GraphQL.GroupModel#
* @function likeGroup
......
......@@ -88,7 +88,7 @@ export class RequestModel {
let r2 = await this.getGroupJoinMetagroupRequestsToGroup(gid);
let r3 = await this.getGroupCoauthorEventRequestsToGroup(gid);
let r: Request[];
let r = new Array<Request>();
return r.concat(r1, r2, r3);
}
......@@ -102,8 +102,8 @@ export class RequestModel {
* @rights admin du groupe
*/
async getUserJoinGroupRequestsToGroup(gid: string): Promise<UserJoinGroup[]> {
let result = await knex.select('rid').from('requests_user_join_group').where('request_to', gid);
return result.map(obj => new UserJoinGroup(obj.rid));
let result = await knex.select('rid').from('requests_user_join_group').where('to', gid);
return Promise.all(result.map(obj => this.getUserJoinGroupRequest(obj.rid)));
}
/**
......@@ -116,8 +116,8 @@ export class RequestModel {
* @rights admin du groupe
*/
async getGroupJoinMetagroupRequestsToGroup(gid: string): Promise<GroupJoinMetagroup[]> {
let result = await knex.select('rid').from('requests_group_join_metagroup').where('request_to', gid);
return result.map(obj => new GroupJoinMetagroup(obj.rid));
let result = await knex.select('rid').from('requests_group_join_metagroup').where('to', gid);
return Promise.all(result.map(obj => this.getGroupJoinMetagroupRequest(obj.rid)));
}
/**
......@@ -130,8 +130,8 @@ export class RequestModel {
* @rights admin du groupe
*/
async getGroupCoauthorEventRequestsToGroup(gid: string): Promise<GroupCoauthorEvent[]> {
let result = await knex.select('rid').from('requests_group_coauthor_event').where('request_to', gid);
return result.map(obj => new GroupCoauthorEvent(obj.rid));
let result = await knex.select('rid').from('requests_group_coauthor_event').where('to', gid);
return Promise.all(result.map(obj => this.getGroupCoauthorEventRequest(obj.rid)));
}
/**
......
......@@ -128,11 +128,7 @@ export class MetaGroup extends Group {
async members(args, context: Context, info): Promise<SimpleGroup[]> {
if (await context.models.auth.isViewer(this.gid)) {
let arg = await context.models.group.getAllSimpleGroupsFromMeta(this.gid);
let res = new Array<SimpleGroup>();
for (let g of arg) {
res.push(await context.models.group.getSimpleGroup(g, false));
}
return res;
return context.models.group.getAllSimpleGroups(arg);
/*let member_group_list = await knex.distinct().select().from('groups')
.innerJoin('meta_group_membership', 'groups.uid', 'meta_group_membership.member_uid')
......
......@@ -7,7 +7,7 @@ import { User } from '../users';
import { Group } from './groups';
import { MetaGroup } from './metaGroups';
import { Group as LDAP_Group } from '../../../ldap/export/group';
import { Group as LDAP_Group, groupData } from '../../../ldap/export/group';
import { userData } from '../../../ldap/export/user';
import { GroupSet } from '../../../utils/tools';
import { DataLoader } from '../../../utils/dataLoader'
......@@ -221,7 +221,7 @@ export class SimpleGroup extends Group {
async parents(args, context: Context, info): Promise<SimpleGroup[]> {
if (await context.models.auth.isViewer(this.gid)) {
let groups = await this.getParents();
return Promise.all(groups.map(gid => context.models.group.getSimpleGroup(gid, false)));
return context.models.group.getAllSimpleGroups(new GroupSet(groups));
}
throw new AuthenticationError("Not a viewer");
}
......@@ -241,7 +241,8 @@ export class SimpleGroup extends Group {
*/
async children(args, context: Context, info): Promise<SimpleGroup[]> {
if (await context.models.auth.isViewer(this.gid)) {
throw "Not implemented";
let gids = await context.models.group.getSimpleGroupChildren(this.gid);
return context.models.group.getAllSimpleGroups(gids);
}
throw new AuthenticationError("Not a viewer");
}
......@@ -257,11 +258,7 @@ export class SimpleGroup extends Group {
async memberOfMeta(args, context: Context, info): Promise<MetaGroup[]> {
if (await context.models.auth.isViewer(this.gid)) {
let arg = await context.models.group.getAllMetaGroupsFromSimple(this.gid);
let res = new Array<MetaGroup>();
for (let g of arg) {
res.push(await context.models.group.getMetaGroup(g, false));
}
return res;
return context.models.group.getAllMetaGroups(arg);
}
throw new AuthenticationError("Not a viewer");
}
......
......@@ -332,6 +332,52 @@ export const tests: TestSet = {
}
}
},
{
description: "memberOfMeta (SimpleGroup)",
query: `
query {
simpleGroup(gid: "br") {
memberOfMeta {gid}
}
}
`,
result: {
"data": {
"simpleGroup": {
"memberOfMeta": [
{
"gid": "federez"
}
]
}
}
}
},
{
description: "members (MetaGroup)",
query: `
query {
metaGroup(gid: "federez") {
members {
gid
}
}
}
`,
result: {
"data": {
"metaGroup": {
"members": [
{
"gid": "br"
}
]
}
}
}
},
]
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment