From a378106851c454672708d9465b2fa5f256b7f801 Mon Sep 17 00:00:00 2001 From: Sabe Jones Date: Thu, 2 Jul 2020 20:56:19 +0000 Subject: [PATCH 1/4] fix(script): better dupe matching --- scripts/gdpr-delete-users.js | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/scripts/gdpr-delete-users.js b/scripts/gdpr-delete-users.js index c512a58416..25de6fd472 100644 --- a/scripts/gdpr-delete-users.js +++ b/scripts/gdpr-delete-users.js @@ -35,15 +35,14 @@ async function deleteAmplitudeData (userId, email) { async function deleteHabiticaData (user, email) { const truncatedEmail = email.slice(0, email.indexOf('@')); + const set = { + 'auth.local.hashed_password': '$2a$10$QDnNh1j1yMPnTXDEOV38xOePEWFd4X8DSYwAM8XTmqmacG5X0DKjW', + 'auth.local.passwordHashMethod': 'bcrypt', + }; + if (!user.auth.local.email) set['auth.local.email'] = `${truncatedEmail}@example.com`; await User.update( { _id: user._id }, - { - $set: { - 'auth.local.email': user.auth.local.email ? email : `${truncatedEmail}@example.com`, - 'auth.local.hashed_password': '$2a$10$QDnNh1j1yMPnTXDEOV38xOePEWFd4X8DSYwAM8XTmqmacG5X0DKjW', - 'auth.local.passwordHashMethod': 'bcrypt', - }, - }, + { $set: set }, ); const response = await axios.delete( `${BASE_URL}/api/v3/user`, @@ -78,6 +77,7 @@ async function processEmailAddress (email) { const socialUsers = await User.find( { + 'auth.local.email': {$not: emailRegex}, $or: [ { 'auth.facebook.emails.value': email }, { 'auth.google.emails.value': email }, From c4d131744b1ae72f7dd3ed3dc8802b723b0b6b16 Mon Sep 17 00:00:00 2001 From: Sabe Jones Date: Thu, 2 Jul 2020 16:50:41 -0500 Subject: [PATCH 2/4] fix(lint): let Curly breathe --- scripts/gdpr-delete-users.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/gdpr-delete-users.js b/scripts/gdpr-delete-users.js index 25de6fd472..381dd8c7d4 100644 --- a/scripts/gdpr-delete-users.js +++ b/scripts/gdpr-delete-users.js @@ -77,7 +77,7 @@ async function processEmailAddress (email) { const socialUsers = await User.find( { - 'auth.local.email': {$not: emailRegex}, + 'auth.local.email': { $not: emailRegex }, $or: [ { 'auth.facebook.emails.value': email }, { 'auth.google.emails.value': email }, From 1efcaa4a1da47d3992411d6f89f3506a95eb24fd Mon Sep 17 00:00:00 2001 From: Matteo Pagliazzi Date: Fri, 3 Jul 2020 14:17:39 +0200 Subject: [PATCH 3/4] fix #12364, profile of logged in user did not show up correctly --- .../src/components/userMenu/profile.vue | 52 ++++++++++--------- 1 file changed, 28 insertions(+), 24 deletions(-) diff --git a/website/client/src/components/userMenu/profile.vue b/website/client/src/components/userMenu/profile.vue index 84a2e89eef..6eed23f91e 100644 --- a/website/client/src/components/userMenu/profile.vue +++ b/website/client/src/components/userMenu/profile.vue @@ -858,33 +858,37 @@ export default { }); } else if (response.status && response.status === 200) { user = response.data.data; - - this.editingProfile.name = user.profile.name; - this.editingProfile.imageUrl = user.profile.imageUrl; - this.editingProfile.blurb = user.profile.blurb; - - if (!user.achievements.quests) user.achievements.quests = {}; - if (!user.achievements.challenges) user.achievements.challenges = {}; - // @TODO: this common code should handle the above - this.achievements = achievementsLib.getAchievementsForProfile(user); - - const achievementsCategories = {}; - Object.keys(this.achievements).forEach(category => { - achievementsCategories[category] = { - open: false, - number: Object.keys(this.achievements[category].achievements).length, - }; - }); - - this.achievementsCategories = achievementsCategories; - - // @TODO For some reason markdown doesn't seem to be handling numbers or maybe undefined? - user.profile.blurb = user.profile.blurb ? `${user.profile.blurb}` : ''; } - this.user = user; } else { - this.user = this.userLoggedIn; + user = this.userLoggedIn; } + + if (user) { + this.editingProfile.name = user.profile.name; + this.editingProfile.imageUrl = user.profile.imageUrl; + this.editingProfile.blurb = user.profile.blurb; + + if (!user.achievements.quests) user.achievements.quests = {}; + if (!user.achievements.challenges) user.achievements.challenges = {}; + // @TODO: this common code should handle the above + this.achievements = achievementsLib.getAchievementsForProfile(user); + + const achievementsCategories = {}; + Object.keys(this.achievements).forEach(category => { + achievementsCategories[category] = { + open: false, + number: Object.keys(this.achievements[category].achievements).length, + }; + }); + + this.achievementsCategories = achievementsCategories; + + // @TODO For some reason markdown doesn't seem to be handling numbers or maybe undefined? + user.profile.blurb = user.profile.blurb ? `${user.profile.blurb}` : ''; + + this.user = user; + } + this.userLoaded = true; }, selectPage (page) { From 46c92d617103a674a42a4b39523bb0e28c29fca4 Mon Sep 17 00:00:00 2001 From: Matteo Pagliazzi Date: Fri, 3 Jul 2020 14:36:01 +0200 Subject: [PATCH 4/4] 4.147.3 --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index 03a0ba1aa9..115e1b456c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "habitica", - "version": "4.147.2", + "version": "4.147.3", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 8eec9dcf9d..56cf690524 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "habitica", "description": "A habit tracker app which treats your goals like a Role Playing Game.", - "version": "4.147.2", + "version": "4.147.3", "main": "./website/server/index.js", "dependencies": { "@babel/core": "^7.10.3",