Browse Source

Makes LDAP background sync work. If the sync interval is unspecified, falls back to a hourly default.

Jean-Christophe Haessig 5 years ago
parent
commit
be44fb8aea
2 changed files with 22 additions and 16 deletions
  1. 1 1
      packages/wekan-ldap/package.js
  2. 21 15
      packages/wekan-ldap/server/sync.js

+ 1 - 1
packages/wekan-ldap/package.js

@@ -21,7 +21,7 @@ Package.onUse(function(api) {
 
 	api.use('accounts-base', 'server');
 	api.use('accounts-password', 'server');
-
+	api.use('percolate:synced-cron', 'server');
 	api.addFiles('client/loginHelper.js', 'client');
 
 	api.mainModule('server/index.js', 'server');

+ 21 - 15
packages/wekan-ldap/server/sync.js

@@ -1,4 +1,5 @@
 import _ from 'underscore';
+import SyncedCron from 'meteor/percolate:synced-cron';
 import LDAP from './ldap';
 import { log_debug, log_info, log_warn, log_error } from './logger';
 
@@ -418,30 +419,35 @@ function sync() {
 const jobName = 'LDAP_Sync';
 
 const addCronJob = _.debounce(Meteor.bindEnvironment(function addCronJobDebounced() {
+  let sc=SyncedCron.SyncedCron; //Why ?? something must be wrong in the import
   if (LDAP.settings_get('LDAP_BACKGROUND_SYNC') !== true) {
     log_info('Disabling LDAP Background Sync');
-    if (SyncedCron.nextScheduledAtDate(jobName)) {
-      SyncedCron.remove(jobName);
+    if (sc.nextScheduledAtDate(jobName)) {
+      sc.remove(jobName);
     }
     return;
   }
 
-  if (LDAP.settings_get('LDAP_BACKGROUND_SYNC_INTERVAL')) {
-    log_info('Enabling LDAP Background Sync');
-    SyncedCron.add({
-      name: jobName,
-      schedule: (parser) => parser.text(LDAP.settings_get('LDAP_BACKGROUND_SYNC_INTERVAL')),
-      job() {
-        sync();
-      },
-    });
-    SyncedCron.start();
-  }
+  log_info('Enabling LDAP Background Sync');
+  sc.add({
+    name: jobName,
+    schedule: function(parser) {
+    if (LDAP.settings_get('LDAP_BACKGROUND_SYNC_INTERVAL')) {
+       return parser.text(LDAP.settings_get('LDAP_BACKGROUND_SYNC_INTERVAL'));
+    }
+    else {
+       return parser.recur().on(0).minute();
+    }},
+    job: function() {
+      sync();
+    },
+  });
+  sc.start();
+
 }), 500);
 
 Meteor.startup(() => {
   Meteor.defer(() => {
-    LDAP.settings_get('LDAP_BACKGROUND_SYNC', addCronJob);
-    LDAP.settings_get('LDAP_BACKGROUND_SYNC_INTERVAL', addCronJob);
+    if(LDAP.settings_get('LDAP_BACKGROUND_SYNC')){addCronJob();}
   });
 });