budibase/packages/worker/src/utilities/templates.ts

50 lines
1.7 KiB
TypeScript
Raw Normal View History

2022-11-16 19:13:34 +01:00
import { db as dbCore, tenancy } from "@budibase/backend-core"
import {
Config,
2022-11-16 19:13:34 +01:00
InternalTemplateBinding,
2021-05-05 13:11:31 +02:00
LOGO_URL,
EmailTemplatePurpose,
2022-11-16 19:13:34 +01:00
} from "../constants"
import { checkSlashesInUrl } from "./index"
const BASE_COMPANY = "Budibase"
2022-11-16 19:13:34 +01:00
export async function getSettingsTemplateContext(
purpose: EmailTemplatePurpose,
code?: string
) {
const db = tenancy.getGlobalDB()
// TODO: use more granular settings in the future if required
2022-11-16 19:13:34 +01:00
let settings =
(await dbCore.getScopedConfig(db, { type: Config.SETTINGS })) || {}
2021-04-23 19:54:12 +02:00
const URL = settings.platformUrl
2022-11-16 19:13:34 +01:00
const context: any = {
[InternalTemplateBinding.LOGO_URL]:
checkSlashesInUrl(`${URL}/${settings.logoUrl}`) || LOGO_URL,
2022-11-16 19:13:34 +01:00
[InternalTemplateBinding.PLATFORM_URL]: URL,
[InternalTemplateBinding.COMPANY]: settings.company || BASE_COMPANY,
[InternalTemplateBinding.DOCS_URL]:
2021-04-26 15:16:05 +02:00
settings.docsUrl || "https://docs.budibase.com/",
2022-11-16 19:13:34 +01:00
[InternalTemplateBinding.LOGIN_URL]: checkSlashesInUrl(
tenancy.addTenantToUrl(`${URL}/login`)
),
2022-11-16 19:13:34 +01:00
[InternalTemplateBinding.CURRENT_DATE]: new Date().toISOString(),
[InternalTemplateBinding.CURRENT_YEAR]: new Date().getFullYear(),
}
// attach purpose specific context
switch (purpose) {
case EmailTemplatePurpose.PASSWORD_RECOVERY:
2022-11-16 19:13:34 +01:00
context[InternalTemplateBinding.RESET_CODE] = code
context[InternalTemplateBinding.RESET_URL] = checkSlashesInUrl(
tenancy.addTenantToUrl(`${URL}/builder/auth/reset?code=${code}`)
)
break
case EmailTemplatePurpose.INVITATION:
2022-11-16 19:13:34 +01:00
context[InternalTemplateBinding.INVITE_CODE] = code
context[InternalTemplateBinding.INVITE_URL] = checkSlashesInUrl(
tenancy.addTenantToUrl(`${URL}/builder/invite?code=${code}`)
)
break
}
return context
2021-04-22 18:58:14 +02:00
}