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 @@