Skip to content
Snippets Groups Projects
Commit dd307d09 authored by Anatole ROMON's avatar Anatole ROMON
Browse files

ajout de createSubgroup

parent 805b41f0
No related branches found
No related tags found
No related merge requests found
......@@ -39,8 +39,8 @@ const getUsersWithAdminRights = (user, groupUID) => {
* @arg {Object} user - Objet contenant un attribut *uid* de type *string*. User représente l'utilisateur qui a effectué la requête.
* @return {Promise} Retour de requête knex. Liste de tous les groupes que l'utilisateur a le droit de voire.
*/
const hasAdminRights = (user, groupuid) => {
return getUsersWithAdminRights(user, groupuid).then(adminList => {
const hasAdminRights = (user, groupUID) => {
return getUsersWithAdminRights(user, groupUID).then(adminList => {
return (typeof adminList != "undefined" && adminList.indexOf(user.uid) != -1);
});
};
......@@ -91,13 +91,13 @@ const getGroupIfVisible = (user, uid) => {
* @arg {String} uid - L'uid du groupe dont on veut les administrateurs.
* @return {Promise} Retour de requête knex. Promise qui renvera une liste de tous les utilisateurs ayant droit d'admin sur le groupe
*/
const getAvailableGroupUID = (initialUID) => {
const getAvailablegroupUID = (initialUID) => {
let rasUID = initialUID.replace(' ', '_').replace(/\W/g, '').toLowerCase();
return knex.from('groups').where('uid', rasUID).then(res =>{
if(res.length == 0){
return(rasUID);
}else{
return(getAvailableGroupUID(rasUID + 'n'));
return(getAvailablegroupUID(rasUID + 'n'));
}
});
};
......@@ -112,13 +112,13 @@ const getAvailableGroupUID = (initialUID) => {
* @arg {Object} args - Les arguments envoyés à la mutation. Cf le schéma GraphQL
* @return {Promise} Retour de requête knex. Le groupe qui vient d'être créé. En cas d'echec, renvoie une erreur.
*/
const createSubroup = (user, args) => {
const createSubgroup = (user, args) => {
if(typeof args.parentuid != 'string')
throw "Illegal argument : parentuid must be a non null string";
if(typeof args.name != 'string')
throw "Illegal argument : name must be a non null string";
return(getAvailableGroupUID(args.uid).then(rasUID => {
return(getAvailablegroupUID(args.uid).then(rasUID => {
// TODO : appeller une fonction de ldap_data pour y créer un groupe.
return knex('groups').insert({
uid : rasUID,
......@@ -145,31 +145,10 @@ const createSubroup = (user, args) => {
* @return {Promise} Retour de requête knex. Le groupe qui vient d'être créé. En cas d'echec, renvoie une erreur.
*/
const createGroupIfLegal = (user, args) => {
if(typeof args.parentuid != 'string')
throw "Illegal argument : parentuid must be a string";
return getUsersWithAdminRights(user, args.parentuid).then( admin_list => {
if(typeof admin_list == undefined) //Cela arrive si arg.parentuid n'est pas un id de groupe valable (ou éventuellement si Chevalier fait de la merde)
throw "invalid argument : no group with id " + args.parentuid;
admin_list = admin_list.concat(['anatole.romon']); // pour les besoins des tests, anatole romon a tout les droits
if(admin_list.indexOf(user.uid) == -1)
return hasAdminRights(user, args.parentuid).then( answer => {
if( !answer )
throw "illegal request : you must have admin rights over a group to create a subgroup of that group";
if(typeof args.uid != "string")
args.uid = args.name;
return(getAvailableGroupUID(args.uid).then(rasUID => {
// TODO : appeller une fonction de ldap_data pour y créer un groupe.
return knex('groups').insert({
uid : rasUID,
parentuid : args.parentuid,
createdAt : knex.fn.now(),
updatedAt : this.createdAt,
name : args.name,
website : args.website,
description : args.description,
school : args.school
}).then( res => {
return getGroupIfVisible(user, rasUID);
});
}));
return createSubgroup(user, args);
});
};
......@@ -211,9 +190,9 @@ const resolvers = {
Mutation: {
asAdmin: (obj, args, context) => {
return hasAdminRights(context.user, args.groupid).then(res => {
return hasAdminRights(context.user, args.groupUID).then(res => {
if(res)
return {};
return {groupUID : args.groupUID};
else
throw "You do not have admin rights over this group";
});
......@@ -230,9 +209,8 @@ const resolvers = {
},
createSubgroup: (obj, args, context) => {
console.log("oh shit!");
return null;
args.parentuid = obj.groupUID;
return createSubgroup(context.user, args);
}
}
......
......@@ -8,9 +8,9 @@ const RootTypes = `
}
type Mutation {
asAdmin(groupid: String): AdminMutation
asMember(groupid: String): MemberMutation
asViewer(groupid: String): ViewerMutation
asAdmin(groupUID: String): AdminMutation
asMember(groupUID: String): MemberMutation
asViewer(groupUID: String): ViewerMutation
createGroup(
uid: ID = null
......
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