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

This commit is contained in:
Jean-Christophe Haessig 2019-07-19 09:30:35 +02:00
parent f06098f3dd
commit be44fb8aea
2 changed files with 22 additions and 16 deletions

View file

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

View file

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