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
       }