45 lines
938 B
JavaScript
45 lines
938 B
JavaScript
const {
|
|
parseFilter,
|
|
} = require('ldapjs');
|
|
const {
|
|
getProviderLDAPEntries,
|
|
} = require('./provider');
|
|
const {
|
|
makeGroupEntry,
|
|
addMemberToGroup,
|
|
} = require('./ldap');
|
|
const {
|
|
customGroups,
|
|
} = require('../config');
|
|
|
|
|
|
function getLDAPCustomGroupEntries() {
|
|
if (!customGroups) {
|
|
return [];
|
|
}
|
|
|
|
const baseGroupEntry = makeGroupEntry('ou=CustomGroups', 'CustomGroups', []);
|
|
const allEntries = getProviderLDAPEntries();
|
|
|
|
const groupEntries = customGroups.map(g => {
|
|
const groupEntry = makeGroupEntry(`ou=${g.name},ou=CustomGroups`, g.name, []);
|
|
addMemberToGroup(groupEntry, baseGroupEntry);
|
|
|
|
const members = allEntries.filter(o => {
|
|
return g.members.indexOf(o.attributes.mail) >= 0;
|
|
});
|
|
|
|
members.forEach(p => {
|
|
addMemberToGroup(p, groupEntry);
|
|
});
|
|
|
|
return groupEntry;
|
|
});
|
|
|
|
return [].concat(baseGroupEntry, groupEntries);
|
|
}
|
|
|
|
module.exports = {
|
|
getLDAPCustomGroupEntries,
|
|
};
|