85 lines
2.0 KiB
JavaScript
85 lines
2.0 KiB
JavaScript
const { getAppApis, getTemplateApi, crypto } = require("@budibase/core")
|
|
const getDatastore = require("./datastore")
|
|
const { masterAppPackage } = require("../utilities/createAppPackage")
|
|
const getDatabaseManager = require("../utilities/databaseManager")
|
|
|
|
const constructHierarchy = (datastore, appDefinition) => {
|
|
appDefinition.hierarchy = getTemplateApi({ datastore }).constructHierarchy(
|
|
appDefinition.hierarchy
|
|
)
|
|
return appDefinition
|
|
}
|
|
|
|
module.exports.getApisWithFullAccess = async (datastore, appPackage) => {
|
|
const appDefinition = constructHierarchy(datastore, appPackage.appDefinition)
|
|
|
|
const bb = await getAppApis(
|
|
datastore,
|
|
appPackage.behaviourSources,
|
|
null, //cleanupTransations
|
|
null, // getEpochTime
|
|
crypto,
|
|
appDefinition
|
|
)
|
|
|
|
bb.withFullAccess()
|
|
|
|
return bb
|
|
}
|
|
|
|
module.exports.getApisForUser = async (
|
|
datastore,
|
|
appPackage,
|
|
username,
|
|
password
|
|
) => {
|
|
const bb = await getAppApis(
|
|
datastore,
|
|
appPackage.behaviourSources,
|
|
null, //cleanupTransations
|
|
null, // getEpochTime
|
|
crypto,
|
|
constructHierarchy(datastore, appPackage.appDefinition)
|
|
)
|
|
|
|
await bb.authenticateAs(username, password)
|
|
|
|
return bb
|
|
}
|
|
|
|
module.exports.getApisForSession = async (datastore, appPackage, session) => {
|
|
const user = JSON.parse(session.user_json)
|
|
|
|
const bb = await getAppApis(
|
|
datastore,
|
|
appPackage.behaviourSources,
|
|
null, //cleanupTransations
|
|
null, // getEpochTime
|
|
crypto,
|
|
constructHierarchy(datastore, appPackage.appDefinition)
|
|
)
|
|
|
|
bb.asUser(user)
|
|
|
|
return bb
|
|
}
|
|
|
|
module.exports.getMasterApisWithFullAccess = async context => {
|
|
const { config } = context
|
|
const datastoreModule = getDatastore(config)
|
|
|
|
const databaseManager = getDatabaseManager(
|
|
datastoreModule,
|
|
config.datastoreConfig
|
|
)
|
|
|
|
const masterDatastore = datastoreModule.getDatastore(
|
|
databaseManager.masterDatastoreConfig
|
|
)
|
|
|
|
return await module.exports.getApisWithFullAccess(
|
|
masterDatastore,
|
|
masterAppPackage(context)
|
|
)
|
|
}
|