diff --git a/changes/changelog.d/597.bugfix b/changes/changelog.d/597.bugfix new file mode 100644 index 0000000000000000000000000000000000000000..d129513224500e0a255691321a2d758cabfb9859 --- /dev/null +++ b/changes/changelog.d/597.bugfix @@ -0,0 +1 @@ +Ensure admin links in sidebar are displayed for users with relavant permissions, and only them (#597) diff --git a/front/src/components/Sidebar.vue b/front/src/components/Sidebar.vue index 449238c2edaa00a9fde58b9487127d62fde7f1e5..44813c6c9f96ba316430bd80a33e93a4fa39f61a 100644 --- a/front/src/components/Sidebar.vue +++ b/front/src/components/Sidebar.vue @@ -76,18 +76,16 @@ class="item" :to="{name: 'content.index'}"><i class="upload icon"></i><translate>Add content</translate></router-link> </div> </div> - <div class="item" v-if="showAdmin"> + <div class="item" v-if="$store.state.auth.availablePermissions['settings']"> <div class="header"><translate>Administration</translate></div> <div class="menu"> <router-link class="item" - v-if="$store.state.auth.availablePermissions['settings']" :to="{path: '/manage/settings'}"> <i class="settings icon"></i><translate>Settings</translate> </router-link> <router-link class="item" - v-if="$store.state.auth.availablePermissions['settings']" :to="{name: 'manage.users.users.list'}"> <i class="users icon"></i><translate>Users</translate> </router-link> @@ -184,7 +182,6 @@ export default { tracksChangeBuffer: null, isCollapsed: true, fetchInterval: null, - showAdmin: this.getShowAdmin() } }, mounted () { @@ -228,16 +225,6 @@ export default { ...mapActions({ cleanTrack: 'queue/cleanTrack' }), - getShowAdmin () { - let adminPermissions = [ - this.$store.state.auth.availablePermissions['federation'], - this.$store.state.auth.availablePermissions['library'], - this.$store.state.auth.availablePermissions['upload'] - ] - return adminPermissions.filter(e => { - return e - }).length > 0 - }, reorder: function (event) { this.$store.commit('queue/reorder', { tracks: this.tracksChangeBuffer, oldIndex: event.oldIndex, newIndex: event.newIndex}) @@ -271,12 +258,6 @@ export default { this.scrollToCurrent() } }, - '$store.state.auth.availablePermissions': { - handler () { - this.showAdmin = this.getShowAdmin() - }, - deep: true - } } } </script> diff --git a/front/src/store/auth.js b/front/src/store/auth.js index 4100981bbbe6e78429cf5e086108c3abb3ee397b..7551f444907f97d2a06f890908adb788e8f53786 100644 --- a/front/src/store/auth.js +++ b/front/src/store/auth.js @@ -8,7 +8,12 @@ export default { state: { authenticated: false, username: '', - availablePermissions: {}, + availablePermissions: { + federation: false, + settings: false, + library: false, + upload: false + }, profile: null, token: '', tokenData: {} @@ -27,6 +32,7 @@ export default { state.tokenData = {} state.availablePermissions = { federation: false, + settings: false, library: false, upload: false }