UNPKG

authenzify

Version:

server to manage authentication authorization of users and more

88 lines (72 loc) 2.37 kB
import { render } from 'ejs' import { lstat, readFile } from 'fs/promises' export const getTemplateContentOrReadFile = async (content) => { const isFile = await lstat(content) .then((stats) => stats.isFile()) .catch(() => false) return isFile ? readFile(content, 'utf-8') : content } export const getTemplatesContentOrReadFile = async (template) => { return Object.fromEntries( await Promise.all( Object.entries(template).map(async ([key, fileNameOrContent]) => { const template = await getTemplateContentOrReadFile(fileNameOrContent) return [key, template] }), ), ) } export const loadEmailTemplates = async (templates) => { const resetPassword = await getTemplatesContentOrReadFile( templates.forgotPassword, ) const onVerification = await getTemplatesContentOrReadFile( templates.onVerification, ) const forgotPassword = await getTemplatesContentOrReadFile( templates.forgotPassword, ) const permissionsRequest = await getTemplatesContentOrReadFile( templates.permissionsRequest, ) const permissionsApprovedToUser = await getTemplatesContentOrReadFile( templates.permissionsApprovedToUser, ) const activation = await getTemplatesContentOrReadFile(templates.activation) const renderTemplate = (templates, params) => { const from = render(templates.from, params.from) const subject = render(templates.subject, params.subject) const html = render(templates.html, params.html) return { from, subject, html, } } const renderActivation = (params) => { return renderTemplate(activation, params) } const renderVerification = (params) => { return renderTemplate(onVerification, params) } const renderForgotPassword = (params) => { return renderTemplate(forgotPassword, params) } const renderPermissionsRequest = (params) => { return renderTemplate(permissionsRequest, params) } const renderPermissionsApprovedToUser = (params) => { return renderTemplate(permissionsApprovedToUser, params) } const renderResetPasswordRequested = (params) => { return renderTemplate(resetPassword, params) } return { renderActivation, renderVerification, renderForgotPassword, renderPermissionsRequest, renderResetPasswordRequested, renderPermissionsApprovedToUser, } }