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

merge

parents 9a95dcee 18f9a81e
No related branches found
No related tags found
No related merge requests found
...@@ -11,7 +11,6 @@ ...@@ -11,7 +11,6 @@
"group":"ou=groups,dc=frankiz,dc=net", "group":"ou=groups,dc=frankiz,dc=net",
"user": "ou=eleves,dc=frankiz,dc=net" "user": "ou=eleves,dc=frankiz,dc=net"
}, },
"key_id": "uid",
"comment_3": "Placeholders et indications de contenu de certains champs du LDAP généré par frankiz pour les utilisateurs", "comment_3": "Placeholders et indications de contenu de certains champs du LDAP généré par frankiz pour les utilisateurs",
"user": { "user": {
...@@ -35,7 +34,7 @@ ...@@ -35,7 +34,7 @@
}, },
"comment_4": "Placeholders et indications de contenu de certains champs du LDAP généré par frankiz pour les groupes", "comment_4": "Placeholders et indications de contenu de certains champs du LDAP généré par frankiz pour les groupes",
"group": { "group": {
"gid": "uid", "gid": "cn",
"name": "sn", "name": "sn",
"site": "website", "site": "website",
"description": "description", "description": "description",
......
...@@ -70,7 +70,7 @@ export class AuthorizationModel { ...@@ -70,7 +70,7 @@ export class AuthorizationModel {
console.log("calling UT.peek from ldap connector (User Tool)...") console.log("calling UT.peek from ldap connector (User Tool)...")
let data = await UT.peek(this.uid); let data = await UT.peek(this.uid);
console.log("UT.peek returned with data:"); console.log("UT.peek returned with data:");
console.log(data); //console.log(data);
this.viewerOf = await Tools.viewerOf(data); this.viewerOf = await Tools.viewerOf(data);
this.memberOf = await Tools.memberOf(data); this.memberOf = await Tools.memberOf(data);
......
...@@ -6,6 +6,7 @@ ...@@ -6,6 +6,7 @@
import {ldapConfig, userData, categories} from '../internal/config'; import {ldapConfig, userData, categories} from '../internal/config';
import {Basics} from '../internal/basics'; import {Basics} from '../internal/basics';
import {Tools} from '../internal/tools'; import {Tools} from '../internal/tools';
import ldapEscape from 'ldap-escape';
//------------------------------------------------------------------------------------------------------------------------ //------------------------------------------------------------------------------------------------------------------------
// Classes à exporter TBT // Classes à exporter TBT
...@@ -34,7 +35,12 @@ export class User { ...@@ -34,7 +35,12 @@ export class User {
static async peek(uid: string) : Promise<userData> { static async peek(uid: string) : Promise<userData> {
try { try {
let data : userData = await Tools.peek<userData>("user", uid, userData); let data : userData = await Tools.peek<userData>("user", uid, userData);
for (let cat in categories) { data[cat] = await Basics.searchSingle("group", ldapConfig.group.key_id, "*", ldapConfig.group[cat]+"="+uid); } for (let cat of categories) {
let dn = ldapConfig.user.uid + "=" + ldapEscape.filter("${txt}", { txt: uid }) + "," + ldapConfig.dn.user;
console.log(ldapConfig.group[cat] + "=" + dn);
data[cat] = await Basics.searchSingle("group", ldapConfig.group.gid, null, ldapConfig.group[cat] + "=" + dn);
console.log(data[cat]);
}
return data; return data;
} }
catch(err) { catch(err) {
......
...@@ -101,7 +101,11 @@ export class Basics { ...@@ -101,7 +101,11 @@ export class Basics {
static search(domain: 'group'|'user', attributes: string[], id: string, filter: string, handler : (entry: any) => void) : Promise<void> { static search(domain: 'group'|'user', attributes: string[], id: string, filter: string, handler : (entry: any) => void) : Promise<void> {
Basics.adminBind(); Basics.adminBind();
let dn =""; let dn ="";
if (id != null) { dn+=ldapConfig.key_id+'='+ ldapEscape.dn("${txt}", { txt: id}) +','; } if (id != null) {
if (domain == "group") { dn+=ldapConfig.group.gid; }
else { dn += ldapConfig.user.uid; }
dn += '=' + ldapEscape.dn("${txt}", { txt: id }) + ',';
}
dn+=ldapConfig.dn[domain]; dn+=ldapConfig.dn[domain];
// Interrogation LDAP selon filter // Interrogation LDAP selon filter
let promise = new Promise<void>(function(resolve, reject) { let promise = new Promise<void>(function(resolve, reject) {
...@@ -144,6 +148,7 @@ export class Basics { ...@@ -144,6 +148,7 @@ export class Basics {
let vals=[]; let vals=[];
await Basics.search(domain, [attribute], id, filter, entry => { await Basics.search(domain, [attribute], id, filter, entry => {
// Cas un seul attribut où le résultat est une liste directement // Cas un seul attribut où le résultat est une liste directement
console.log(entry.object)
vals.push(entry.object[attribute]); vals.push(entry.object[attribute]);
}); });
return vals; return vals;
......
...@@ -34,20 +34,17 @@ export class Tools { ...@@ -34,20 +34,17 @@ export class Tools {
* @async * @async
*/ */
static async peek<T>(domain: 'user'|'group', id: string, type: new () => T) : Promise<T> { static async peek<T>(domain: 'user'|'group', id: string, type: new () => T) : Promise<T> {
var dirtyKeys = ldapConfig[domain]; let map = ldapConfig[domain];
let cleanData : T = new type(); let cleanKeys = Object.keys(map);
let attr = Object.keys(dirtyKeys).map(key => dirtyKeys[key]); let dirtyKeys = cleanKeys.map(key => map[key]);
//console.log(attr);
let dirtyData = (await Basics.searchMultiple(domain, attr, id))[0]; let cleanData: T = new type();
console.log(dirtyData); let dirtyData = (await Basics.searchMultiple(domain, dirtyKeys, id))[0];
console.log(cleanData);
// Rename output // Rename output
for (let uncleanKey in dirtyData) { for(let cleanKey of cleanKeys) {
for (let cleanKey of Object.keys(cleanData)) { cleanData[cleanKey] = dirtyData[map[cleanKey]];
console.log(cleanKey);
if (uncleanKey==dirtyKeys[cleanKey]) { cleanData[cleanKey] = dirtyData[uncleanKey]; }
}
} }
//console.log(cleanData);
return cleanData; return cleanData;
} }
......
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