39 lines
726 B
JavaScript
39 lines
726 B
JavaScript
import { render } from 'vike/abort';
|
|
|
|
import { emailTemplates, listEmailTemplates } from '#/src/email-templates.js';
|
|
|
|
export default async function onBeforeRender(pageContext) {
|
|
if (!pageContext.user || pageContext.user.role === 'user') {
|
|
throw render(404);
|
|
}
|
|
|
|
const { template } = pageContext.routeParams;
|
|
|
|
if (!listEmailTemplates().includes(template)) {
|
|
throw render(404);
|
|
}
|
|
|
|
let html = null;
|
|
let text = null;
|
|
let error = null;
|
|
|
|
try {
|
|
({ html, text } = await emailTemplates.render(`${template}.vue`));
|
|
}
|
|
catch (renderError) {
|
|
error = renderError.message;
|
|
}
|
|
|
|
return {
|
|
pageContext: {
|
|
title: `E-mail Preview: ${template}`,
|
|
pageProps: {
|
|
template,
|
|
html,
|
|
text,
|
|
error,
|
|
},
|
|
},
|
|
};
|
|
}
|