1
0
mirror of https://github.com/bitwarden/directory-connector synced 2025-12-05 23:53:21 +00:00

okta filters

This commit is contained in:
Kyle Spearrin
2018-05-03 08:49:26 -04:00
parent 91b0943a8b
commit 27c5909d7f
2 changed files with 23 additions and 3 deletions

View File

@@ -122,7 +122,6 @@ export class GSuiteDirectoryService implements DirectoryService {
entry.email = user.primaryEmail;
entry.disabled = user.suspended || false;
entry.deleted = deleted;
// entry.creationDate = user.creationTime; // TODO: string to date conversion
return entry;
}

View File

@@ -56,13 +56,17 @@ export class OktaDirectoryService implements DirectoryService {
private async getUsers(force: boolean): Promise<UserEntry[]> {
const entries: UserEntry[] = [];
const lastSync = await this.configurationService.getLastUserSyncDate();
const filter = this.buildFilter(this.syncConfig.userFilter, force, lastSync);
this.logService.info('Querying users.');
await this.client.listUsers().each((user: any) => {
await this.client.listUsers({ filter: filter }).each((user: any) => {
const entry = this.buildUser(user);
if (entry != null) {
entries.push(entry);
}
});
return entries;
}
@@ -78,8 +82,11 @@ export class OktaDirectoryService implements DirectoryService {
private async getGroups(force: boolean): Promise<GroupEntry[]> {
const entries: GroupEntry[] = [];
const lastSync = await this.configurationService.getLastGroupSyncDate();
const filter = this.buildFilter(this.syncConfig.groupFilter, force, lastSync);
this.logService.info('Querying groups.');
await this.client.listGroups().each((group: any) => {
await this.client.listGroups({ filter: filter }).each((group: any) => {
const entry = this.buildGroup(group);
if (entry != null) {
entries.push(entry);
@@ -95,4 +102,18 @@ export class OktaDirectoryService implements DirectoryService {
entry.name = group.profile.name;
return entry;
}
private buildFilter(baseFilter: string, force: boolean, lastSync: Date) {
baseFilter = baseFilter == null || baseFilter.trim() === '' ? null : baseFilter;
if (force || lastSync == null) {
return baseFilter;
}
const updatedFilter = 'lastUpdated gt ' + lastSync.toISOString();
if (baseFilter == null) {
return updatedFilter;
}
return '(' + baseFilter + ') and ' + updatedFilter;
}
}