salix/modules/account/back/mixins/account-synchronizer.js

79 lines
1.9 KiB
JavaScript

const app = require('vn-loopback/server/server');
const UserError = require('vn-loopback/util/user-error');
module.exports = function(Self, options) {
require('../methods/account-synchronizer/test')(Self);
Self.once('attached', function() {
app.models.AccountConfig.addSynchronizer(Self);
});
/**
* Mixin for user synchronizers.
*
* @property {Array<Model>} $
* @property {Object} accountConfig
* @property {Object} mailConfig
*/
let Mixin = {
/**
* Initalizes the synchronizer.
*/
async init() {},
/**
* Deinitalizes the synchronizer.
*/
async deinit() {},
/**
* Get users to synchronize.
*
* @param {Set} usersToSync Set where users are added
*/
async getUsers(usersToSync) {},
/**
* Synchronizes a user.
*
* @param {Object} info User information
* @param {String} userName The user name
* @param {String} password Thepassword
*/
async syncUser(info, userName, password) {},
/**
* Synchronizes user groups.
*
* @param {Object} info User information
* @param {String} userName The user name
*/
async syncUserGroups(info, userName) {},
/**
* Synchronizes roles.
*/
async syncRoles() {},
/**
* Tests synchronizer configuration.
*/
async test() {
try {
await this.init();
await this.deinit();
} catch (e) {
let err = new UserError(e.message);
err.name = e.name;
throw err;
}
}
};
for (let method in Mixin) {
if (!Self.prototype[method])
Self.prototype[method] = Mixin[method];
}
};