diff --git a/.browserslistrc b/.browserslistrc new file mode 100644 index 0000000..3a455dd --- /dev/null +++ b/.browserslistrc @@ -0,0 +1,2 @@ +> 1% +last 2 versions \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 62fa1c7..a31360c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "assessment-uploader", - "version": "0.1.0", + "version": "0.2.0", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -1480,6 +1480,73 @@ "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", "integrity": "sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA=" }, + "@sentry/browser": { + "version": "5.18.1", + "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-5.18.1.tgz", + "integrity": "sha512-U1w0d5kRMsfzMYwWn4+awDKfBEI5lxhHa0bMChSpj5z/dWiz/e0mikZ9gCoF+ZNqkXJ92l/3r9gRz+SIsn5ZoA==", + "requires": { + "@sentry/core": "5.18.1", + "@sentry/types": "5.18.1", + "@sentry/utils": "5.18.1", + "tslib": "^1.9.3" + } + }, + "@sentry/core": { + "version": "5.18.1", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-5.18.1.tgz", + "integrity": "sha512-nC2aK6gwVIBVysmtdFHxYJyuChIHtkv7TnvmwgA5788L/HWo7E3R+Rd8Tf2npvp/aP+kmNITNbc5CIIqwGPaqQ==", + "requires": { + "@sentry/hub": "5.18.1", + "@sentry/minimal": "5.18.1", + "@sentry/types": "5.18.1", + "@sentry/utils": "5.18.1", + "tslib": "^1.9.3" + } + }, + "@sentry/hub": { + "version": "5.18.1", + "resolved": "https://registry.npmjs.org/@sentry/hub/-/hub-5.18.1.tgz", + "integrity": "sha512-dFnaj1fQRT74EhoF8MXJ23K3svt11zEF6CS3cdMrkSzfRbAHjyza7KT2AJHUeF6gtH2BZzqsSw+FnfAke0HGIg==", + "requires": { + "@sentry/types": "5.18.1", + "@sentry/utils": "5.18.1", + "tslib": "^1.9.3" + } + }, + "@sentry/integrations": { + "version": "5.18.1", + "resolved": "https://registry.npmjs.org/@sentry/integrations/-/integrations-5.18.1.tgz", + "integrity": "sha512-REvnx8Ajib8bjoSEqCMsEH3UXTPRhNbh6P3E2zp1BS2cJx+nSIMKp6nSaXK0aeJmwJwIC7Ntkxs2xmYJXrYyFA==", + "requires": { + "@sentry/types": "5.18.1", + "@sentry/utils": "5.18.1", + "tslib": "^1.9.3" + } + }, + "@sentry/minimal": { + "version": "5.18.1", + "resolved": "https://registry.npmjs.org/@sentry/minimal/-/minimal-5.18.1.tgz", + "integrity": "sha512-St2bjcZ5FFiH+bYkWoEPlEb0w38YSvftnjJTvZyk05SCdsF7HkGfoBeFmztwBf1VLQPYt3ojny14L6KDAvOTpw==", + "requires": { + "@sentry/hub": "5.18.1", + "@sentry/types": "5.18.1", + "tslib": "^1.9.3" + } + }, + "@sentry/types": { + "version": "5.18.1", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-5.18.1.tgz", + "integrity": "sha512-y5YTkRFC4Y7r4GHrvin6aZLBpQIGdMZRq78f/s7IIEZrmWYbVKsK4dyJht6pOsUdEaxeYpsu3okIA0bqmthSJA==" + }, + "@sentry/utils": { + "version": "5.18.1", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-5.18.1.tgz", + "integrity": "sha512-P4lt6NauCBWASaP6R5kfOmc24imbD32G5FeWqK7vHftIphOJ0X7OZfh93DJPs3e5RIvW3YCywUsa7MpTH5/ClA==", + "requires": { + "@sentry/types": "5.18.1", + "tslib": "^1.9.3" + } + }, "@soda/friendly-errors-webpack-plugin": { "version": "1.7.1", "resolved": "https://registry.npmjs.org/@soda/friendly-errors-webpack-plugin/-/friendly-errors-webpack-plugin-1.7.1.tgz", @@ -14972,9 +15039,9 @@ } }, "websocket-extensions": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.3.tgz", - "integrity": "sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg==" + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==" }, "whatwg-fetch": { "version": "3.0.0", diff --git a/package.json b/package.json index 28f1588..e565c97 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "assessment-uploader", - "version": "0.2.0", + "version": "0.3.0", "private": true, "scripts": { "serve": "vue-cli-service serve --mode develop", @@ -19,6 +19,8 @@ "dependencies": { "@firebase/app": "^0.6.2", "@firebase/storage": "^0.3.32", + "@sentry/browser": "^5.18.1", + "@sentry/integrations": "^5.18.1", "core-js": "^3.6.5", "firebase": "^7.14.2", "govuk-frontend": "^3.6.0", @@ -39,9 +41,5 @@ "sass": "^1.26.5", "sass-loader": "^8.0.2", "vue-template-compiler": "^2.6.11" - }, - "browserslist": [ - "> 1%", - "last 2 versions" - ] + } } diff --git a/public/favicon.ico b/public/favicon.ico index df36fcf..a8ef570 100644 Binary files a/public/favicon.ico and b/public/favicon.ico differ diff --git a/src/main.js b/src/main.js index 0b0dcc0..e8a1c84 100644 --- a/src/main.js +++ b/src/main.js @@ -4,8 +4,17 @@ import * as filters from '@/filters'; import router from '@/router'; import store from '@/store'; import { auth } from '@/firebase'; -//import firebase from '@firebase'; +import * as Sentry from '@sentry/browser'; +import * as Integrations from '@sentry/integrations'; +if (process.env.NODE_ENV !== 'development') { + Sentry.init({ + dsn: 'https://23ac92825117451eb421535be7e4c334@o323827.ingest.sentry.io/5301649', + environment: process.env.NODE_ENV, + release: process.env.npm_package_version, + integrations: [new Integrations.Vue({ Vue, attachProps: true })], + }); +} Vue.config.productionTip = false; // Register global filters @@ -19,11 +28,6 @@ let vueInstance = false; auth().onAuthStateChanged(async (user) => { // Bind Firebase auth state to the vuex auth state store await store.dispatch('auth/setCurrentUser', user); - if (store.getters['auth/isSignedIn']) { - if (window.location.pathname == '/sign-in') { - router.push('/assessments'); - } - } // Create the Vue instance, but only once if (!vueInstance) { vueInstance = new Vue({ diff --git a/src/store/auth.js b/src/store/auth.js index 1020824..51376ee 100644 --- a/src/store/auth.js +++ b/src/store/auth.js @@ -45,6 +45,13 @@ const module = { isSignedIn(state) { return (state.currentUser !== null); }, + currentUserId(state) { + if (state.currentUser !== null) { + return state.currentUser.uid; + } else { + return ''; + } + }, }, }; diff --git a/src/views/Assessment/Edit.vue b/src/views/Assessment/Edit.vue index 20b2d21..986acbd 100644 --- a/src/views/Assessment/Edit.vue +++ b/src/views/Assessment/Edit.vue @@ -117,10 +117,13 @@ export default { fileName() { return this.assessmentId; }, + assessorId() { + return this.$store.getters['auth/currentUserId']; + }, uploadPath() { const exerciseId = this.assessment.exercise.id; const applicationId = this.assessment.application.id; - const assessorId = this.$store.state.auth.currentUser.uid; + const assessorId = this.assessorId; return `/exercise/${exerciseId}/application/${applicationId}/assessor/${assessorId}`; }, }, diff --git a/src/views/Assessments.vue b/src/views/Assessments.vue index 1459015..7372a35 100644 --- a/src/views/Assessments.vue +++ b/src/views/Assessments.vue @@ -72,17 +72,17 @@ - Upload + View Incomplete Assessment - Review + Review Completed Assessment diff --git a/src/views/SignIn.vue b/src/views/SignIn.vue index 11eb443..7962dd1 100644 --- a/src/views/SignIn.vue +++ b/src/views/SignIn.vue @@ -81,6 +81,8 @@ export default { window.localStorage.setItem('emailForSignIn', email); window.localStorage.setItem('signInDestination', ref + '/upload'); return window.location.replace(response.data.result); + } else { + // console.log('mal-formed request'); } } else if (this.$route.query.return) { // we have 'return' flag set so try to complete sign in