52 lines
1.2 KiB
JavaScript
52 lines
1.2 KiB
JavaScript
|
|
const SyncEngine = require('../../util/sync-engine');
|
|
|
|
module.exports = Self => {
|
|
Self.remoteMethod('sync', {
|
|
description: 'Synchronizes the user with the other user databases',
|
|
accepts: [
|
|
{
|
|
arg: 'userName',
|
|
type: 'string',
|
|
description: 'The user name',
|
|
required: true
|
|
}, {
|
|
arg: 'password',
|
|
type: 'string',
|
|
description: 'The password'
|
|
}
|
|
],
|
|
http: {
|
|
path: `/:userName/sync`,
|
|
verb: 'PATCH'
|
|
}
|
|
});
|
|
|
|
Self.sync = async function(userName, password) {
|
|
let $ = Self.app.models;
|
|
|
|
let user = await $.Account.findOne({
|
|
fields: ['id'],
|
|
where: {name: userName}
|
|
});
|
|
let isSync = !await $.UserSync.exists(userName);
|
|
|
|
if (user && isSync) return;
|
|
|
|
let err;
|
|
let engine = new SyncEngine();
|
|
await engine.init($);
|
|
|
|
try {
|
|
await engine.sync(userName, password, true);
|
|
await $.UserSync.destroyById(userName);
|
|
} catch (e) {
|
|
err = e;
|
|
}
|
|
|
|
await engine.deinit();
|
|
if (err) throw err;
|
|
};
|
|
};
|
|
|