From 5d3ba473f0bab797e8fe482a2a53f0cfa6f9cb57 Mon Sep 17 00:00:00 2001
From: Ilja <ilja@ilja.space>
Date: Mon, 22 Aug 2022 18:11:15 +0200
Subject: [PATCH] Fix redirect after login and do sidebar differently

I noticed that the routes have an option `hidden`. This is what's used to show or hide items in the sidebar.
Now we set this option after login before adding the routes.

The redirect for root is now also set after login before adding the route.
That way we can set the route to the path corresponding with the first item in the sidebar.
When there's no unhidden route (e.g. when admin-fe doesn't know about any privilege the user has), the redirect goes to /401.
---
 src/store/modules/user.js                     |  2 +-
 src/views/layout/components/Sidebar/index.vue | 13 +------------
 2 files changed, 2 insertions(+), 13 deletions(-)

diff --git a/src/store/modules/user.js b/src/store/modules/user.js
index 1d1dc431..145e1139 100644
--- a/src/store/modules/user.js
+++ b/src/store/modules/user.js
@@ -106,7 +106,7 @@ const user = {
             if (is_admin) {
               commit('SET_ROLES', ['admin'])
             }
-            commit('SET_PRIVILEGES', data.pleroma.privileges)
+            commit('SET_PRIVILEGES', data.pleroma.privileges || [])
           } else {
             reject(message)
           }
diff --git a/src/views/layout/components/Sidebar/index.vue b/src/views/layout/components/Sidebar/index.vue
index 910ed1f2..5a730aee 100644
--- a/src/views/layout/components/Sidebar/index.vue
+++ b/src/views/layout/components/Sidebar/index.vue
@@ -17,7 +17,7 @@ SPDX-License-Identifier: AGPL-3.0-only
       mode="vertical"
       @open="handleOpen"
     >
-      <sidebar-item v-for="route in permission_routers" v-if="isPrivileged(route)" :key="route.path" :item="route" :base-path="route.path"/>
+      <sidebar-item v-for="route in permission_routers" :key="route.path" :item="route" :base-path="route.path"/>
     </el-menu>
   </el-scrollbar>
 </template>
@@ -61,17 +61,6 @@ export default {
         }
       }, [...asyncRouterMap])
     },
-    isPrivileged(route) {
-      if (route.roles && route.roles.some(role => this.$store.getters.roles.indexOf(role) >= 0)) {
-        return true
-      }
-
-      if (route.privileges && route.privileges.some(privilege => this.$store.getters.privileges.indexOf(privilege) >= 0)) {
-        return true
-      }
-
-      return false
-    },
     async handleOpen($event) {
       if ($event === '/settings') {
         let settingsTabs = localStorage.getItem('settingsTabs')
-- 
GitLab