79 lines
1.9 KiB
JavaScript
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];
|
||
|
}
|
||
|
};
|