소스 검색

新增 ability 分群

oransheep 2 년 전
부모
커밋
d0bcf9f26a

+ 2 - 2
resources/js/src/@core/libs/acl/utils.js

@@ -17,7 +17,7 @@ export const can = (action, subject) => {
  * Based on item's action and resource
  * @param {Object} item navigation object item
  */
-export const canViewVerticalNavMenuLink = item => can('read', item.route)
+export const canViewVerticalNavMenuLink = item => can('read', item.group)
 
 /**
  * Check if user can view item based on it's ability
@@ -42,7 +42,7 @@ export const canViewVerticalNavMenuGroup = item => {
  * Based on item's action and resource
  * @param {Object} item navigation object item
  */
-export const canViewVerticalNavMenuHeader = item => can(item.action, item.resource)
+export const canViewVerticalNavMenuHeader = item => can('read', item.group)
 
 /**
  * Check if user can view item based on it's ability

+ 3 - 11
resources/js/src/libs/acl/ability.js

@@ -14,11 +14,7 @@ export function getExistingAbility(userAbility) {
       return [
         {
           action: 'read',
-          subject: 'home',
-        },
-        {
-          action: 'read',
-          subject: 'second-page',
+          subject: 'basic',
         },
       ]
 
@@ -26,15 +22,11 @@ export function getExistingAbility(userAbility) {
       return [
         {
           action: 'read',
-          subject: 'home',
-        },
-        {
-          action: 'read',
-          subject: 'second-page',
+          subject: 'basic',
         },
         {
           action: 'read',
-          subject: 'permission',
+          subject: 'management',
         },
       ]
 

+ 1 - 5
resources/js/src/libs/acl/config.js

@@ -8,11 +8,7 @@
 export const initialAbility = [
   {
     action: 'read',
-    subject: 'home',
-  },
-  {
-    action: 'read',
-    subject: 'second-page',
+    subject: 'basic',
   },
 ]
 export const _ = undefined

+ 1 - 1
resources/js/src/libs/acl/routeProtection.js

@@ -2,4 +2,4 @@ import ability from './ability'
 
 export const canNavigate = to => to.matched.some(route => ability.can('read', route.meta.resource))
 
-export const haveAbility = to => to.matched.some(route => ability.can('read', route.name))
+export const haveAbility = to => to.matched.some(route => ability.can('read', route.meta.group))

+ 9 - 1
resources/js/src/navigation/vertical/index.js

@@ -1,20 +1,28 @@
 export default [
   {
-    header: 'Apps & Pages',
+    header: '基本功能',
+    group: 'basic',
   },
   {
     title: 'Home',
     route: 'home',
     icon: 'HomeIcon',
+    group: 'basic',
   },
   {
     title: 'Second Page',
     route: 'second-page',
     icon: 'FileIcon',
+    group: 'basic',
+  },
+  {
+    header: '管理功能',
+    group: 'management',
   },
   {
     title: '權限',
     route: 'permission',
     icon: 'ShieldIcon',
+    group: 'management',
   },
 ]

+ 3 - 0
resources/js/src/router/index.js

@@ -19,6 +19,7 @@ const router = new VueRouter({
       component: () => import('@/views/Home.vue'),
       meta: {
         pageTitle: 'Home',
+        group: 'basic',
         breadcrumb: [
           {
             text: 'Home',
@@ -33,6 +34,7 @@ const router = new VueRouter({
       component: () => import('@/views/SecondPage.vue'),
       meta: {
         pageTitle: 'Second Page',
+        group: 'basic',
         breadcrumb: [
           {
             text: 'Second Page',
@@ -47,6 +49,7 @@ const router = new VueRouter({
       component: () => import('@/views/Permission.vue'),
       meta: {
         pageTitle: '權限',
+        group: 'management',
         breadcrumb: [
           {
             text: '權限',