Skip to content

Commit

Permalink
Fixed missing x-ingress-path within authorization.js redirects. Imple…
Browse files Browse the repository at this point in the history
…mented local/development .options.json config
  • Loading branch information
glenndehaan committed Aug 21, 2024
1 parent 3ba8d33 commit 89bc27a
Show file tree
Hide file tree
Showing 5 changed files with 19 additions and 4 deletions.
3 changes: 3 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,9 @@ npm-debug.log
# Build files
public/dist/

# Local config
.options.json

# Project files
.github
.editorconfig
Expand Down
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -11,3 +11,6 @@ npm-debug.log

# Build files
public/dist/

# Local config
.options.json
6 changes: 3 additions & 3 deletions middlewares/authorization.js
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}

Expand All @@ -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;
}
}
Expand Down
8 changes: 7 additions & 1 deletion modules/config.js
Original file line number Diff line number Diff line change
Expand Up @@ -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;
};
3 changes: 3 additions & 0 deletions server.js
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down

0 comments on commit 89bc27a

Please sign in to comment.