com-angel-authorization 1.0.0 → 1.0.2
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/README.md +87 -0
- package/dist/index.cjs +295 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +126 -1
- package/dist/index.d.ts +126 -1
- package/dist/index.js +280 -1
- package/dist/index.js.map +1 -1
- package/dist/react/index.cjs +482 -0
- package/dist/react/index.cjs.map +1 -1
- package/dist/react/index.d.cts +135 -1
- package/dist/react/index.d.ts +135 -1
- package/dist/react/index.js +488 -0
- package/dist/react/index.js.map +1 -1
- package/dist/vue/index.cjs +594 -0
- package/dist/vue/index.cjs.map +1 -1
- package/dist/vue/index.d.cts +162 -1
- package/dist/vue/index.d.ts +162 -1
- package/dist/vue/index.js +602 -0
- package/dist/vue/index.js.map +1 -1
- package/package.json +6 -1
package/dist/vue/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/vue/plugin.ts","../../src/vue/directive.ts","../../src/vue/Can.ts","../../src/vue/index.ts"],"sourcesContent":["import {\n computed,\n inject,\n onScopeDispose,\n shallowRef,\n type App,\n type ComputedRef,\n type InjectionKey,\n type Plugin,\n} from 'vue';\nimport {\n createPermissionStore,\n type CheckOptions,\n type PermissionCode,\n type PermissionState,\n type PermissionStore,\n type RoleCode,\n} from '../core';\nimport { createVPermission } from './directive';\n\nexport const PERMISSION_STORE_KEY: InjectionKey<PermissionStore> = Symbol(\n 'angel-authorization-store',\n);\n\nexport interface PermissionPluginOptions {\n /** Pass an existing store to share across apps. */\n store?: PermissionStore;\n /** Initial state when the plugin creates its own store. */\n initialState?: Partial<PermissionState>;\n /** Custom directive name. Default: `permission` → `v-permission`. */\n directiveName?: string;\n}\n\nexport function createPermissionPlugin(\n options: PermissionPluginOptions = {},\n): Plugin & { store: PermissionStore } {\n const store = options.store ?? createPermissionStore(options.initialState);\n const directiveName = options.directiveName ?? 'permission';\n\n const plugin: Plugin & { store: PermissionStore } = {\n store,\n install(app: App) {\n app.provide(PERMISSION_STORE_KEY, store);\n app.directive(directiveName, createVPermission(store));\n app.config.globalProperties.$permission = store;\n app.config.globalProperties.$can = (\n codes: PermissionCode | PermissionCode[],\n opts?: CheckOptions,\n ) => store.can(codes, opts);\n app.config.globalProperties.$hasRole = (\n codes: RoleCode | RoleCode[],\n opts?: CheckOptions,\n ) => store.hasRole(codes, opts);\n },\n };\n\n return plugin;\n}\n\nfunction resolveStore(store?: PermissionStore): PermissionStore {\n const injected = store ?? inject(PERMISSION_STORE_KEY, null);\n if (!injected) {\n throw new Error(\n '[com-angel-authorization/vue] Permission store not found. Did you call app.use(createPermissionPlugin())?',\n );\n }\n return injected;\n}\n\nexport interface UsePermissionResult {\n permissions: ComputedRef<PermissionCode[]>;\n roles: ComputedRef<RoleCode[]>;\n isSuperAdmin: ComputedRef<boolean>;\n hasPermission: (codes: PermissionCode | PermissionCode[], options?: CheckOptions) => boolean;\n hasRole: (codes: RoleCode | RoleCode[], options?: CheckOptions) => boolean;\n can: (codes: PermissionCode | PermissionCode[], options?: CheckOptions) => boolean;\n setPermissions: (permissions: PermissionCode[]) => void;\n setRoles: (roles: RoleCode[]) => void;\n setSuperAdmin: (isSuperAdmin: boolean) => void;\n hydrate: (payload: Partial<PermissionState>) => void;\n clear: () => void;\n store: PermissionStore;\n}\n\n/**\n * Reactive permission API for Vue 3 Composition API.\n */\nexport function usePermission(store?: PermissionStore): UsePermissionResult {\n const permissionStore = resolveStore(store);\n const state = shallowRef<PermissionState>(permissionStore.getState());\n\n const unsubscribe = permissionStore.subscribe((next) => {\n state.value = next;\n });\n onScopeDispose(unsubscribe);\n\n return {\n permissions: computed(() => state.value.permissions),\n roles: computed(() => state.value.roles),\n isSuperAdmin: computed(() => Boolean(state.value.isSuperAdmin)),\n hasPermission: (codes, options) => permissionStore.hasPermission(codes, options),\n hasRole: (codes, options) => permissionStore.hasRole(codes, options),\n can: (codes, options) => permissionStore.can(codes, options),\n setPermissions: permissionStore.setPermissions.bind(permissionStore),\n setRoles: permissionStore.setRoles.bind(permissionStore),\n setSuperAdmin: permissionStore.setSuperAdmin.bind(permissionStore),\n hydrate: permissionStore.hydrate.bind(permissionStore),\n clear: permissionStore.clear.bind(permissionStore),\n store: permissionStore,\n };\n}\n\nexport function useHasPermission(\n codes: PermissionCode | PermissionCode[],\n options?: CheckOptions,\n store?: PermissionStore,\n) {\n const { permissions, isSuperAdmin, hasPermission } = usePermission(store);\n return computed(() => {\n void permissions.value;\n void isSuperAdmin.value;\n return hasPermission(codes, options);\n });\n}\n\nexport function useHasRole(\n codes: RoleCode | RoleCode[],\n options?: CheckOptions,\n store?: PermissionStore,\n) {\n const { roles, isSuperAdmin, hasRole } = usePermission(store);\n return computed(() => {\n void roles.value;\n void isSuperAdmin.value;\n return hasRole(codes, options);\n });\n}\n\ndeclare module 'vue' {\n interface ComponentCustomProperties {\n $permission: PermissionStore;\n $can: (codes: PermissionCode | PermissionCode[], options?: CheckOptions) => boolean;\n $hasRole: (codes: RoleCode | RoleCode[], options?: CheckOptions) => boolean;\n }\n}\n","import type { Directive, DirectiveBinding } from 'vue';\nimport type { CheckOptions, MatchMode, PermissionCode, PermissionStore, RoleCode } from '../core';\n\nexport type PermissionDirectiveValue =\n | PermissionCode\n | PermissionCode[]\n | {\n permission?: PermissionCode | PermissionCode[];\n role?: RoleCode | RoleCode[];\n mode?: MatchMode;\n /** When both permission and role are set. Default: `and`. */\n combine?: 'and' | 'or';\n /** CSS display value when allowed. Default: restores original display. */\n display?: string;\n };\n\nfunction parseBinding(binding: DirectiveBinding<PermissionDirectiveValue>): {\n permission?: PermissionCode | PermissionCode[];\n role?: RoleCode | RoleCode[];\n mode?: MatchMode;\n combine: 'and' | 'or';\n display?: string;\n} {\n const value = binding.value;\n const arg = binding.arg;\n\n if (value && typeof value === 'object' && !Array.isArray(value)) {\n return {\n permission: value.permission,\n role: value.role,\n mode: value.mode ?? (arg === 'all' ? 'all' : 'any'),\n combine: value.combine ?? 'and',\n display: value.display,\n };\n }\n\n if (arg === 'role') {\n return {\n role: value as RoleCode | RoleCode[],\n mode: binding.modifiers.all ? 'all' : 'any',\n combine: 'and',\n };\n }\n\n return {\n permission: value as PermissionCode | PermissionCode[],\n mode: arg === 'all' || binding.modifiers.all ? 'all' : 'any',\n combine: 'and',\n };\n}\n\nfunction isAllowed(\n store: PermissionStore,\n binding: DirectiveBinding<PermissionDirectiveValue>,\n): boolean {\n const { permission, role, mode, combine } = parseBinding(binding);\n const options: CheckOptions = { mode };\n\n const hasPermCheck = permission !== undefined;\n const hasRoleCheck = role !== undefined;\n\n if (!hasPermCheck && !hasRoleCheck) return true;\n\n const permOk = hasPermCheck ? store.hasPermission(permission!, options) : true;\n const roleOk = hasRoleCheck ? store.hasRole(role!, options) : true;\n\n if (hasPermCheck && hasRoleCheck) {\n return combine === 'or' ? permOk || roleOk : permOk && roleOk;\n }\n\n return hasPermCheck ? permOk : roleOk;\n}\n\ntype ElWithPermission = HTMLElement & {\n __angelPermissionDisplay?: string;\n __angelPermissionUnsubscribe?: () => void;\n};\n\nfunction applyVisibility(\n el: ElWithPermission,\n allowed: boolean,\n display?: string,\n): void {\n if (el.__angelPermissionDisplay === undefined) {\n el.__angelPermissionDisplay = el.style.display;\n }\n\n if (allowed) {\n el.style.display = display ?? el.__angelPermissionDisplay ?? '';\n el.removeAttribute('aria-hidden');\n } else {\n el.style.display = 'none';\n el.setAttribute('aria-hidden', 'true');\n }\n}\n\n/**\n * Create a `v-permission` directive bound to a specific store.\n * Prefer installing via `createPermissionPlugin()` which registers this automatically.\n */\nexport function createVPermission(\n store: PermissionStore,\n): Directive<ElWithPermission, PermissionDirectiveValue> {\n return {\n mounted(el, binding) {\n const update = () => {\n const { display } = parseBinding(binding);\n applyVisibility(el, isAllowed(store, binding), display);\n };\n\n update();\n el.__angelPermissionUnsubscribe = store.subscribe(update);\n },\n\n updated(el, binding) {\n const { display } = parseBinding(binding);\n applyVisibility(el, isAllowed(store, binding), display);\n },\n\n unmounted(el) {\n el.__angelPermissionUnsubscribe?.();\n delete el.__angelPermissionUnsubscribe;\n delete el.__angelPermissionDisplay;\n },\n };\n}\n","import { computed, defineComponent, type PropType } from 'vue';\nimport type { MatchMode, PermissionCode, RoleCode } from '../core';\nimport { usePermission } from './plugin';\n\n/**\n * Conditionally render slot content based on permission / role.\n *\n * @example\n * <Can permission=\"user:edit\">\n * <button>Edit</button>\n * </Can>\n *\n * <Can :permission=\"['user:edit', 'user:delete']\" mode=\"all\">\n * <AdminPanel />\n * <template #fallback>No access</template>\n * </Can>\n */\nexport const Can = defineComponent({\n name: 'Can',\n props: {\n permission: {\n type: [String, Array] as PropType<PermissionCode | PermissionCode[]>,\n default: undefined,\n },\n role: {\n type: [String, Array] as PropType<RoleCode | RoleCode[]>,\n default: undefined,\n },\n mode: {\n type: String as PropType<MatchMode>,\n default: 'any',\n },\n combine: {\n type: String as PropType<'and' | 'or'>,\n default: 'and',\n },\n },\n setup(props, { slots }) {\n const { hasPermission, hasRole, permissions, roles, isSuperAdmin } = usePermission();\n\n const allowed = computed(() => {\n void permissions.value;\n void roles.value;\n void isSuperAdmin.value;\n\n const hasPermCheck = props.permission !== undefined;\n const hasRoleCheck = props.role !== undefined;\n\n if (!hasPermCheck && !hasRoleCheck) return true;\n\n const options = { mode: props.mode };\n const permOk = hasPermCheck ? hasPermission(props.permission!, options) : true;\n const roleOk = hasRoleCheck ? hasRole(props.role!, options) : true;\n\n if (hasPermCheck && hasRoleCheck) {\n return props.combine === 'or' ? permOk || roleOk : permOk && roleOk;\n }\n\n return hasPermCheck ? permOk : roleOk;\n });\n\n return () => {\n if (allowed.value) {\n return slots.default?.();\n }\n return slots.fallback?.() ?? null;\n };\n },\n});\n","export {\n createPermissionPlugin,\n usePermission,\n useHasPermission,\n useHasRole,\n PERMISSION_STORE_KEY,\n} from './plugin';\nexport type { PermissionPluginOptions, UsePermissionResult } from './plugin';\n\nexport { createVPermission } from './directive';\nexport type { PermissionDirectiveValue } from './directive';\n\nexport { Can } from './Can';\n\nexport type {\n CheckOptions,\n MatchMode,\n PermissionChecker,\n PermissionCode,\n PermissionListener,\n PermissionState,\n RoleCode,\n} from '../core';\n\nexport { PermissionStore, createPermissionStore } from '../core';\n"],"mappings":"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","names":["computed","computed","createPermissionStore"]}
|
|
1
|
+
{"version":3,"sources":["../../src/vue/plugin.ts","../../src/vue/directive.ts","../../src/vue/Can.ts","../../src/vue/ResourceManager.ts","../../src/vue/index.ts"],"sourcesContent":["import {\n computed,\n inject,\n onScopeDispose,\n shallowRef,\n type App,\n type ComputedRef,\n type InjectionKey,\n type Plugin,\n} from 'vue';\nimport {\n createPermissionStore,\n type CheckOptions,\n type PermissionCode,\n type PermissionState,\n type PermissionStore,\n type RoleCode,\n} from '../core';\nimport { createVPermission } from './directive';\n\nexport const PERMISSION_STORE_KEY: InjectionKey<PermissionStore> = Symbol(\n 'angel-authorization-store',\n);\n\nexport interface PermissionPluginOptions {\n /** Pass an existing store to share across apps. */\n store?: PermissionStore;\n /** Initial state when the plugin creates its own store. */\n initialState?: Partial<PermissionState>;\n /** Custom directive name. Default: `permission` → `v-permission`. */\n directiveName?: string;\n}\n\nexport function createPermissionPlugin(\n options: PermissionPluginOptions = {},\n): Plugin & { store: PermissionStore } {\n const store = options.store ?? createPermissionStore(options.initialState);\n const directiveName = options.directiveName ?? 'permission';\n\n const plugin: Plugin & { store: PermissionStore } = {\n store,\n install(app: App) {\n app.provide(PERMISSION_STORE_KEY, store);\n app.directive(directiveName, createVPermission(store));\n app.config.globalProperties.$permission = store;\n app.config.globalProperties.$can = (\n codes: PermissionCode | PermissionCode[],\n opts?: CheckOptions,\n ) => store.can(codes, opts);\n app.config.globalProperties.$hasRole = (\n codes: RoleCode | RoleCode[],\n opts?: CheckOptions,\n ) => store.hasRole(codes, opts);\n },\n };\n\n return plugin;\n}\n\nfunction resolveStore(store?: PermissionStore): PermissionStore {\n const injected = store ?? inject(PERMISSION_STORE_KEY, null);\n if (!injected) {\n throw new Error(\n '[com-angel-authorization/vue] Permission store not found. Did you call app.use(createPermissionPlugin())?',\n );\n }\n return injected;\n}\n\nexport interface UsePermissionResult {\n permissions: ComputedRef<PermissionCode[]>;\n roles: ComputedRef<RoleCode[]>;\n isSuperAdmin: ComputedRef<boolean>;\n hasPermission: (codes: PermissionCode | PermissionCode[], options?: CheckOptions) => boolean;\n hasRole: (codes: RoleCode | RoleCode[], options?: CheckOptions) => boolean;\n can: (codes: PermissionCode | PermissionCode[], options?: CheckOptions) => boolean;\n setPermissions: (permissions: PermissionCode[]) => void;\n setRoles: (roles: RoleCode[]) => void;\n setSuperAdmin: (isSuperAdmin: boolean) => void;\n hydrate: (payload: Partial<PermissionState>) => void;\n clear: () => void;\n store: PermissionStore;\n}\n\n/**\n * Reactive permission API for Vue 3 Composition API.\n */\nexport function usePermission(store?: PermissionStore): UsePermissionResult {\n const permissionStore = resolveStore(store);\n const state = shallowRef<PermissionState>(permissionStore.getState());\n\n const unsubscribe = permissionStore.subscribe((next) => {\n state.value = next;\n });\n onScopeDispose(unsubscribe);\n\n return {\n permissions: computed(() => state.value.permissions),\n roles: computed(() => state.value.roles),\n isSuperAdmin: computed(() => Boolean(state.value.isSuperAdmin)),\n hasPermission: (codes, options) => permissionStore.hasPermission(codes, options),\n hasRole: (codes, options) => permissionStore.hasRole(codes, options),\n can: (codes, options) => permissionStore.can(codes, options),\n setPermissions: permissionStore.setPermissions.bind(permissionStore),\n setRoles: permissionStore.setRoles.bind(permissionStore),\n setSuperAdmin: permissionStore.setSuperAdmin.bind(permissionStore),\n hydrate: permissionStore.hydrate.bind(permissionStore),\n clear: permissionStore.clear.bind(permissionStore),\n store: permissionStore,\n };\n}\n\nexport function useHasPermission(\n codes: PermissionCode | PermissionCode[],\n options?: CheckOptions,\n store?: PermissionStore,\n) {\n const { permissions, isSuperAdmin, hasPermission } = usePermission(store);\n return computed(() => {\n void permissions.value;\n void isSuperAdmin.value;\n return hasPermission(codes, options);\n });\n}\n\nexport function useHasRole(\n codes: RoleCode | RoleCode[],\n options?: CheckOptions,\n store?: PermissionStore,\n) {\n const { roles, isSuperAdmin, hasRole } = usePermission(store);\n return computed(() => {\n void roles.value;\n void isSuperAdmin.value;\n return hasRole(codes, options);\n });\n}\n\ndeclare module 'vue' {\n interface ComponentCustomProperties {\n $permission: PermissionStore;\n $can: (codes: PermissionCode | PermissionCode[], options?: CheckOptions) => boolean;\n $hasRole: (codes: RoleCode | RoleCode[], options?: CheckOptions) => boolean;\n }\n}\n","import type { Directive, DirectiveBinding } from 'vue';\nimport type { CheckOptions, MatchMode, PermissionCode, PermissionStore, RoleCode } from '../core';\n\nexport type PermissionDirectiveValue =\n | PermissionCode\n | PermissionCode[]\n | {\n permission?: PermissionCode | PermissionCode[];\n role?: RoleCode | RoleCode[];\n mode?: MatchMode;\n /** When both permission and role are set. Default: `and`. */\n combine?: 'and' | 'or';\n /** CSS display value when allowed. Default: restores original display. */\n display?: string;\n };\n\nfunction parseBinding(binding: DirectiveBinding<PermissionDirectiveValue>): {\n permission?: PermissionCode | PermissionCode[];\n role?: RoleCode | RoleCode[];\n mode?: MatchMode;\n combine: 'and' | 'or';\n display?: string;\n} {\n const value = binding.value;\n const arg = binding.arg;\n\n if (value && typeof value === 'object' && !Array.isArray(value)) {\n return {\n permission: value.permission,\n role: value.role,\n mode: value.mode ?? (arg === 'all' ? 'all' : 'any'),\n combine: value.combine ?? 'and',\n display: value.display,\n };\n }\n\n if (arg === 'role') {\n return {\n role: value as RoleCode | RoleCode[],\n mode: binding.modifiers.all ? 'all' : 'any',\n combine: 'and',\n };\n }\n\n return {\n permission: value as PermissionCode | PermissionCode[],\n mode: arg === 'all' || binding.modifiers.all ? 'all' : 'any',\n combine: 'and',\n };\n}\n\nfunction isAllowed(\n store: PermissionStore,\n binding: DirectiveBinding<PermissionDirectiveValue>,\n): boolean {\n const { permission, role, mode, combine } = parseBinding(binding);\n const options: CheckOptions = { mode };\n\n const hasPermCheck = permission !== undefined;\n const hasRoleCheck = role !== undefined;\n\n if (!hasPermCheck && !hasRoleCheck) return true;\n\n const permOk = hasPermCheck ? store.hasPermission(permission!, options) : true;\n const roleOk = hasRoleCheck ? store.hasRole(role!, options) : true;\n\n if (hasPermCheck && hasRoleCheck) {\n return combine === 'or' ? permOk || roleOk : permOk && roleOk;\n }\n\n return hasPermCheck ? permOk : roleOk;\n}\n\ntype ElWithPermission = HTMLElement & {\n __angelPermissionDisplay?: string;\n __angelPermissionUnsubscribe?: () => void;\n};\n\nfunction applyVisibility(\n el: ElWithPermission,\n allowed: boolean,\n display?: string,\n): void {\n if (el.__angelPermissionDisplay === undefined) {\n el.__angelPermissionDisplay = el.style.display;\n }\n\n if (allowed) {\n el.style.display = display ?? el.__angelPermissionDisplay ?? '';\n el.removeAttribute('aria-hidden');\n } else {\n el.style.display = 'none';\n el.setAttribute('aria-hidden', 'true');\n }\n}\n\n/**\n * Create a `v-permission` directive bound to a specific store.\n * Prefer installing via `createPermissionPlugin()` which registers this automatically.\n */\nexport function createVPermission(\n store: PermissionStore,\n): Directive<ElWithPermission, PermissionDirectiveValue> {\n return {\n mounted(el, binding) {\n const update = () => {\n const { display } = parseBinding(binding);\n applyVisibility(el, isAllowed(store, binding), display);\n };\n\n update();\n el.__angelPermissionUnsubscribe = store.subscribe(update);\n },\n\n updated(el, binding) {\n const { display } = parseBinding(binding);\n applyVisibility(el, isAllowed(store, binding), display);\n },\n\n unmounted(el) {\n el.__angelPermissionUnsubscribe?.();\n delete el.__angelPermissionUnsubscribe;\n delete el.__angelPermissionDisplay;\n },\n };\n}\n","import { computed, defineComponent, type PropType } from 'vue';\nimport type { MatchMode, PermissionCode, RoleCode } from '../core';\nimport { usePermission } from './plugin';\n\n/**\n * Conditionally render slot content based on permission / role.\n *\n * @example\n * <Can permission=\"user:edit\">\n * <button>Edit</button>\n * </Can>\n *\n * <Can :permission=\"['user:edit', 'user:delete']\" mode=\"all\">\n * <AdminPanel />\n * <template #fallback>No access</template>\n * </Can>\n */\nexport const Can = defineComponent({\n name: 'Can',\n props: {\n permission: {\n type: [String, Array] as PropType<PermissionCode | PermissionCode[]>,\n default: undefined,\n },\n role: {\n type: [String, Array] as PropType<RoleCode | RoleCode[]>,\n default: undefined,\n },\n mode: {\n type: String as PropType<MatchMode>,\n default: 'any',\n },\n combine: {\n type: String as PropType<'and' | 'or'>,\n default: 'and',\n },\n },\n setup(props, { slots }) {\n const { hasPermission, hasRole, permissions, roles, isSuperAdmin } = usePermission();\n\n const allowed = computed(() => {\n void permissions.value;\n void roles.value;\n void isSuperAdmin.value;\n\n const hasPermCheck = props.permission !== undefined;\n const hasRoleCheck = props.role !== undefined;\n\n if (!hasPermCheck && !hasRoleCheck) return true;\n\n const options = { mode: props.mode };\n const permOk = hasPermCheck ? hasPermission(props.permission!, options) : true;\n const roleOk = hasRoleCheck ? hasRole(props.role!, options) : true;\n\n if (hasPermCheck && hasRoleCheck) {\n return props.combine === 'or' ? permOk || roleOk : permOk && roleOk;\n }\n\n return hasPermCheck ? permOk : roleOk;\n });\n\n return () => {\n if (allowed.value) {\n return slots.default?.();\n }\n return slots.fallback?.() ?? null;\n };\n },\n});\n","import {\n defineComponent,\n h,\n onMounted,\n reactive,\n ref,\n watch,\n type PropType,\n} from 'vue';\nimport {\n RESOURCE_PRIVATE_OPTIONS,\n RESOURCE_STATUS_ENABLED,\n RESOURCE_STATUS_OPTIONS,\n type AuthorizationResource,\n type AuthorizationResourceApi,\n type AuthorizationResourceFormValues,\n type PageDirection,\n} from '../resources';\n\nconst PAGE_SIZE_OPTIONS = ['10', '20', '50', '100'];\n\nfunction emptyForm(): AuthorizationResourceFormValues {\n return {\n name: '',\n identification: '',\n status: RESOURCE_STATUS_ENABLED,\n private: false,\n description: '',\n };\n}\n\nconst s = {\n root: {\n display: 'flex',\n flexDirection: 'column',\n gap: '16px',\n padding: '16px',\n color: '#101828',\n fontFamily:\n '\"PingFang SC\", \"Microsoft YaHei\", -apple-system, BlinkMacSystemFont, sans-serif',\n },\n toolbar: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n gap: '12px',\n },\n title: { margin: '0', fontSize: '18px', fontWeight: '600' },\n toolbarRight: { display: 'flex', alignItems: 'center', gap: '8px' },\n error: {\n padding: '10px 12px',\n borderRadius: '8px',\n background: '#fef3f2',\n color: '#b42318',\n fontSize: '13px',\n },\n tableWrap: {\n overflow: 'auto',\n border: '1px solid #eaecf0',\n borderRadius: '10px',\n background: '#fff',\n },\n table: { width: '100%', borderCollapse: 'collapse', minWidth: '720px' },\n th: {\n textAlign: 'left',\n padding: '12px 14px',\n fontSize: '13px',\n fontWeight: '600',\n color: '#475467',\n background: '#f9fafb',\n borderBottom: '1px solid #eaecf0',\n },\n td: {\n padding: '12px 14px',\n fontSize: '14px',\n borderBottom: '1px solid #f2f4f7',\n verticalAlign: 'middle',\n },\n empty: {\n padding: '28px',\n textAlign: 'center',\n color: '#98a2b3',\n fontSize: '14px',\n },\n code: {\n fontFamily: 'ui-monospace, SFMono-Regular, Menlo, monospace',\n fontSize: '13px',\n background: '#f2f4f7',\n padding: '2px 6px',\n borderRadius: '4px',\n },\n badge: {\n display: 'inline-block',\n padding: '2px 8px',\n borderRadius: '999px',\n fontSize: '12px',\n fontWeight: '500',\n },\n linkBtn: {\n border: 'none',\n background: 'transparent',\n color: '#049BAD',\n cursor: 'pointer',\n padding: '0 8px 0 0',\n fontSize: '13px',\n },\n pagination: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n gap: '12px',\n },\n pageSize: {\n display: 'flex',\n alignItems: 'center',\n gap: '8px',\n fontSize: '13px',\n color: '#475467',\n },\n pageBtns: { display: 'flex', gap: '8px' },\n primaryBtn: {\n border: 'none',\n background: '#049BAD',\n color: '#fff',\n borderRadius: '8px',\n padding: '8px 14px',\n cursor: 'pointer',\n fontSize: '14px',\n },\n secondaryBtn: {\n border: '1px solid #d0d5dd',\n background: '#fff',\n color: '#344054',\n borderRadius: '8px',\n padding: '8px 14px',\n cursor: 'pointer',\n fontSize: '14px',\n },\n select: {\n border: '1px solid #d0d5dd',\n borderRadius: '6px',\n padding: '4px 8px',\n fontSize: '13px',\n },\n mask: {\n position: 'fixed',\n inset: '0',\n background: 'rgba(16, 24, 40, 0.45)',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n zIndex: '1000',\n padding: '16px',\n },\n dialog: {\n width: '100%',\n maxWidth: '480px',\n background: '#fff',\n borderRadius: '12px',\n boxShadow: '0 20px 40px rgba(16,24,40,0.18)',\n },\n dialogHeader: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n padding: '14px 16px',\n borderBottom: '1px solid #eaecf0',\n },\n dialogTitle: { margin: '0', fontSize: '16px', fontWeight: '600' },\n iconBtn: {\n border: 'none',\n background: 'transparent',\n fontSize: '22px',\n lineHeight: '1',\n cursor: 'pointer',\n color: '#667085',\n },\n form: { display: 'flex', flexDirection: 'column', gap: '12px', padding: '16px' },\n field: { display: 'flex', flexDirection: 'column', gap: '6px' },\n label: { fontSize: '13px', color: '#344054', fontWeight: '500' },\n input: {\n border: '1px solid #d0d5dd',\n borderRadius: '8px',\n padding: '8px 10px',\n fontSize: '14px',\n outline: 'none',\n },\n dialogFooter: {\n display: 'flex',\n justifyContent: 'flex-end',\n gap: '8px',\n paddingTop: '4px',\n },\n} as const;\n\n/**\n * 权限点管理页面(Vue 3)\n */\nexport const ResourceManager = defineComponent({\n name: 'ResourceManager',\n props: {\n api: {\n type: Object as PropType<AuthorizationResourceApi>,\n required: true,\n },\n title: {\n type: String,\n default: '权限点管理',\n },\n pageSize: {\n type: String,\n default: '20',\n },\n },\n setup(props, { slots }) {\n const records = ref<AuthorizationResource[]>([]);\n const loading = ref(false);\n const error = ref('');\n const pageSize = ref(props.pageSize);\n const pageToken = ref('');\n const hasPreviousPage = ref(false);\n const hasNextPage = ref(false);\n const dialogOpen = ref(false);\n const editing = ref<AuthorizationResource | null>(null);\n const form = reactive<AuthorizationResourceFormValues>(emptyForm());\n const saving = ref(false);\n\n const statusLabel = Object.fromEntries(\n RESOURCE_STATUS_OPTIONS.map((o) => [o.value, o.label]),\n ) as Record<number, string>;\n\n async function loadList(direction: PageDirection = 'current', token = pageToken.value) {\n loading.value = true;\n error.value = '';\n try {\n const result = await props.api.list({\n pagination: {\n pageToken: token,\n pageSize: pageSize.value,\n pageDirection: direction,\n },\n });\n records.value = result.records;\n pageToken.value = result.pageToken;\n hasPreviousPage.value = result.hasPreviousPage;\n hasNextPage.value = result.hasNextPage;\n } catch (err) {\n error.value = err instanceof Error ? err.message : '加载失败';\n } finally {\n loading.value = false;\n }\n }\n\n function openCreate() {\n editing.value = null;\n Object.assign(form, emptyForm());\n dialogOpen.value = true;\n }\n\n function openEdit(row: AuthorizationResource) {\n editing.value = row;\n Object.assign(form, {\n name: row.name,\n identification: row.identification,\n status: row.status,\n private: row.private,\n description: row.description,\n });\n dialogOpen.value = true;\n }\n\n function closeDialog() {\n if (!saving.value) dialogOpen.value = false;\n }\n\n async function handleSubmit(event: Event) {\n event.preventDefault();\n if (!form.name.trim()) {\n error.value = '请填写权限名称';\n return;\n }\n if (!form.identification.trim()) {\n error.value = '请填写接口标识';\n return;\n }\n\n saving.value = true;\n error.value = '';\n try {\n if (editing.value) {\n await props.api.update(editing.value.resourceId, { ...form });\n } else {\n await props.api.create({ ...form });\n }\n dialogOpen.value = false;\n await loadList('current', '');\n } catch (err) {\n error.value = err instanceof Error ? err.message : '保存失败';\n } finally {\n saving.value = false;\n }\n }\n\n async function handleDelete(row: AuthorizationResource) {\n if (!window.confirm(`确认删除权限点「${row.name}」?`)) return;\n error.value = '';\n try {\n await props.api.remove(row.resourceId);\n await loadList('current', '');\n } catch (err) {\n error.value = err instanceof Error ? err.message : '删除失败';\n }\n }\n\n onMounted(() => {\n void loadList('current', '');\n });\n\n watch(\n () => [props.api, pageSize.value] as const,\n () => {\n pageToken.value = '';\n void loadList('current', '');\n },\n );\n\n return () =>\n h('div', { style: s.root }, [\n h('div', { style: s.toolbar }, [\n h('h2', { style: s.title }, props.title),\n h('div', { style: s.toolbarRight }, [\n slots.toolbarExtra?.(),\n h(\n 'button',\n { type: 'button', style: s.primaryBtn, onClick: openCreate },\n '新增',\n ),\n ]),\n ]),\n error.value ? h('div', { style: s.error }, error.value) : null,\n h('div', { style: s.tableWrap }, [\n h('table', { style: s.table }, [\n h('thead', [\n h('tr', [\n h('th', { style: s.th }, '权限名称'),\n h('th', { style: s.th }, '接口标识'),\n h('th', { style: s.th }, '描述'),\n h('th', { style: { ...s.th, width: '90px' } }, '状态'),\n h('th', { style: { ...s.th, width: '140px' } }, '操作'),\n ]),\n ]),\n h(\n 'tbody',\n loading.value\n ? [\n h('tr', [\n h('td', { colspan: 5, style: s.empty }, '加载中…'),\n ]),\n ]\n : records.value.length === 0\n ? [\n h('tr', [\n h('td', { colspan: 5, style: s.empty }, '暂无数据'),\n ]),\n ]\n : records.value.map((row) =>\n h('tr', { key: row.resourceId }, [\n h('td', { style: s.td }, row.name),\n h('td', { style: s.td }, [\n h('code', { style: s.code }, row.identification),\n ]),\n h('td', { style: s.td }, row.description || '—'),\n h('td', { style: s.td }, [\n h(\n 'span',\n {\n style: {\n ...s.badge,\n background:\n row.status === RESOURCE_STATUS_ENABLED\n ? '#e8f7ef'\n : '#f4f4f5',\n color:\n row.status === RESOURCE_STATUS_ENABLED\n ? '#067647'\n : '#667085',\n },\n },\n statusLabel[row.status] ?? String(row.status),\n ),\n ]),\n h('td', { style: s.td }, [\n h(\n 'button',\n {\n type: 'button',\n style: s.linkBtn,\n onClick: () => openEdit(row),\n },\n '编辑',\n ),\n h(\n 'button',\n {\n type: 'button',\n style: { ...s.linkBtn, color: '#d92d20' },\n onClick: () => void handleDelete(row),\n },\n '删除',\n ),\n ]),\n ]),\n ),\n ),\n ]),\n ]),\n h('div', { style: s.pagination }, [\n h('label', { style: s.pageSize }, [\n '每页',\n h(\n 'select',\n {\n style: s.select,\n value: pageSize.value,\n onChange: (e: Event) => {\n pageSize.value = (e.target as HTMLSelectElement).value;\n },\n },\n PAGE_SIZE_OPTIONS.map((size) =>\n h('option', { key: size, value: size }, size),\n ),\n ),\n ]),\n h('div', { style: s.pageBtns }, [\n h(\n 'button',\n {\n type: 'button',\n style: s.secondaryBtn,\n disabled: !hasPreviousPage.value || loading.value,\n onClick: () => void loadList('previous'),\n },\n '上一页',\n ),\n h(\n 'button',\n {\n type: 'button',\n style: s.secondaryBtn,\n disabled: !hasNextPage.value || loading.value,\n onClick: () => void loadList('next'),\n },\n '下一页',\n ),\n ]),\n ]),\n dialogOpen.value\n ? h(\n 'div',\n { style: s.mask, onClick: closeDialog },\n [\n h(\n 'div',\n {\n style: s.dialog,\n role: 'dialog',\n 'aria-modal': 'true',\n onClick: (e: Event) => e.stopPropagation(),\n },\n [\n h('div', { style: s.dialogHeader }, [\n h(\n 'h3',\n { style: s.dialogTitle },\n editing.value ? '编辑权限点' : '新增权限点',\n ),\n h(\n 'button',\n {\n type: 'button',\n style: s.iconBtn,\n 'aria-label': '关闭',\n onClick: closeDialog,\n },\n '×',\n ),\n ]),\n h(\n 'form',\n {\n style: s.form,\n onSubmit: (e: Event) => void handleSubmit(e),\n },\n [\n h('label', { style: s.field }, [\n h('span', { style: s.label }, '权限名称'),\n h('input', {\n style: s.input,\n value: form.name,\n placeholder: '请输入权限名称',\n required: true,\n onInput: (e: Event) => {\n form.name = (e.target as HTMLInputElement).value;\n },\n }),\n ]),\n h('label', { style: s.field }, [\n h('span', { style: s.label }, '接口标识'),\n h('input', {\n style: s.input,\n value: form.identification,\n placeholder: '如 user:list',\n required: true,\n onInput: (e: Event) => {\n form.identification = (\n e.target as HTMLInputElement\n ).value;\n },\n }),\n ]),\n h('label', { style: s.field }, [\n h('span', { style: s.label }, '状态'),\n h(\n 'select',\n {\n style: s.input,\n value: form.status,\n onChange: (e: Event) => {\n form.status = Number(\n (e.target as HTMLSelectElement).value,\n ) as 0 | 1;\n },\n },\n RESOURCE_STATUS_OPTIONS.map((opt) =>\n h('option', { key: opt.value, value: opt.value }, opt.label),\n ),\n ),\n ]),\n h('label', { style: s.field }, [\n h('span', { style: s.label }, '私有资源'),\n h(\n 'select',\n {\n style: s.input,\n value: form.private ? '1' : '0',\n onChange: (e: Event) => {\n form.private =\n (e.target as HTMLSelectElement).value === '1';\n },\n },\n RESOURCE_PRIVATE_OPTIONS.map((opt) =>\n h(\n 'option',\n {\n key: String(opt.value),\n value: opt.value ? '1' : '0',\n },\n opt.label,\n ),\n ),\n ),\n ]),\n h('label', { style: s.field }, [\n h('span', { style: s.label }, '描述'),\n h('textarea', {\n style: {\n ...s.input,\n minHeight: '88px',\n resize: 'vertical',\n },\n value: form.description,\n placeholder: '请输入描述',\n onInput: (e: Event) => {\n form.description = (\n e.target as HTMLTextAreaElement\n ).value;\n },\n }),\n ]),\n h('div', { style: s.dialogFooter }, [\n h(\n 'button',\n {\n type: 'button',\n style: s.secondaryBtn,\n onClick: closeDialog,\n },\n '取消',\n ),\n h(\n 'button',\n {\n type: 'submit',\n style: s.primaryBtn,\n disabled: saving.value,\n },\n saving.value ? '保存中…' : '保存',\n ),\n ]),\n ],\n ),\n ],\n ),\n ],\n )\n : null,\n ]);\n },\n});\n","export {\n createPermissionPlugin,\n usePermission,\n useHasPermission,\n useHasRole,\n PERMISSION_STORE_KEY,\n} from './plugin';\nexport type { PermissionPluginOptions, UsePermissionResult } from './plugin';\n\nexport { createVPermission } from './directive';\nexport type { PermissionDirectiveValue } from './directive';\n\nexport { Can } from './Can';\n\nexport { ResourceManager } from './ResourceManager';\n\nexport type {\n CheckOptions,\n MatchMode,\n PermissionChecker,\n PermissionCode,\n PermissionListener,\n PermissionState,\n RoleCode,\n} from '../core';\n\nexport { PermissionStore, createPermissionStore } from '../core';\n\nexport { getAppClientId, getDeviceWorkerId, snowyflake } from '../utils/snowflake';\n\nexport type {\n AuthorizationResource,\n AuthorizationResourceApi,\n AuthorizationResourceFormValues,\n AuthorizationResourceListResult,\n CreateAuthorizationResourceBody,\n CreateDefaultResourceRequestOptions,\n FetchAuthorizationResourcesParams,\n HttpMethod,\n ListPaginationParams,\n ListPaginationResult,\n PageDirection,\n ResourceHttpRequest,\n ResourceRequestOptions,\n ResourceStatus,\n UpdateAuthorizationResourceBody,\n} from '../resources';\n\nexport {\n RESOURCE_PRIVATE_OPTIONS,\n RESOURCE_STATUS_DISABLED,\n RESOURCE_STATUS_ENABLED,\n RESOURCE_STATUS_OPTIONS,\n RESOURCE_TYPE_API,\n appendQueryParam,\n buildCreateBody,\n buildUpdateBody,\n createAuthorizationResourceApi,\n createDefaultResourceRequest,\n extractPagination,\n extractRecords,\n mapAuthorizationResource,\n} from '../resources';\n"],"mappings":"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","names":["computed","computed","defineComponent","createPermissionStore","RESOURCE_PRIVATE_OPTIONS","RESOURCE_STATUS_ENABLED","RESOURCE_STATUS_OPTIONS"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "com-angel-authorization",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.2",
|
|
4
4
|
"description": "Framework-agnostic user permission toolkit for React and Vue",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.cjs",
|
|
@@ -30,6 +30,7 @@
|
|
|
30
30
|
"scripts": {
|
|
31
31
|
"build": "tsup",
|
|
32
32
|
"dev": "tsup --watch",
|
|
33
|
+
"demo": "vite --config playground/vite.config.ts",
|
|
33
34
|
"typecheck": "tsc --noEmit",
|
|
34
35
|
"prepublishOnly": "npm run build"
|
|
35
36
|
},
|
|
@@ -58,9 +59,13 @@
|
|
|
58
59
|
},
|
|
59
60
|
"devDependencies": {
|
|
60
61
|
"@types/react": "^18.3.12",
|
|
62
|
+
"@types/react-dom": "^18.3.1",
|
|
63
|
+
"@vitejs/plugin-react": "^4.3.4",
|
|
61
64
|
"react": "^18.3.1",
|
|
65
|
+
"react-dom": "^18.3.1",
|
|
62
66
|
"tsup": "^8.3.5",
|
|
63
67
|
"typescript": "^5.6.3",
|
|
68
|
+
"vite": "^5.4.11",
|
|
64
69
|
"vue": "^3.5.13"
|
|
65
70
|
},
|
|
66
71
|
"sideEffects": false
|