diff --git a/.dockerignore b/.dockerignore index 46223d7..d71cde6 100644 --- a/.dockerignore +++ b/.dockerignore @@ -12,6 +12,9 @@ npm-debug.log # Build files public/dist/ +# Local config +.options.json + # Project files .github .editorconfig diff --git a/.gitignore b/.gitignore index 6fc0670..f2b73e1 100644 --- a/.gitignore +++ b/.gitignore @@ -11,3 +11,6 @@ npm-debug.log # Build files public/dist/ + +# Local config +.options.json diff --git a/middlewares/authorization.js b/middlewares/authorization.js index 7bdb3b2..f6474a1 100644 --- a/middlewares/authorization.js +++ b/middlewares/authorization.js @@ -27,7 +27,7 @@ module.exports = { if(!authDisabled) { // Check if user has an existing authorization cookie if (!req.cookies.authorization) { - res.redirect(302, '/login'); + res.redirect(302, `${req.headers['x-ingress-path'] ? req.headers['x-ingress-path'] : ''}/login`); return; } @@ -36,10 +36,10 @@ module.exports = { const check = jwt.verify(req.cookies.authorization); if(!check) { - res.cookie('flashMessage', JSON.stringify({type: 'error', message: 'Invalid or expired login!'}), {httpOnly: true, expires: new Date(Date.now() + 24 * 60 * 60 * 1000)}).redirect(302, '/login'); + res.cookie('flashMessage', JSON.stringify({type: 'error', message: 'Invalid or expired login!'}), {httpOnly: true, expires: new Date(Date.now() + 24 * 60 * 60 * 1000)}).redirect(302, `${req.headers['x-ingress-path'] ? req.headers['x-ingress-path'] : ''}/login`); } } catch (e) { - res.cookie('flashMessage', JSON.stringify({type: 'error', message: 'Invalid or expired login!'}), {httpOnly: true, expires: new Date(Date.now() + 24 * 60 * 60 * 1000)}).redirect(302, '/login'); + res.cookie('flashMessage', JSON.stringify({type: 'error', message: 'Invalid or expired login!'}), {httpOnly: true, expires: new Date(Date.now() + 24 * 60 * 60 * 1000)}).redirect(302, `${req.headers['x-ingress-path'] ? req.headers['x-ingress-path'] : ''}/login`); return; } } diff --git a/modules/config.js b/modules/config.js index b88e623..7adf02e 100644 --- a/modules/config.js +++ b/modules/config.js @@ -4,14 +4,20 @@ const fs = require('fs'); /** - * Get an option from external config (Home Assistant) + * Get an option from external config (Home Assistant / Local Development) * * @param option */ module.exports = (option) => { + // Check if Home Assistant config exists if (fs.existsSync('/data/options.json')) { return JSON.parse(fs.readFileSync('/data/options.json', 'utf-8'))[option]; } + // Check if Local (Development) config exists + if (fs.existsSync(`${__dirname}/../.options.json`)) { + return JSON.parse(fs.readFileSync(`${__dirname}/../.options.json`, 'utf-8'))[option]; + } + return null; }; diff --git a/server.js b/server.js index 79734b9..76595ad 100644 --- a/server.js +++ b/server.js @@ -70,6 +70,9 @@ if(fs.existsSync('/etc/unifi_voucher_site_build')) { if (fs.existsSync('/data/options.json')) { log.info('[Options] Found at /data/options.json'); } +if (fs.existsSync(`${__dirname}/.options.json`)) { + log.info(`[Options] Found at ${__dirname}/.options.json`); +} /** * Log service status