feat: made basic page routers universal

pull/239/head
Josh Moore 12 months ago
parent b7f79a49fd
commit 7f04d365b6

@ -10,6 +10,7 @@ import { ensureFiles } from './data';
import { UserConfig } from './UserConfig';
import { ServerConfiguration } from 'ass';
import { MySql } from './sql/mysql';
import { buildFrontendRouter } from './routers/_frontend';
/**
* Top-level metadata exports
@ -129,11 +130,13 @@ async function main() {
app.get('/.ass.host', (req, res) => res.type('text').send(req.ass.host));
app.get('/.ass.version', (req, res) => res.type('text').send(req.ass.version));
// Routers
// Basic page routers
app.use('/login', buildFrontendRouter('login'));
app.use('/admin', buildFrontendRouter('admin'));
app.use('/user', buildFrontendRouter('user'));
// Advanced routers
app.use('/setup', (await import('./routers/setup.js')).router);
app.use('/login', (await import('./routers/login.js')).router);
app.use('/admin', (await import('./routers/admin.js')).router);
app.use('/user', (await import('./routers/user.js')).router);
app.use('/api', (await import('./routers/api.js')).router);
app.use('/', (await import('./routers/index.js')).router);

@ -0,0 +1,30 @@
import { path } from '@tycrek/joint';
import { Router } from 'express';
import { UserConfig } from '../UserConfig';
import { App } from '../app';
/**
* Builds a basic router for loading a page with frontend JS
*/
export const buildFrontendRouter = (page: string, onConfigReady = true) => {
// Config readiness checker
const ready = () => (onConfigReady)
? UserConfig.ready
: !UserConfig.ready;
// Set up a router
const router = Router({ caseSensitive: true });
// Render the page
router.get('/', (_req, res) => ready()
? res.render(page, { version: App.pkgVersion })
: res.redirect('/'));
// Load frontend JS
router.get('/ui.js', (_req, res) => ready()
? res.type('text/javascript').sendFile(path.join(`dist-frontend/${page}.mjs`))
: res.sendStatus(403));
return router;
};

@ -1,16 +0,0 @@
import { path } from '@tycrek/joint';
import { Router, json as BodyParserJson } from 'express';
import { log } from '../log';
import { UserConfig } from '../UserConfig';
import { App } from '../app';
const router = Router({ caseSensitive: true });
// Static routes
router.get('/', (req, res) => !UserConfig.ready ? res.redirect('/') : res.render('admin', { version: App.pkgVersion }));
router.get('/ui.js', (req, res) => !UserConfig.ready ? res.send('') : res.type('text/javascript').sendFile(path.join('dist-frontend/admin.mjs')));
router.post('/', BodyParserJson(), async (req, res) => {
});
export { router };

@ -1,16 +0,0 @@
import { path } from '@tycrek/joint';
import { Router, json as BodyParserJson } from 'express';
import { log } from '../log';
import { UserConfig } from '../UserConfig';
import { App } from '../app';
const router = Router({ caseSensitive: true });
// Static routes
router.get('/', (req, res) => !UserConfig.ready ? res.redirect('/') : res.render('login', { version: App.pkgVersion }));
router.get('/ui.js', (req, res) => !UserConfig.ready ? res.send('') : res.type('text/javascript').sendFile(path.join('dist-frontend/login.mjs')));
router.post('/', BodyParserJson(), async (req, res) => {
});
export { router };

@ -1,16 +0,0 @@
import { path } from '@tycrek/joint';
import { Router, json as BodyParserJson } from 'express';
import { log } from '../log';
import { UserConfig } from '../UserConfig';
import { App } from '../app';
const router = Router({ caseSensitive: true });
// Static routes
router.get('/', (req, res) => !UserConfig.ready ? res.redirect('/') : res.render('user', { version: App.pkgVersion }));
router.get('/ui.js', (req, res) => !UserConfig.ready ? res.send('') : res.type('text/javascript').sendFile(path.join('dist-frontend/user.mjs')));
router.post('/', BodyParserJson(), async (req, res) => {
});
export { router };
Loading…
Cancel
Save