Add sentry front-end tracking
This commit is contained in:
15
resources/js/middleware/check-auth.js
vendored
15
resources/js/middleware/check-auth.js
vendored
@@ -1,4 +1,5 @@
|
||||
import store from '~/store'
|
||||
import * as Sentry from '@sentry/vue'
|
||||
|
||||
export function initCrisp (user) {
|
||||
return new Promise((resolve, reject) => {
|
||||
@@ -17,6 +18,19 @@ export function initCrisp (user) {
|
||||
})
|
||||
}
|
||||
|
||||
export function initSentry (user) {
|
||||
if (!window.config.sentry_dsn) {
|
||||
return
|
||||
}
|
||||
Sentry.configureScope((scope) => {
|
||||
scope.setUser({
|
||||
id: user.id,
|
||||
email: user.email,
|
||||
subscription: user?.is_subscribed
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
export default async (to, from, next) => {
|
||||
if (!store.getters['auth/check'] &&
|
||||
store.getters['auth/token'] !== null &&
|
||||
@@ -25,6 +39,7 @@ export default async (to, from, next) => {
|
||||
try {
|
||||
const user = await store.dispatch('auth/fetchUser')
|
||||
initCrisp(user)
|
||||
initSentry(user)
|
||||
} catch (e) {
|
||||
console.log(e, 'error')
|
||||
}
|
||||
|
||||
1
resources/js/plugins/index.js
vendored
1
resources/js/plugins/index.js
vendored
@@ -2,3 +2,4 @@ import './axios'
|
||||
import './vue-plugins'
|
||||
import './amplitude'
|
||||
import './vapor'
|
||||
import './sentry'
|
||||
|
||||
17
resources/js/plugins/sentry.js
vendored
Normal file
17
resources/js/plugins/sentry.js
vendored
Normal file
@@ -0,0 +1,17 @@
|
||||
import Vue from 'vue'
|
||||
import * as Sentry from '@sentry/vue'
|
||||
|
||||
if (window.config.sentry_dsn) {
|
||||
Sentry.init({
|
||||
Vue,
|
||||
dsn: window.config.sentry_dsn,
|
||||
integrations: [],
|
||||
// Performance Monitoring
|
||||
tracesSampleRate: 0.01,
|
||||
logErrors: true,
|
||||
debug: false
|
||||
})
|
||||
if (!window.config.production) {
|
||||
console.info('== Sentry enabled ==')
|
||||
}
|
||||
}
|
||||
6
resources/js/router/index.js
vendored
6
resources/js/router/index.js
vendored
@@ -4,6 +4,7 @@ import Meta from 'vue-meta'
|
||||
import routes from './routes'
|
||||
import Router from 'vue-router'
|
||||
import {sync} from 'vuex-router-sync'
|
||||
import * as Sentry from '@sentry/vue'
|
||||
|
||||
Vue.use(Meta)
|
||||
Vue.use(Router)
|
||||
@@ -49,6 +50,11 @@ function createRouter () {
|
||||
* @param {Function} next
|
||||
*/
|
||||
async function beforeEach (to, from, next) {
|
||||
// Sentry tracking
|
||||
if (window.config.sentry_dsn) {
|
||||
Sentry.configureScope((scope) => scope.setTransactionName(to?.name || 'Unknown route name'))
|
||||
}
|
||||
|
||||
let components = []
|
||||
|
||||
// External redirect
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
'hCaptchaSiteKey' => config('services.h_captcha.site_key'),
|
||||
'google_analytics_code' => config('services.google_analytics_code'),
|
||||
'amplitude_code' => config('services.amplitude_code'),
|
||||
'sentry_dsn' => config('services.sentry_vue_dsn'),
|
||||
'crisp_website_id' => config('services.crisp_website_id'),
|
||||
'ai_features_enabled' => !is_null(config('services.openai.api_key')),
|
||||
's3_enabled' => config('filesystems.default') === 's3',
|
||||
|
||||
Reference in New Issue
Block a user