budibase/packages/server/utilities/injectedPlugins/index.js

77 lines
2.1 KiB
JavaScript

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)
});
}