Skip to content
Snippets Groups Projects
Commit 63189aaf authored by Quentin CHEVALIER's avatar Quentin CHEVALIER
Browse files

Simplification API

parent aa8808ed
No related branches found
No related tags found
No related merge requests found
......@@ -23,7 +23,7 @@ export class Group {
/**
* @memberof LDAP
* @summary Fonction qui renvoit toutes les infos relatives à un groupe particulier.
* @desc Cette fonction utilise {@link Tools.peek} avec l'interface {@link groupData}.
* @desc Cette fonction utilise {@link Tools.peek} avec l'interface {@link groupData}. Elle rajoute les individus
* @arg {string} gid - Identifiant du groupe
* @return {Promise(groupData)} Informations recueillies ; renvoie une liste de dictionnaire avec le profil complet du groupe au format {@link groupData}.
* @static
......@@ -59,19 +59,14 @@ export class Group {
/**
* @memberof LDAP
* @summary Fonction qui permet de rajouter un administrateur à un groupe.
* @desc Cette fonction fait essentiellement appel à {@link Tools.add}. Le nouvel administrateur devient aussi membre et porte-parole du groupe,
* mais hérite aussi de son statut d'administrateur sur tous les groupes qui héritent du sien.
* @desc Cette fonction fait essentiellement appel à {@link Tools.add}. Le nouvel administrateur ne devient pas membre ou porte-parole du groupe pour autant !
* @arg {string} uid - Identifiant du membre futur admin
* @arg {string} gid - Identifiant du groupe
* @return {boolean} `true` si la modification s'est bien déroulée, false sinon
* @async
* @static
*/
static async addAdmin(uid: string, gid: string): Promise<boolean> {
return await Tools.add(uid, gid, "members") &&
await Tools.add(uid, gid, "speakers") &&
await Tools.add(uid, gid, "admins");
}
static async addAdmin(uid: string, gid: string): Promise<boolean> { return await Tools.add(uid, gid, "admins"); }
/**
* @memberof LDAP
......@@ -84,24 +79,19 @@ export class Group {
* @async
* @static
*/
static async remAdmin(uid: string, gid: string): Promise<boolean> {
return Tools.remove(uid, gid, "admins");
}
static async remAdmin(uid: string, gid: string): Promise<boolean> { return Tools.remove(uid, gid, "admins"); }
/**
* @memberof LDAP
* @summary Fonction qui permet de rajouter un porte-parole à un groupe.
* @desc Cette fonction fait essentiellement appel à {@link Tools.add}. Elle rajoute également l'utilisateur au groupe.
* @desc Cette fonction fait essentiellement appel à {@link Tools.add}. Elle ne rajoute pas l'utilisateur au groupe.
* @arg {string} uid - Identifiant du membre futur porte-parole
* @arg {string} gid - Identifiant du groupe
* @return {boolean} `true` si la modification s'est bien déroulée, false sinon
* @async
* @static
*/
static async addSpeaker(uid: string, gid: string): Promise<boolean> {
return await Tools.add(uid, gid, "members") &&
await Tools.add(uid, gid, "speakers");
}
static async addSpeaker(uid: string, gid: string): Promise<boolean> { return await Tools.add(uid, gid, "speakers"); }
/**
* @memberof LDAP
......@@ -113,10 +103,7 @@ export class Group {
* @async
* @static
*/
static async remSpeaker(uid: string, gid: string): Promise<boolean> {
return await Tools.remove(uid, gid, "admins") &&
await Tools.remove(uid, gid, "speakers");
}
static async remSpeaker(uid: string, gid: string): Promise<boolean> { return await Tools.remove(uid, gid, "speakers"); }
/**
* @memberof LDAP
......@@ -128,15 +115,13 @@ export class Group {
* @async
* @static
*/
static async addMember(uid: string, gid: string) : Promise<boolean> {
return Tools.add(uid, gid, "members");
}
static async addMember(uid: string, gid: string) : Promise<boolean> { return Tools.add(uid, gid, "members"); }
/**
* @memberof LDAP
* @summary Fonction qui permet de supprimer un membre existant d'un groupe.
* @desc Cette fonction fait essentiellement appel à {@link Tools.add}.
* Cette fonction supprime tous les droits de l'utilisateur sur le groupe, mais aussi sur les groupes sources si sont statut de membre était hérité.
* Cette fonction supprime tous les droits de l'utilisateur sur le groupe, mais aussi sur les groupes sources si son statut de membre était hérité.
* @arg {string} uid - Identifiant de l'ex-membre (pas supposé valide)
* @arg {string} gid - Identifiant du groupe
* @return {Promise(boolean)} `true` si la modification s'est bien déroulée, false sinon
......@@ -144,6 +129,9 @@ export class Group {
* @static
*/
static async remMember(uid: string, gid: string): Promise<boolean> {
return await Tools.remove(uid, gid, "members");
// Ce qui suit est une suppression récursive du membre dans tous les groupes fils
let stack = [];
let res = true;
let visited = {};
......
/**
* Namespace qui regroupe toutes les fonctions en rapport avec le LDAP - API et fonctions internes
* @namespace LDAP
*/
/**
* @file Importe la configuration du LDAP au sein de l'application, et remplace certaines valeurs en fonction des variables d'environnement.
* @memberof LDAP
* @author manifold, hawkspar
......
......@@ -108,7 +108,7 @@ export class Tools {
let dirtyData = {};
Object.keys(data).forEach(function(key: string) {
// Some values edit can't change
if (!['readPerm','writePerm','groups','groupsIsAdmin','members','admins'].includes(key)) {
if (!['readPerm','writePerm','groups','groupsIsAdmin','followers','members','speakers','admins'].includes(key)) {
dirtyData[dirtyKeys.key]=data[key];
}
});
......@@ -335,9 +335,12 @@ export class Tools {
* @static
* @async
*/
static async get(id : string, domain : "user"|"group", category : string): Promise<string[]> { //"admins"|"speakers"|"members"|"followers") {
static async get(id : string, domain : "user"|"group", category : string): Promise<string[]> {
try {
if (!(category in ["admins","members"]) || domain=="group") {
return await Basics.searchSingle(domain, ldapConfig[domain][category], id);
// Ce qui suit est une récursion qui sera déplacée dans la gestion des autorisations
if (!(category in ["admins","members"]) || domain=="user") {
return await Basics.searchSingle(domain, ldapConfig[domain][category], id);
}
else {
......@@ -359,53 +362,7 @@ export class Tools {
}
}
catch(err) {
throw "Erreur lors de la recherche des groupes d'un individu.";
}
}
/**
* @memberof LDAP
* @summary Cette fonction teste si un utilisateur est membre d'un groupe.
* @desc Utilise les méthodes statiques {@link open.getGroups} et {@link open.getMembers}
* @param {string} uid - Identifiant de l'utilisateur à tester
* @param {string} gid - Identification du groupe à tester
* @returns {Promise(boolean)} True si l'utilisateur est membre
* @static
* @async
*/
static async isGroupMember(uid: string, gid: string) : Promise<boolean> {
try {
let lg = await Tools.get(uid, "user", "members");
let lm = await Tools.get(gid, "group", "members");
if (lg.includes(gid) && lm.includes(uid)) {
return true;
}
else { return false; }
}
catch(err) {
throw "Erreur lors du test d'appartenance à un groupe.";
}
}
/**
* @memberof LDAP
* @summary Cette fonction teste si un utilisateur est admin d'un groupe.
* @desc Utilise la méthode statique {@link Open.getAdmins}
* @param {string} uid - Identifiant de l'utilisateur à tester
* @param {string} gid - Identification du groupe à tester
* @returns {Promise(boolean)} True si l'utilisateur est administrateur
* @static
* @async
*/
static async isGroupAdmin(uid: string, gid: string) : Promise<boolean> {
try {
let lm = await Tools.get(uid, "user", "admins");
let la = await Tools.get(gid, "group", "admins");
if (la.includes(uid) && lm.includes(uid)) { return true; }
else { return false; }
}
catch(err) {
throw "Erreur lors du test d'appartenance au bureau d'administration un groupe.";
throw "Erreur lors d'une recherche générique d'un membre d'une certaine catégorie d'un groupe.";
}
}
}
\ No newline at end of file
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