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

77 lines
1.9 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.push({
name: "createUser",
behaviourSource: "_injected",
behaviourName: "createUser",
initialOptions: {},
})
appDef.actions.push({
name: "enableUser",
behaviourSource: "_injected",
behaviourName: "enableUser",
initialOptions: {},
})
appDef.actions.push({
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),
}
}