@finema/finework-layer 1.0.64 → 1.0.66

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,13 @@
1
1
  # Changelog
2
2
 
3
+ ## [1.0.66](https://gitlab.finema.co/finema/finework/finework-frontend-layer/compare/1.0.65...1.0.66) (2026-05-26)
4
+
5
+ ### Features
6
+
7
+ * enhance permission system to support custom string-based permissions ([94cb037](https://gitlab.finema.co/finema/finework/finework-frontend-layer/commit/94cb0376f33c9e9f76b4cc63ee84c3fe44b41880))
8
+
9
+ ## [1.0.65](https://gitlab.finema.co/finema/finework/finework-frontend-layer/compare/1.0.64...1.0.65) (2026-05-26)
10
+
3
11
  ## [1.0.64](https://gitlab.finema.co/finema/finework/finework-frontend-layer/compare/1.0.63...1.0.64) (2026-05-25)
4
12
 
5
13
  ### Features
@@ -188,7 +188,7 @@
188
188
  import type { NavigationMenuItem } from '@nuxt/ui'
189
189
  import { computed } from 'vue'
190
190
  import { useRoute } from 'vue-router'
191
- import type { Permission, UserModule } from '#imports'
191
+ import type { UserModule } from '#imports'
192
192
  import Navbar from '../Apps.vue'
193
193
 
194
194
  defineEmits<{
@@ -318,7 +318,8 @@ const filterItems = (items: NavigationMenuItem[]): NavigationMenuItem[] => {
318
318
  // Extract all permission levels
319
319
  const permissionLevels = permissionStrings.map(
320
320
  (p) => p.split(':')[1],
321
- ) as Permission[]
321
+ )
322
+ .filter((p): p is string => !!p)
322
323
 
323
324
  return auth.hasPermission(moduleStr as UserModule, ...permissionLevels)
324
325
  }
@@ -5,6 +5,8 @@ export enum Permission {
5
5
  NONE = 'NONE',
6
6
  }
7
7
 
8
+ export type AccessPermission = Permission | string
9
+
8
10
  export const PERMISSION_LABEL = {
9
11
  [Permission.ADMIN]: 'Admin',
10
12
  [Permission.USER]: 'User',
@@ -85,6 +87,7 @@ export interface IUserProfile {
85
87
  export enum UserModule {
86
88
  CHECKIN = 'clockin',
87
89
  PMO = 'pmo',
90
+ PMO_TAB = 'pmo_tab',
88
91
  TIMESHEET = 'timesheet',
89
92
  SETTING = 'setting',
90
93
  QUOTATION = 'quotation',
@@ -105,6 +108,7 @@ export enum UserModule {
105
108
  export interface IUserAccessLevel {
106
109
  used_id: string
107
110
  pmo: Permission.USER | Permission.ADMIN | Permission.SUPER
111
+ pmo_tab?: string[]
108
112
  clockin: Permission.USER | Permission.ADMIN
109
113
  timesheet: Permission.USER | Permission.ADMIN | Permission.SUPER
110
114
  setting: Permission.USER | Permission.SUPER
@@ -225,7 +229,7 @@ export const useAuth = () => {
225
229
  me.set(null)
226
230
  })
227
231
 
228
- const hasPermission = (module: UserModule, ...permissions: Permission[]) => {
232
+ const hasPermission = (module: UserModule, ...permissions: AccessPermission[]) => {
229
233
  const accessLevel = me.value?.access_level
230
234
 
231
235
  if (!accessLevel) {
@@ -1,7 +1,7 @@
1
1
  import { defineNuxtRouteMiddleware, useAuth, navigateTo, abortNavigation } from '#imports'
2
2
 
3
3
  export interface AccessGuardOptions {
4
- permissions?: `${UserModule}:${Permission}`[]
4
+ permissions?: `${UserModule}:${string}`[]
5
5
  redirectTo?: string
6
6
  }
7
7
 
@@ -11,7 +11,7 @@ export default defineNuxtRouteMiddleware(async (to, from) => {
11
11
 
12
12
  if (
13
13
  options.permissions?.some((perm) => {
14
- const [module, permission] = perm.split(':') as [UserModule, Permission]
14
+ const [module, permission] = perm.split(':') as [UserModule, string]
15
15
 
16
16
  return auth.hasPermission(module, permission)
17
17
  })
package/bun.lock CHANGED
@@ -5,7 +5,7 @@
5
5
  "": {
6
6
  "name": "@finema/finework-layer",
7
7
  "dependencies": {
8
- "@finema/core": "^3.16.5",
8
+ "@finema/core": "^3.16.9",
9
9
  },
10
10
  "devDependencies": {
11
11
  "@finema/eslint-config": "^2.0.3",
@@ -184,7 +184,7 @@
184
184
 
185
185
  "@eslint/plugin-kit": ["@eslint/plugin-kit@0.4.1", "", { "dependencies": { "@eslint/core": "^0.17.0", "levn": "^0.4.1" } }, "sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA=="],
186
186
 
187
- "@finema/core": ["@finema/core@3.16.5", "", { "dependencies": { "@iconify-json/heroicons": "^1.2.2", "@iconify-json/ph": "^1.2.2", "@iconify-json/svg-spinners": "^1.2.2", "@nuxt/kit": "^4.1.3", "@nuxt/ui": "^4.5.0", "@pinia/nuxt": "^0.11.0", "@tailwindcss/typography": "^0.5.0-alpha.3", "@tiptap/extension-text-align": "^3.18.0", "@vee-validate/nuxt": "^4.15.1", "@vee-validate/valibot": "^4.15.1", "@vuepic/vue-datepicker": "^11.0.2", "@vueuse/components": "^13.9.0", "@vueuse/core": "^13.9.0", "@wdns/vue-code-block": "^2.3.5", "axios": "^1.10.0", "date-fns": "^4.1.0", "date-fns-tz": "^3.2.0", "defu": "^6.1.4", "lodash-es": "^4.17.21", "maska": "^3.1.1", "url-join": "^5.0.0" } }, "sha512-NT8m5Q4pDIL0ktLOecd6aN9NKB5Jh4eAQaGEmYNDpz7zdFRETUpl+AihxoZRK9ok3X+lkIfId7Z3EAjxUpeuiA=="],
187
+ "@finema/core": ["@finema/core@3.16.9", "", { "dependencies": { "@iconify-json/heroicons": "^1.2.2", "@iconify-json/ph": "^1.2.2", "@iconify-json/svg-spinners": "^1.2.2", "@nuxt/kit": "^4.1.3", "@nuxt/ui": "^4.5.0", "@pinia/nuxt": "^0.11.0", "@tailwindcss/typography": "^0.5.0-alpha.3", "@tiptap/extension-text-align": "^3.18.0", "@vee-validate/nuxt": "^4.15.1", "@vee-validate/valibot": "^4.15.1", "@vuepic/vue-datepicker": "^11.0.2", "@vueuse/components": "^13.9.0", "@vueuse/core": "^13.9.0", "@wdns/vue-code-block": "^2.3.5", "axios": "^1.10.0", "date-fns": "^4.1.0", "date-fns-tz": "^3.2.0", "defu": "^6.1.4", "lodash-es": "^4.17.21", "maska": "^3.1.1", "url-join": "^5.0.0" } }, "sha512-QrdAJg//6zUHSHIu/w4XW/ObDeU6PP3vg4PruNi9rS+DQ4cJ242iBQ30bxmHH5yHrtWgqITrxMNz4JFweR0ymA=="],
188
188
 
189
189
  "@finema/eslint-config": ["@finema/eslint-config@2.0.4", "", { "dependencies": { "eslint-plugin-better-tailwindcss": "^3.7.10", "eslint-plugin-tailwindcss": "^3.18.2", "eslint-plugin-unused-imports": "^4.2.0" }, "peerDependencies": { "eslint": "^9.37.0" } }, "sha512-kKznMgbsOfPPg+td53dK36I3YFo6Ji4GAwKbVS2pimuQfcJT4mbgnEXCuW1Q/uNvUaFItr1NCSSD1LtEQTNNug=="],
190
190
 
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@finema/finework-layer",
3
3
  "type": "module",
4
- "version": "1.0.64",
4
+ "version": "1.0.66",
5
5
  "main": "./nuxt.config.ts",
6
6
  "scripts": {
7
7
  "dev": "nuxi dev .playground -o",
@@ -30,7 +30,7 @@
30
30
  "vue": "latest"
31
31
  },
32
32
  "dependencies": {
33
- "@finema/core": "^3.16.5"
33
+ "@finema/core": "^3.16.9"
34
34
  },
35
35
  "lint-staged": {
36
36
  "*": "eslint"