Skip to content

Commit 4661356

Browse files
committed
Implement UI permission checks
1 parent 28c3302 commit 4661356

File tree

27 files changed

+184
-221
lines changed

27 files changed

+184
-221
lines changed

packages/skeleton/app/assets/components/NavBar.vue

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,13 @@ const auth = useAuthStore()
2424
:username="auth.user.full_name"
2525
:avatar="auth.user.avatar"
2626
:meta="auth.user.user_name">
27-
<UFNavBarUserCardButton :label="$t('ADMIN_PANEL')" :to="{ name: 'admin.dashboard' }" />
27+
<UFNavBarUserCardButton
28+
:label="$t('ADMIN_PANEL')"
29+
v-if="$checkAccess('uri_dashboard')"
30+
:to="{ name: 'admin.dashboard' }" />
2831
<UFNavBarUserCardButton
2932
:label="$t('ACCOUNT.SETTINGS')"
33+
v-if="$checkAccess('update_account_settings')"
3034
:to="{ name: 'account.settings' }" />
3135
<UFNavBarUserCardButton :label="$t('LOGOUT')" @click="auth.logout()" />
3236
</UFNavBarUserCard>

packages/sprinkle-account/app/assets/routes/index.ts

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,16 +55,31 @@ export default [
5555
{
5656
path: 'profile',
5757
name: 'account.settings.profile',
58+
meta: {
59+
permission: {
60+
slug: 'update_account_settings'
61+
}
62+
},
5863
component: () => import('../views/UserSettingsProfile.vue')
5964
},
6065
{
6166
path: 'password',
6267
name: 'account.settings.password',
68+
meta: {
69+
permission: {
70+
slug: 'update_account_settings'
71+
}
72+
},
6373
component: () => import('../views/UserSettingsPassword.vue')
6474
},
6575
{
6676
path: 'email',
6777
name: 'account.settings.email',
78+
meta: {
79+
permission: {
80+
slug: 'update_account_settings'
81+
}
82+
},
6883
component: () => import('../views/UserSettingsEmail.vue')
6984
}
7085
]
Lines changed: 27 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,37 @@
11
<template>
2-
<UFSideBarItem :to="{ name: 'admin.dashboard' }" faIcon="gauge-high" :label="$t('DASHBOARD')" />
3-
<UFSideBarItem :to="{ name: 'admin.users' }" faIcon="user" :label="$t('USER.PAGE')" />
42
<UFSideBarItem
3+
v-if="$checkAccess('uri_dashboard')"
4+
:to="{ name: 'admin.dashboard' }"
5+
faIcon="gauge-high"
6+
:label="$t('DASHBOARD')" />
7+
<UFSideBarItem
8+
v-if="$checkAccess('uri_users')"
9+
:to="{ name: 'admin.users' }"
10+
faIcon="user"
11+
:label="$t('USER.PAGE')" />
12+
<UFSideBarItem
13+
v-if="$checkAccess('uri_activities')"
514
:to="{ name: 'admin.activities' }"
615
faIcon="list-check"
716
:label="$t('ACTIVITY.PAGE')" />
8-
<UFSideBarItem :to="{ name: 'admin.roles' }" faIcon="address-card" :label="$t('ROLE.PAGE')" />
917
<UFSideBarItem
18+
v-if="$checkAccess('uri_roles')"
19+
:to="{ name: 'admin.roles' }"
20+
faIcon="address-card"
21+
:label="$t('ROLE.PAGE')" />
22+
<UFSideBarItem
23+
v-if="$checkAccess('uri_permissions')"
1024
:to="{ name: 'admin.permissions' }"
1125
faIcon="key"
1226
:label="$t('PERMISSION.PAGE')" />
13-
<UFSideBarItem :to="{ name: 'admin.groups' }" faIcon="users" :label="$t('GROUP.PAGE')" />
14-
<UFSideBarItem :to="{ name: 'admin.config' }" faIcon="gear" :label="$t('SITE_CONFIG')" />
27+
<UFSideBarItem
28+
v-if="$checkAccess('uri_groups')"
29+
:to="{ name: 'admin.groups' }"
30+
faIcon="users"
31+
:label="$t('GROUP.PAGE')" />
32+
<UFSideBarItem
33+
v-if="$checkAccess('view_system_info') || $checkAccess('clear_cache')"
34+
:to="{ name: 'admin.config' }"
35+
faIcon="gear"
36+
:label="$t('SITE_CONFIG')" />
1537
</template>

packages/sprinkle-admin/app/assets/routes/ActivitiesRoutes.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@ export default [
66
auth: {
77
redirect: { name: 'account.login' }
88
},
9+
permission: {
10+
slug: 'uri_activities'
11+
},
912
title: 'ACTIVITY.PAGE',
1013
description: 'ACTIVITY.PAGE_DESCRIPTION'
1114
},

packages/sprinkle-admin/app/assets/routes/ConfigRoutes.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,21 @@ export default [
1515
{
1616
path: 'info',
1717
name: 'admin.config.info',
18+
meta: {
19+
permission: {
20+
slug: 'view_system_info'
21+
}
22+
},
1823
component: () => import('../views/ConfigInfoView.vue')
1924
},
2025
{
2126
path: 'cache',
2227
name: 'admin.config.cache',
28+
meta: {
29+
permission: {
30+
slug: 'clear_cache'
31+
}
32+
},
2333
component: () => import('../views/ConfigCacheView.vue')
2434
}
2535
]

packages/sprinkle-admin/app/assets/routes/DashboardRoutes.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@ export default [
66
auth: {
77
redirect: { name: 'account.login' }
88
},
9+
permission: {
10+
slug: 'uri_dashboard'
11+
},
912
title: 'DASHBOARD'
1013
},
1114
component: () => import('../views/DashboardView.vue')

packages/sprinkle-admin/app/assets/routes/GroupsRoutes.ts

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,15 +12,23 @@ export default [
1212
{
1313
path: '',
1414
name: 'admin.groups',
15+
meta: {
16+
permission: {
17+
slug: 'uri_groups'
18+
}
19+
},
1520
component: () => import('../views/GroupsView.vue')
1621
},
1722
{
1823
path: 'g/:slug',
1924
name: 'admin.group',
20-
component: () => import('../views/GroupView.vue'),
2125
meta: {
22-
description: 'GROUP.INFO_PAGE'
23-
}
26+
description: 'GROUP.INFO_PAGE',
27+
permission: {
28+
slug: 'uri_group'
29+
}
30+
},
31+
component: () => import('../views/GroupView.vue')
2432
}
2533
]
2634
}

packages/sprinkle-admin/app/assets/routes/PermissionsRoutes.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@ export default [
22
{
33
path: 'permissions',
44
meta: {
5+
permission: {
6+
slug: 'uri_permissions'
7+
},
58
auth: {
69
redirect: { name: 'account.login' }
710
},

packages/sprinkle-admin/app/assets/routes/RolesRoutes.ts

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,15 +12,23 @@ export default [
1212
{
1313
path: '',
1414
name: 'admin.roles',
15+
meta: {
16+
permission: {
17+
slug: 'uri_roles'
18+
}
19+
},
1520
component: () => import('../views/RolesView.vue')
1621
},
1722
{
1823
path: 'r/:slug', // roles/r/{slug}
1924
name: 'admin.role',
20-
component: () => import('../views/RoleView.vue'),
2125
meta: {
22-
description: 'ROLE.INFO_PAGE'
23-
}
26+
description: 'ROLE.INFO_PAGE',
27+
permission: {
28+
slug: 'uri_role'
29+
}
30+
},
31+
component: () => import('../views/RoleView.vue')
2432
}
2533
]
2634
}

packages/sprinkle-admin/app/assets/routes/UserRoutes.ts

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,16 +12,24 @@ export default [
1212
{
1313
path: '',
1414
name: 'admin.users',
15+
meta: {
16+
permission: {
17+
slug: 'uri_users'
18+
}
19+
},
1520
component: () => import('../views/UsersView.vue')
1621
},
1722
{
1823
path: 'u/:user_name', // users/u/{user_name}
1924
name: 'admin.user',
20-
component: () => import('../views/UserView.vue'),
2125
meta: {
2226
title: 'USER.PAGE',
23-
description: 'USER.INFO_PAGE'
24-
}
27+
description: 'USER.INFO_PAGE',
28+
permission: {
29+
slug: 'uri_user'
30+
}
31+
},
32+
component: () => import('../views/UserView.vue')
2533
}
2634
]
2735
}

0 commit comments

Comments
 (0)