From 8c8264252c2b241faab9e7c453353c164be8d5fe Mon Sep 17 00:00:00 2001 From: Spitap Date: Thu, 22 Jun 2023 11:03:25 +0200 Subject: [PATCH] Multiple frontend fix --- frontend/src/App.vue | 8 ++--- frontend/src/api/repository.js | 4 ++- frontend/src/components/layout/Navbar.vue | 34 +++++++++++-------- .../components/parameters/ParametersForm.vue | 3 ++ frontend/src/views/TwoFA.vue | 2 ++ 5 files changed, 31 insertions(+), 20 deletions(-) diff --git a/frontend/src/App.vue b/frontend/src/App.vue index e5c89dd17..cdd49f63a 100644 --- a/frontend/src/App.vue +++ b/frontend/src/App.vue @@ -62,9 +62,6 @@ export default { bus.$on('notification', this.showNotification) bus.$on('loggedIn', this.checkAlarms) }, - mounted () { - this.checkAlarms() - }, beforeDestroy () { clearInterval(this.alarmChecker) }, @@ -88,6 +85,9 @@ export default { }, checkAlarms () { if (this.isAuthenticated) { + if (this.alarmChecker !== null) { + return + } this.alarmChecker = window.setInterval(() => { const params = {} if (this.lastAlarmDate instanceof Date) { @@ -95,7 +95,7 @@ export default { } alarms.getAll(params).then(resp => { let count = 0 - for (const alarm of resp.data) { + for (const alarm of resp.data.results) { if (alarm.status === 1 && !this.alarmNotified.includes(alarm.id)) { if (this.lastAlarmDate instanceof Date && new Date(alarm.created) > this.lastAlarmDate) { this.lastAlarmDate = new Date(alarm.created) diff --git a/frontend/src/api/repository.js b/frontend/src/api/repository.js index d353dc1bd..0a45f4c5b 100644 --- a/frontend/src/api/repository.js +++ b/frontend/src/api/repository.js @@ -44,7 +44,9 @@ _axios.interceptors.response.use( const refreshToken = Cookies.get('refreshToken') if (error.config.url.endsWith('/token/refresh/') || !refreshToken) { store.dispatch('auth/logout') - router.push({ name: 'Login' }) + if (router.history.current.name !== 'Login') { + router.push({ name: 'Login' }) + } return Promise.reject(error) } return _axios.post('/token/refresh/', { refresh: refreshToken }).then(resp => { diff --git a/frontend/src/components/layout/Navbar.vue b/frontend/src/components/layout/Navbar.vue index b042e33b7..b8b2da4f9 100644 --- a/frontend/src/components/layout/Navbar.vue +++ b/frontend/src/components/layout/Navbar.vue @@ -284,27 +284,31 @@ export default { } }, created () { - parameters.getApplications().then(response => { - response.data.forEach(item => { - this.mainMenuItems[6].children.push({ - text: item.label, - to: { name: 'ParametersEdit', params: { app: item.name } } + if (this.isAuthenticated) { + parameters.getApplications().then(response => { + response.data.forEach(item => { + this.mainMenuItems[6].children.push({ + text: item.label, + to: { name: 'ParametersEdit', params: { app: item.name } } + }) }) }) - }) - parameters.getApplication('imap_migration').then(response => { - this.imapMigration = response.data.params.enabled_imapmigration - }) - bus.$on('imapSettingsChanged', (status) => { this.imapMigration = status }) + parameters.getApplication('imap_migration').then(response => { + this.imapMigration = response.data.params.enabled_imapmigration + }) + bus.$on('imapSettingsChanged', (status) => { this.imapMigration = status }) + } }, methods: { displayMenuItem (item) { - const condition = (item.roles === undefined || item.roles.indexOf(this.authUser.role) !== -1) && (item.condition === undefined || item.condition()) && (item.activated !== false) - if (item.icon === 'mdi-email-sync-outline') { - // For imapMigration - return condition && this.imapMigration + if (this.isAuthenticated) { + const condition = (item.roles === undefined || item.roles.indexOf(this.authUser.role) !== -1) && (item.condition === undefined || item.condition()) && (item.activated !== false) + if (item.icon === 'mdi-email-sync-outline') { + // For imapMigration + return condition && this.imapMigration + } + return condition } - return condition }, logout () { this.$store.dispatch('auth/logout').then(() => { diff --git a/frontend/src/components/parameters/ParametersForm.vue b/frontend/src/components/parameters/ParametersForm.vue index 7f44e6a93..bf8bbf5f2 100644 --- a/frontend/src/components/parameters/ParametersForm.vue +++ b/frontend/src/components/parameters/ParametersForm.vue @@ -107,6 +107,9 @@ export default { watch: { '$route' (to, from) { this.loadParams(to.params.app) + }, + 'parameters' (to, from) { + this.tab_error = [] } }, methods: { diff --git a/frontend/src/views/TwoFA.vue b/frontend/src/views/TwoFA.vue index 692ed6f5d..df023d53a 100644 --- a/frontend/src/views/TwoFA.vue +++ b/frontend/src/views/TwoFA.vue @@ -41,6 +41,7 @@