diff --git a/packages/frontend/src/auth-helpers.js b/packages/frontend/src/auth-helpers.js index a99c66bd3..036f0715c 100644 --- a/packages/frontend/src/auth-helpers.js +++ b/packages/frontend/src/auth-helpers.js @@ -80,7 +80,7 @@ export async function getTokenFromAccessCode(accessCode) { * Signs out the current session * @return {null} */ -export async function signOut() { +export async function signOut(mixpanelInstance) { await fetch('/auth/logout', { method: 'POST', headers: { @@ -96,9 +96,16 @@ export async function signOut() { localStorage.removeItem('RefreshToken') localStorage.removeItem('suuid') localStorage.removeItem('uuid') + localStorage.removeItem('distinct_id') + localStorage.removeItem('stcount') localStorage.removeItem('onboarding') window.location = '/' + + if (mixpanelInstance) { + mixpanelInstance.track('Log Out', { type: 'action', hostApp: 'web' }) + mixpanelInstance.reset() + } } export async function refreshToken() { diff --git a/packages/frontend/src/cleanup/Main.vue b/packages/frontend/src/cleanup/Main.vue index 58e268315..9d3ca20fc 100644 --- a/packages/frontend/src/cleanup/Main.vue +++ b/packages/frontend/src/cleanup/Main.vue @@ -144,6 +144,8 @@ export default { } this.$mixpanel.track('Visit Web App') + + this.$mixpanel.register({ server_id: this.$mixpanelServerId }) }, methods: { switchTheme() { diff --git a/packages/frontend/src/cleanup/components/user/UserDeleteCard.vue b/packages/frontend/src/cleanup/components/user/UserDeleteCard.vue index 16f844921..fe9ac006e 100644 --- a/packages/frontend/src/cleanup/components/user/UserDeleteCard.vue +++ b/packages/frontend/src/cleanup/components/user/UserDeleteCard.vue @@ -67,7 +67,7 @@ export default { }) .then(() => { this.isLoading = false - signOut() + signOut(this.$mixpanel) }) }) } diff --git a/packages/frontend/src/cleanup/pages/user/ProfileSelf.vue b/packages/frontend/src/cleanup/pages/user/ProfileSelf.vue index 780ff8b26..a2b0435a0 100644 --- a/packages/frontend/src/cleanup/pages/user/ProfileSelf.vue +++ b/packages/frontend/src/cleanup/pages/user/ProfileSelf.vue @@ -72,8 +72,7 @@ export default { this.$apollo.queries.user.refetch() }, signOut() { - this.$mixpanel.track('Log Out', { type: 'action', hostApp: 'web' }) - signOut() + signOut(this.$mixpanel) } } } diff --git a/packages/frontend/src/components/UserAvatarAuthoriseApp.vue b/packages/frontend/src/components/UserAvatarAuthoriseApp.vue index fa08ba27f..e68df473c 100644 --- a/packages/frontend/src/components/UserAvatarAuthoriseApp.vue +++ b/packages/frontend/src/components/UserAvatarAuthoriseApp.vue @@ -45,7 +45,7 @@ export default { }, methods: { signOut() { - signOut() + signOut(this.$mixpanel) } } } diff --git a/packages/frontend/src/components/UserDeleteCard.vue b/packages/frontend/src/components/UserDeleteCard.vue index 8f1092cf7..24a2f5f68 100644 --- a/packages/frontend/src/components/UserDeleteCard.vue +++ b/packages/frontend/src/components/UserDeleteCard.vue @@ -71,7 +71,7 @@ export default { }) .then(() => { this.isLoading = false - signOut() + signOut(this.$mixpanel) }) }) } diff --git a/packages/frontend/src/plugins/helpers.js b/packages/frontend/src/plugins/helpers.js index af555f800..abff4db3c 100644 --- a/packages/frontend/src/plugins/helpers.js +++ b/packages/frontend/src/plugins/helpers.js @@ -1,4 +1,5 @@ import Vue from 'vue' +import crypto from 'crypto' Vue.prototype.$userId = function () { return localStorage.getItem('uuid') @@ -8,6 +9,14 @@ Vue.prototype.$mixpanelId = function () { return localStorage.getItem('distinct_id') } +Vue.prototype.$mixpanelServerId = function () { + return crypto + .createHash('md5') + .update(window.location.hostname.toLowerCase()) + .digest('hex') + .toUpperCase() +} + Vue.prototype.$loggedIn = function () { return localStorage.getItem('uuid') !== null }