diff --git a/jslib b/jslib index bc43c68e..b0b6ad4e 160000 --- a/jslib +++ b/jslib @@ -1 +1 @@ -Subproject commit bc43c68eb98799c8b9e30a1dd8f60431dc1236c6 +Subproject commit b0b6ad4ebda9adc7f0ad403c7c24648ec9887c0b diff --git a/src/app/tabs/settings.component.html b/src/app/tabs/settings.component.html index 649587ff..1bf06600 100644 --- a/src/app/tabs/settings.component.html +++ b/src/app/tabs/settings.component.html @@ -190,6 +190,13 @@ +
+
+ + +
+
diff --git a/src/locales/en/messages.json b/src/locales/en/messages.json index c4c04ead..0436352e 100644 --- a/src/locales/en/messages.json +++ b/src/locales/en/messages.json @@ -577,5 +577,8 @@ "example": "server" } } + }, + "overwriteExisting": { + "message": "Overwrite existing organization users based on current sync settings." } } diff --git a/src/models/syncConfiguration.ts b/src/models/syncConfiguration.ts index 87c8506d..7da06bd7 100644 --- a/src/models/syncConfiguration.ts +++ b/src/models/syncConfiguration.ts @@ -5,6 +5,7 @@ export class SyncConfiguration { userFilter: string; groupFilter: string; removeDisabled = false; + overwriteExisting = false; // Ldap properties groupObjectClass: string; userObjectClass: string; diff --git a/src/services/sync.service.ts b/src/services/sync.service.ts index a90a89c5..2c25de80 100644 --- a/src/services/sync.service.ts +++ b/src/services/sync.service.ts @@ -48,7 +48,7 @@ export class SyncService { this.messagingService.send('dirSyncStarted'); try { - const entries = await directoryService.getEntries(force, test); + const entries = await directoryService.getEntries(force || syncConfig.overwriteExisting, test); let groups = entries[0]; let users = entries[1]; @@ -65,7 +65,7 @@ export class SyncService { return [groups, users]; } - const req = this.buildRequest(groups, users, syncConfig.removeDisabled); + const req = this.buildRequest(groups, users, syncConfig.removeDisabled, syncConfig.overwriteExisting); const reqJson = JSON.stringify(req); let hash: string = null; @@ -128,8 +128,10 @@ export class SyncService { } } - private buildRequest(groups: GroupEntry[], users: UserEntry[], removeDisabled: boolean): ImportDirectoryRequest { + private buildRequest(groups: GroupEntry[], users: UserEntry[], removeDisabled: boolean, + overwriteExisting: boolean): ImportDirectoryRequest { const model = new ImportDirectoryRequest(); + model.overwriteExisting = overwriteExisting; if (groups != null) { for (const g of groups) {