Fix #597: Ensure admin links in sidebar are displayed for users with relavant permissions, and only them

This commit is contained in:
Eliot Berriot 2018-11-03 23:07:47 +01:00
parent 1aa3630b4d
commit 66c8e7a9e4
No known key found for this signature in database
GPG Key ID: DD6965E2476E5C27
3 changed files with 9 additions and 21 deletions

View File

@ -0,0 +1 @@
Ensure admin links in sidebar are displayed for users with relavant permissions, and only them (#597)

View File

@ -76,18 +76,16 @@
class="item" :to="{name: 'content.index'}"><i class="upload icon"></i><translate>Add content</translate></router-link> class="item" :to="{name: 'content.index'}"><i class="upload icon"></i><translate>Add content</translate></router-link>
</div> </div>
</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="header"><translate>Administration</translate></div>
<div class="menu"> <div class="menu">
<router-link <router-link
class="item" class="item"
v-if="$store.state.auth.availablePermissions['settings']"
:to="{path: '/manage/settings'}"> :to="{path: '/manage/settings'}">
<i class="settings icon"></i><translate>Settings</translate> <i class="settings icon"></i><translate>Settings</translate>
</router-link> </router-link>
<router-link <router-link
class="item" class="item"
v-if="$store.state.auth.availablePermissions['settings']"
:to="{name: 'manage.users.users.list'}"> :to="{name: 'manage.users.users.list'}">
<i class="users icon"></i><translate>Users</translate> <i class="users icon"></i><translate>Users</translate>
</router-link> </router-link>
@ -184,7 +182,6 @@ export default {
tracksChangeBuffer: null, tracksChangeBuffer: null,
isCollapsed: true, isCollapsed: true,
fetchInterval: null, fetchInterval: null,
showAdmin: this.getShowAdmin()
} }
}, },
mounted () { mounted () {
@ -228,16 +225,6 @@ export default {
...mapActions({ ...mapActions({
cleanTrack: 'queue/cleanTrack' 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) { reorder: function (event) {
this.$store.commit('queue/reorder', { this.$store.commit('queue/reorder', {
tracks: this.tracksChangeBuffer, oldIndex: event.oldIndex, newIndex: event.newIndex}) tracks: this.tracksChangeBuffer, oldIndex: event.oldIndex, newIndex: event.newIndex})
@ -271,12 +258,6 @@ export default {
this.scrollToCurrent() this.scrollToCurrent()
} }
}, },
'$store.state.auth.availablePermissions': {
handler () {
this.showAdmin = this.getShowAdmin()
},
deep: true
}
} }
} }
</script> </script>

View File

@ -8,7 +8,12 @@ export default {
state: { state: {
authenticated: false, authenticated: false,
username: '', username: '',
availablePermissions: {}, availablePermissions: {
federation: false,
settings: false,
library: false,
upload: false
},
profile: null, profile: null,
token: '', token: '',
tokenData: {} tokenData: {}
@ -27,6 +32,7 @@ export default {
state.tokenData = {} state.tokenData = {}
state.availablePermissions = { state.availablePermissions = {
federation: false, federation: false,
settings: false,
library: false, library: false,
upload: false upload: false
} }