From 03a79765811935dee871c52843404214304e2eb8 Mon Sep 17 00:00:00 2001
From: Hangzhi Yu <hangzhi@protonmail.com>
Date: Wed, 11 Jan 2023 14:24:46 +0100
Subject: [PATCH] Introduce method for permission checking

---
 aleksis/core/assets/App.vue | 32 ++++++++++++--------------------
 1 file changed, 12 insertions(+), 20 deletions(-)

diff --git a/aleksis/core/assets/App.vue b/aleksis/core/assets/App.vue
index f52d74e0d..a7be06fbd 100644
--- a/aleksis/core/assets/App.vue
+++ b/aleksis/core/assets/App.vue
@@ -212,24 +212,13 @@
 
           <router-view
             v-if="
-              !$route.meta.permission ||
-              (permissionResults &&
-                permissionResults.find(
-                  (p) => p.name === $route.meta.permission
-                ) &&
-                permissionResults.find((p) => p.name === $route.meta.permission)
-                  .result)
+              !$route.meta.permission || checkPermission($route.meta.permission)
             "
           />
           <message-box
             type="error"
             v-else-if="
-              permissionResults &&
-              permissionResults.find(
-                (p) => p.name === $route.meta.permission
-              ) &&
-              permissionResults.find((p) => p.name === $route.meta.permission)
-                .result === false
+              permissionResults && !checkPermission($route.meta.permission)
             "
           >
             {{ $t("base.no_permission") }}
@@ -390,7 +379,7 @@ export default {
 
       this.$data.permissionNames = permArray;
     },
-    buildMenu(routes, menuKey, permissionResults) {
+    buildMenu(routes, menuKey) {
       let menu = {};
 
       // Top-level entries
@@ -401,9 +390,7 @@ export default {
           route.meta[menuKey] &&
           !route.parent &&
           (route.meta.permission
-            ? permissionResults.find((p) => p.name === route.meta.permission) &&
-              permissionResults.find((p) => p.name === route.meta.permission)
-                .result
+            ? this.checkPermission(route.meta.permission)
             : true)
         ) {
           let menuItem = {
@@ -426,9 +413,7 @@ export default {
           route.parent.name &&
           route.parent.name in menu &&
           (route.meta.permission
-            ? permissionResults.find((p) => p.name === route.meta.permission) &&
-              permissionResults.find((p) => p.name === route.meta.permission)
-                .result
+            ? this.checkPermission(route.meta.permission)
             : true)
         ) {
           let menuItem = {
@@ -443,6 +428,13 @@ export default {
 
       return Object.values(menu);
     },
+    checkPermission(permissionName) {
+      return (
+        this.permissionResults &&
+        this.permissionResults.find((p) => p.name === permissionName) &&
+        this.permissionResults.find((p) => p.name === permissionName).result
+      );
+    },
   },
   apollo: {
     systemProperties: gqlSystemProperties,
-- 
GitLab