feat: move setup POST to /api/setup

pull/239/head
Josh Moore 8 months ago
parent 7f04d365b6
commit 5e7016a0c6

@ -131,12 +131,12 @@ async function main() {
app.get('/.ass.version', (req, res) => res.type('text').send(req.ass.version));
// Basic page routers
app.use('/setup', buildFrontendRouter('setup', false));
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('/api', (await import('./routers/api.js')).router);
app.use('/', (await import('./routers/index.js')).router);

@ -5,9 +5,34 @@ import { UserConfig } from '../UserConfig';
import * as data from '../data';
import { AssUser, AssUserNewReq } from 'ass';
import { nanoid } from '../generators';
import { MySql } from '../sql/mysql';
const router = Router({ caseSensitive: true });
// Setup route
router.post('/setup', BodyParserJson(), async (req, res) => {
if (UserConfig.ready)
return res.status(409).json({ success: false, message: 'User config already exists' });
log.debug('Setup initiated');
try {
// Parse body
new UserConfig(req.body);
// Save config
await UserConfig.saveConfigFile();
// Set data storage (not files) to SQL if required
if (UserConfig.config.sql?.mySql != null)
await Promise.all([MySql.configure(), data.setDataModeToSql()]);
return res.json({ success: true });
} catch (err: any) {
return res.status(400).json({ success: false, message: err.message });
}
});
// todo: authenticate API endpoints
router.post('/user', BodyParserJson(), async (req, res) => {
if (!UserConfig.ready)

@ -1,39 +0,0 @@
import { path } from '@tycrek/joint';
import { Router, json as BodyParserJson } from 'express';
import { log } from '../log';
import { UserConfig } from '../UserConfig';
import { setDataModeToSql } from '../data';
import { MySql } from '../sql/mysql';
import { App } from '../app';
const router = Router({ caseSensitive: true });
// Static routes
router.get('/', (req, res) => UserConfig.ready ? res.redirect('/') : res.render('setup', { version: App.pkgVersion }));
router.get('/ui.js', (req, res) => UserConfig.ready ? res.send('') : res.type('text/javascript').sendFile(path.join('dist-frontend/setup.mjs')));
// Setup route
router.post('/', BodyParserJson(), async (req, res) => {
if (UserConfig.ready)
return res.status(409).json({ success: false, message: 'User config already exists' });
log.debug('Setup initiated');
try {
// Parse body
new UserConfig(req.body);
// Save config
await UserConfig.saveConfigFile();
// Set data storage (not files) to SQL if required
if (UserConfig.config.sql?.mySql != null)
await Promise.all([MySql.configure(), setDataModeToSql()]);
return res.json({ success: true });
} catch (err: any) {
return res.status(400).json({ success: false, message: err.message });
}
});
export { router };

@ -79,7 +79,7 @@ document.addEventListener('DOMContentLoaded', () => {
return adminErrReset('Admin password is required!');
// Do setup
fetch('/setup', {
fetch('/api/setup', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(config)
@ -109,7 +109,7 @@ document.addEventListener('DOMContentLoaded', () => {
if (data.success) window.location.href = '/login';
});
})
.catch((err) => errAlert('POST to /setup failed!', err))
.catch((err) => errAlert('POST to /api/setup failed!', err))
.finally(() => Elements.submitButton.disabled = false);
});
});

Loading…
Cancel
Save