Fixed missing x-ingress-path within authorization.js redirects. Implemented local/development .options.json config

This commit is contained in:
Glenn de Haan
2024-08-21 21:05:31 +02:00
parent 3ba8d33456
commit 89bc27aef0
5 changed files with 19 additions and 4 deletions

View File

@@ -12,6 +12,9 @@ npm-debug.log
# Build files # Build files
public/dist/ public/dist/
# Local config
.options.json
# Project files # Project files
.github .github
.editorconfig .editorconfig

3
.gitignore vendored
View File

@@ -11,3 +11,6 @@ npm-debug.log
# Build files # Build files
public/dist/ public/dist/
# Local config
.options.json

View File

@@ -27,7 +27,7 @@ module.exports = {
if(!authDisabled) { if(!authDisabled) {
// Check if user has an existing authorization cookie // Check if user has an existing authorization cookie
if (!req.cookies.authorization) { if (!req.cookies.authorization) {
res.redirect(302, '/login'); res.redirect(302, `${req.headers['x-ingress-path'] ? req.headers['x-ingress-path'] : ''}/login`);
return; return;
} }
@@ -36,10 +36,10 @@ module.exports = {
const check = jwt.verify(req.cookies.authorization); const check = jwt.verify(req.cookies.authorization);
if(!check) { 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) { } 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; return;
} }
} }

View File

@@ -4,14 +4,20 @@
const fs = require('fs'); const fs = require('fs');
/** /**
* Get an option from external config (Home Assistant) * Get an option from external config (Home Assistant / Local Development)
* *
* @param option * @param option
*/ */
module.exports = (option) => { module.exports = (option) => {
// Check if Home Assistant config exists
if (fs.existsSync('/data/options.json')) { if (fs.existsSync('/data/options.json')) {
return JSON.parse(fs.readFileSync('/data/options.json', 'utf-8'))[option]; 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; return null;
}; };

View File

@@ -70,6 +70,9 @@ if(fs.existsSync('/etc/unifi_voucher_site_build')) {
if (fs.existsSync('/data/options.json')) { if (fs.existsSync('/data/options.json')) {
log.info('[Options] Found at /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 * Log service status