31 lines
1.0 KiB
JavaScript
31 lines
1.0 KiB
JavaScript
import path from 'node:path';
|
|
import { fileURLToPath } from 'node:url';
|
|
import fastifyStatic from '@fastify/static';
|
|
import fastifyPlugin from 'fastify-plugin';
|
|
|
|
const projectRoot = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '../..');
|
|
const publicRoot = path.join(projectRoot, 'public');
|
|
|
|
async function staticPlugin(fastify, { config }) {
|
|
await fastify.register(fastifyStatic, {
|
|
root: config.imageRoot,
|
|
prefix: '/media/',
|
|
});
|
|
await fastify.register(fastifyStatic, {
|
|
root: publicRoot,
|
|
prefix: '/',
|
|
decorateReply: false,
|
|
});
|
|
|
|
fastify.get('/login', async (_request, reply) => reply.sendFile('login.html', publicRoot));
|
|
fastify.get('/', { preHandler: fastify.authenticatePage }, async (_request, reply) => (
|
|
reply.sendFile('index.html', publicRoot)
|
|
));
|
|
fastify.get('/recipe/:id', { preHandler: fastify.authenticatePage }, async (_request, reply) => (
|
|
reply.sendFile('recipe.html', publicRoot)
|
|
));
|
|
}
|
|
|
|
export default fastifyPlugin(staticPlugin, { name: 'static-pages' });
|
|
|