From 4586f68eaf3e2ce6bbab41653fa604238e6cc5f6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Thu, 4 Aug 2022 18:37:27 -0400 Subject: [PATCH 1/3] fix: race condition causing undefined ajaxify.data --- public/src/app.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/public/src/app.js b/public/src/app.js index 6560b911c1..b81bc59cc4 100644 --- a/public/src/app.js +++ b/public/src/app.js @@ -32,7 +32,11 @@ app.onDomReady = function () { }); }; -document.addEventListener('DOMContentLoaded', ajaxify.parseData); +if (document.readyState === 'loading') { + document.addEventListener('DOMContentLoaded', ajaxify.parseData); +} else { + ajaxify.parseData(); +} (function () { let appLoaded = false; From 55c5588a4bf744a014313b637462829b65600aee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Fri, 5 Aug 2022 08:11:11 -0400 Subject: [PATCH 2/3] fix: don't crash if target/user is undefined Error: TypeError: Cannot read properties of undefined (reading 'displayname') File: Flags.notify (/usr/src/app/src/flags.js:812:89) --- src/flags.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/flags.js b/src/flags.js index b5e3c53b64..cca52bb292 100644 --- a/src/flags.js +++ b/src/flags.js @@ -829,9 +829,10 @@ Flags.notify = async function (flagObj, uid, notifySelf = false) { }); uids = uids.concat(modUids[0]); } else if (flagObj.type === 'user') { + const targetDisplayname = flagObj.target && flagObj.target.user ? flagObj.target.user.displayname : '[[global:guest]]'; notifObj = await notifications.create({ type: 'new-user-flag', - bodyShort: `[[notifications:user_flagged_user, ${displayname}, ${flagObj.target.user.displayname}]]`, + bodyShort: `[[notifications:user_flagged_user, ${displayname}, ${targetDisplayname}]]`, bodyLong: await plugins.hooks.fire('filter:parse.raw', String(flagObj.description || '')), path: `/flags/${flagObj.flagId}`, nid: `flag:user:${flagObj.targetId}`, From 7e8ad785f49c305e2f2835ec51474a29f9090ff0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Fri, 5 Aug 2022 08:11:32 -0400 Subject: [PATCH 3/3] fix: don't crash if req.body.username is not string Error: req.body.username.trim is not a function File: authenticationController.login (/usr/src/app/src/controllers/authentication.js:247:40) --- src/controllers/authentication.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/controllers/authentication.js b/src/controllers/authentication.js index cf2d6a55a4..b97b0ca8c2 100644 --- a/src/controllers/authentication.js +++ b/src/controllers/authentication.js @@ -244,7 +244,7 @@ authenticationController.login = async (req, res, next) => { } const loginWith = meta.config.allowLoginWith || 'username-email'; - req.body.username = req.body.username.trim(); + req.body.username = String(req.body.username).trim(); const errorHandler = res.locals.noScriptErrors || helpers.noScriptErrors; try { await plugins.hooks.fire('filter:login.check', { req: req, res: res, userData: req.body });