const createUser = require("./createUser"); const enableUser = require("./enableUser"); const disableUser = require("./disableUser"); module.exports = async (appPackage, masterAppInternal, appName, instanceKey) => { const plugin = await constructPlugin( masterAppInternal, appName, instanceKey ); appPackage.behaviourSources._injected = plugin; createActions(appPackage); createTriggers(appPackage); } const createTriggers = (appPackage) => { const appDef = appPackage.appDefinition; appDef.triggers.push({ actionName: 'createUser', eventName: 'authApi:createUser:onComplete', optionsCreator: 'return {user:context.result};', condition: '' }); appDef.triggers.push({ actionName: 'enableUser', eventName: 'authApi:enableUser:onComplete', optionsCreator: 'return {username:context.username};', condition: '' }); appDef.triggers.push({ actionName: 'disableUser', eventName: 'authApi:disableUser:onComplete', optionsCreator: 'return {username:context.username};', condition: '' }); } const createActions = (appPackage) => { const appDef = appPackage.appDefinition; appDef.actions.createUser = { name: "createUser", behaviourSource: '_injected', behaviourName: 'createUser', initialOptions: {} }; appDef.actions.enableUser = { name: "enableUser", behaviourSource: '_injected', behaviourName: 'enableUser', initialOptions: {} }; appDef.actions.disableUser = { name: "disableUser", behaviourSource: '_injected', behaviourName: 'disableUser', initialOptions: {} }; } const constructPlugin = async (masterAppInternal, appName, instanceKey) => { const app = await masterAppInternal.getApplication(appName); const initialiseObj = { masterAppInternal, app, instanceKey }; return ({ createUser:createUser(initialiseObj), enableUser:enableUser(initialiseObj), disableUser:disableUser(initialiseObj) }); }