diff --git a/app/javascript/dashboard/helper/AnalyticsHelper/events.js b/app/javascript/dashboard/helper/AnalyticsHelper/events.js index 6dc47cfbf..58d2821ef 100644 --- a/app/javascript/dashboard/helper/AnalyticsHelper/events.js +++ b/app/javascript/dashboard/helper/AnalyticsHelper/events.js @@ -154,6 +154,11 @@ export const YEAR_IN_REVIEW_EVENTS = Object.freeze({ SHARE_CLICKED: 'Year in Review: Share clicked', }); +export const SESSION_EVENTS = Object.freeze({ + LIMIT_HIT: 'Session limit reached at login', + REVOKED_FROM_PROFILE: 'Revoked an active session', +}); + export const ONBOARDING_EVENTS = Object.freeze({ ACCOUNT_DETAILS_VISITED: 'Onboarding: Account details visited', ACCOUNT_DETAILS_COMPLETED: 'Onboarding: Account details completed', diff --git a/app/javascript/dashboard/routes/dashboard/settings/profile/ActiveSessions.vue b/app/javascript/dashboard/routes/dashboard/settings/profile/ActiveSessions.vue index eab050b39..65a31e21d 100644 --- a/app/javascript/dashboard/routes/dashboard/settings/profile/ActiveSessions.vue +++ b/app/javascript/dashboard/routes/dashboard/settings/profile/ActiveSessions.vue @@ -4,6 +4,8 @@ import { useI18n } from 'vue-i18n'; import { formatDistanceToNow, parseISO } from 'date-fns'; import { useAlert } from 'dashboard/composables'; import authAPI from 'dashboard/api/auth'; +import AnalyticsHelper from 'dashboard/helper/AnalyticsHelper'; +import { SESSION_EVENTS } from 'dashboard/helper/AnalyticsHelper/events'; import Icon from 'dashboard/components-next/icon/Icon.vue'; import Button from 'dashboard/components-next/button/Button.vue'; @@ -69,6 +71,7 @@ const revokeSession = async session => { try { await authAPI.revokeSession(session.id); sessions.value = sessions.value.filter(s => s.id !== session.id); + AnalyticsHelper.track(SESSION_EVENTS.REVOKED_FROM_PROFILE); useAlert(t('PROFILE_SETTINGS.FORM.SESSIONS_SECTION.REVOKE_SUCCESS')); } catch { useAlert(t('PROFILE_SETTINGS.FORM.SESSIONS_SECTION.REVOKE_ERROR')); diff --git a/app/javascript/v3/views/login/Index.vue b/app/javascript/v3/views/login/Index.vue index 2b113898c..54f6996a0 100644 --- a/app/javascript/v3/views/login/Index.vue +++ b/app/javascript/v3/views/login/Index.vue @@ -8,6 +8,8 @@ import { useVuelidate } from '@vuelidate/core'; import { SESSION_STORAGE_KEYS } from 'dashboard/constants/sessionStorage'; import SessionStorage from 'shared/helpers/sessionStorage'; import { useBranding } from 'shared/composables/useBranding'; +import AnalyticsHelper from 'dashboard/helper/AnalyticsHelper'; +import { SESSION_EVENTS } from 'dashboard/helper/AnalyticsHelper/events'; // components import SimpleDivider from '../../components/Divider/SimpleDivider.vue'; @@ -191,6 +193,7 @@ export default { this.loginApi.showLoading = false; this.sessionsLimitReached = true; this.limitedSessions = result.sessions; + AnalyticsHelper.track(SESSION_EVENTS.LIMIT_HIT); return; } @@ -257,6 +260,7 @@ export default { this.loginApi.showLoading = false; this.sessionsLimitReached = true; this.limitedSessions = result.sessions; + AnalyticsHelper.track(SESSION_EVENTS.LIMIT_HIT); return; } this.handleImpersonation();