feat: redirect user to the page they originally requested

pull/239/head
Josh Moore 7 months ago
parent b46198eb47
commit 4b68cb7c31

@ -44,7 +44,11 @@ const assMetaMiddleware = (port: number, proxied: boolean): RequestHandler =>
const loginRedirectMiddleware = async (req: Request, res: Response, next: NextFunction) => {
// If auth doesn't exist yet, make the user login
if (!req.session.ass?.auth) res.redirect('/login');
if (!req.session.ass?.auth) {
req.session.ass!.preLoginPath = req.baseUrl;
log.warn('User not logged in', req.baseUrl);
res.redirect('/login');
}
else {
const user = (await get('users', req.session.ass.auth.uid)) as AssUser;

@ -58,7 +58,11 @@ router.post('/login', BodyParserJson(), (req, res) => {
token: ''
};
res.json({ success, message: `User [${user.username}] ${success ? 'logged' : 'failed to log'} in` });
// Respond
res.json({ success, message: `User [${user.username}] ${success ? 'logged' : 'failed to log'} in`, meta: { redirectTo: req.session.ass?.preLoginPath ?? '/user' } });
// Delete the pre-login path after successful login
if (success) delete req.session.ass?.preLoginPath;
})
.catch((err) => res.status(400).json({ success: false, message: err.message }));
});

@ -8,6 +8,7 @@ declare module 'express-session' {
uid: string;
token: string;
}
preLoginPath?: string;
}
}
}

@ -36,10 +36,11 @@ document.addEventListener('DOMContentLoaded', () => {
.then((res) => res.json())
.then((data: {
success: boolean,
message: string
message: string,
meta: { redirectTo: string }
}) => {
if (!data.success) alert(data.message);
else window.location.href = '/user';
else window.location.href = data.meta.redirectTo;
})
.catch((err) => errAlert('POST to /api/login failed!', err))
.finally(() => Elements.submitButton.disabled = false);

Loading…
Cancel
Save