From b8b28c245571637f4b99722b82092bf4796d3095 Mon Sep 17 00:00:00 2001 From: ege-dw Date: Thu, 16 Jun 2022 14:28:00 +0200 Subject: [PATCH] display the name of the connected user Signed-off-by: ege-dw --- .../DefaultHeaderProfileDropdown.vue | 12 ++++++++++-- src/i18n/locales/en.json | 2 +- src/mixins/globalVarsMixin.js | 18 +++++++++++++++++- src/router/index.js | 3 ++- src/views/components/ProfileEditModal.vue | 13 +++++++------ 5 files changed, 37 insertions(+), 11 deletions(-) diff --git a/src/containers/DefaultHeaderProfileDropdown.vue b/src/containers/DefaultHeaderProfileDropdown.vue index 7bcb3f199..368e9c38b 100644 --- a/src/containers/DefaultHeaderProfileDropdown.vue +++ b/src/containers/DefaultHeaderProfileDropdown.vue @@ -8,7 +8,8 @@ boundary="viewport" tag="div" class="text-center"> - {{ $t('message.profile') }} + {{ $t('message.connected_as') }} + {{ user }} {{ $t('message.profile_update') }} {{ $t('message.change_password') }} @@ -22,18 +23,25 @@ import { HeaderDropdown as AppHeaderDropdown } from '@coreui/vue' import EventBus from '../shared/eventbus'; import { decodeToken, getToken } from '../shared/permissions' + import globalVarsMixin from "../mixins/globalVarsMixin"; export default { name: 'DefaultHeaderProfileDropdown', + mixins: [globalVarsMixin], components: { AppHeaderDropdown }, data: () => { - return { + return { itemsCount: 42, identityProvider: decodeToken(getToken()).idp } }, + computed: { + user() { + return this.currentUser.fullname || this.currentUser.username + } + }, methods: { logout: function () { // Instructs all tabs (via localStorage event) that the session is being invalidated diff --git a/src/i18n/locales/en.json b/src/i18n/locales/en.json index 909e88e27..561f2427b 100644 --- a/src/i18n/locales/en.json +++ b/src/i18n/locales/en.json @@ -275,7 +275,7 @@ "component_removed": "Component removed", "required_project_name": "The project name is required", "project_name_desc": "The name of the project or component as provided by the supplier", - "profile": "Profile", + "connected_as": "Connected as", "profile_update": "Update Profile", "profile_updated": "Profile updated", "logout": "Logout", diff --git a/src/mixins/globalVarsMixin.js b/src/mixins/globalVarsMixin.js index 70b51b8d8..d7a31afae 100644 --- a/src/mixins/globalVarsMixin.js +++ b/src/mixins/globalVarsMixin.js @@ -1,10 +1,12 @@ import Vue from 'vue' import axios from "axios"; +import EventBus from "@/shared/eventbus"; export default { data () { return { - dtrack: Object + dtrack: Object, + currentUser: Object } }, created() { @@ -17,5 +19,19 @@ export default { } ); } + if (this.$currentUser) { + this.currentUser = this.$currentUser; + } else { + EventBus.$emit('profileUpdated'); + } + }, + mounted() { + EventBus.$on('profileUpdated', () => { + axios.get(`${Vue.prototype.$api.BASE_URL}/${Vue.prototype.$api.URL_USER_SELF}`) + .then((result) => { + this.currentUser = result.data; + } + ); + }); } } diff --git a/src/router/index.js b/src/router/index.js index 233418c4b..c831e79ef 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -262,7 +262,8 @@ router.beforeEach((to, from, next) => { // let backend verify the token router.app.axios.get(`${router.app.$api.BASE_URL}/${router.app.$api.URL_USER_SELF}`, { headers: { 'Authorization': `Bearer ${jwt}` } - }).then(() => { + }).then((result) => { + Vue.prototype.$currentUser = result.data // allowed to proceed next(); }).catch(() => { diff --git a/src/views/components/ProfileEditModal.vue b/src/views/components/ProfileEditModal.vue index 145361394..95f63d1a6 100644 --- a/src/views/components/ProfileEditModal.vue +++ b/src/views/components/ProfileEditModal.vue @@ -19,9 +19,12 @@