@longzai-intelligence-auth/rbac 0.0.2 → 0.0.4

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/dist/index.cjs ADDED
@@ -0,0 +1 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});function e(){return{extractRolesFromPayload(e){return{userId:e.sub,tenantId:e.tenantId,roles:e.roles??[]}},hasRole(e,t){return(e.roles??[]).includes(t)},hasAnyRole(e,t){let n=e.roles??[];return t.some(e=>n.includes(e))},hasPermission(e,t,n){let r=e.permissions??[],i=`${t}:${n}`;return!!(r.includes(i)||r.includes(`${t}:*`)||r.includes(`*:${n}`)||r.includes(`*:*`))},hasAnyPermission(e,t){let n=e.permissions??[];return t.some(e=>{let t=`${e.resource}:${e.action}`;return!!(n.includes(t)||n.includes(`${e.resource}:*`)||n.includes(`*:${e.action}`)||n.includes(`*:*`))})}}}exports.createRoleChecker=e;
@@ -0,0 +1,18 @@
1
+ import { AccessTokenPayload, ResourceAction } from "@longzai-intelligence-auth/core";
2
+
3
+ //#region src/role-checker.d.ts
4
+ type RoleInfo = {
5
+ userId: string;
6
+ tenantId?: string;
7
+ roles: string[];
8
+ };
9
+ type RoleChecker = {
10
+ extractRolesFromPayload(payload: AccessTokenPayload): RoleInfo;
11
+ hasRole(payload: AccessTokenPayload, role: string): boolean;
12
+ hasAnyRole(payload: AccessTokenPayload, roles: string[]): boolean;
13
+ hasPermission(payload: AccessTokenPayload, resource: string, action: string): boolean;
14
+ hasAnyPermission(payload: AccessTokenPayload, permissions: ResourceAction[]): boolean;
15
+ };
16
+ declare function createRoleChecker(): RoleChecker;
17
+ //#endregion
18
+ export { type RoleChecker, type RoleInfo, createRoleChecker };
@@ -0,0 +1,18 @@
1
+ import { AccessTokenPayload, ResourceAction } from "@longzai-intelligence-auth/core";
2
+
3
+ //#region src/role-checker.d.ts
4
+ type RoleInfo = {
5
+ userId: string;
6
+ tenantId?: string;
7
+ roles: string[];
8
+ };
9
+ type RoleChecker = {
10
+ extractRolesFromPayload(payload: AccessTokenPayload): RoleInfo;
11
+ hasRole(payload: AccessTokenPayload, role: string): boolean;
12
+ hasAnyRole(payload: AccessTokenPayload, roles: string[]): boolean;
13
+ hasPermission(payload: AccessTokenPayload, resource: string, action: string): boolean;
14
+ hasAnyPermission(payload: AccessTokenPayload, permissions: ResourceAction[]): boolean;
15
+ };
16
+ declare function createRoleChecker(): RoleChecker;
17
+ //#endregion
18
+ export { type RoleChecker, type RoleInfo, createRoleChecker };
package/dist/index.mjs ADDED
@@ -0,0 +1 @@
1
+ function e(){return{extractRolesFromPayload(e){return{userId:e.sub,tenantId:e.tenantId,roles:e.roles??[]}},hasRole(e,t){return(e.roles??[]).includes(t)},hasAnyRole(e,t){let n=e.roles??[];return t.some(e=>n.includes(e))},hasPermission(e,t,n){let r=e.permissions??[],i=`${t}:${n}`;return!!(r.includes(i)||r.includes(`${t}:*`)||r.includes(`*:${n}`)||r.includes(`*:*`))},hasAnyPermission(e,t){let n=e.permissions??[];return t.some(e=>{let t=`${e.resource}:${e.action}`;return!!(n.includes(t)||n.includes(`${e.resource}:*`)||n.includes(`*:${e.action}`)||n.includes(`*:*`))})}}}export{e as createRoleChecker};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@longzai-intelligence-auth/rbac",
3
- "version": "0.0.2",
3
+ "version": "0.0.4",
4
4
  "license": "UNLICENSED",
5
5
  "type": "module",
6
6
  "sideEffects": false,
@@ -31,7 +31,7 @@
31
31
  "directory": "packages/rbac"
32
32
  },
33
33
  "dependencies": {
34
- "@longzai-intelligence-auth/core": "0.0.1"
34
+ "@longzai-intelligence-auth/core": "0.0.4"
35
35
  },
36
36
  "scripts": {
37
37
  "build": "bun build src/index.ts --outdir dist --target bun",
@@ -47,6 +47,11 @@
47
47
  "test": "bun test",
48
48
  "test:watch": "bun test --watch",
49
49
  "test:coverage": "bun test --coverage",
50
+ "test:unit": "bun test src/__tests__/unit/",
51
+ "test:integration": "bun test src/__tests__/integration/",
50
52
  "clean": "rm -rf dist out .cache"
53
+ },
54
+ "devDependencies": {
55
+ "@types/bun": "^1.3.14"
51
56
  }
52
57
  }
package/dist/index.d.ts DELETED
@@ -1,2 +0,0 @@
1
- export { createRoleChecker } from "./role-checker";
2
- export type { RoleInfo, RoleChecker } from "./role-checker";
package/dist/index.js DELETED
@@ -1 +0,0 @@
1
- export { createRoleChecker } from "./role-checker";
@@ -1,14 +0,0 @@
1
- import type { AccessTokenPayload, ResourceAction } from "@longzai-intelligence-auth/core";
2
- export type RoleInfo = {
3
- userId: string;
4
- tenantId?: string;
5
- roles: string[];
6
- };
7
- export type RoleChecker = {
8
- extractRolesFromPayload(payload: AccessTokenPayload): RoleInfo;
9
- hasRole(payload: AccessTokenPayload, role: string): boolean;
10
- hasAnyRole(payload: AccessTokenPayload, roles: string[]): boolean;
11
- hasPermission(payload: AccessTokenPayload, resource: string, action: string): boolean;
12
- hasAnyPermission(payload: AccessTokenPayload, permissions: ResourceAction[]): boolean;
13
- };
14
- export declare function createRoleChecker(): RoleChecker;
@@ -1,47 +0,0 @@
1
- export function createRoleChecker() {
2
- return {
3
- extractRolesFromPayload(payload) {
4
- return {
5
- userId: payload.sub,
6
- tenantId: payload.tenantId,
7
- roles: payload.roles ?? [],
8
- };
9
- },
10
- hasRole(payload, role) {
11
- const roles = payload.roles ?? [];
12
- return roles.includes(role);
13
- },
14
- hasAnyRole(payload, roles) {
15
- const payloadRoles = payload.roles ?? [];
16
- return roles.some((role) => payloadRoles.includes(role));
17
- },
18
- hasPermission(payload, resource, action) {
19
- const permissions = payload.permissions ?? [];
20
- const target = `${resource}:${action}`;
21
- if (permissions.includes(target))
22
- return true;
23
- if (permissions.includes(`${resource}:*`))
24
- return true;
25
- if (permissions.includes(`*:${action}`))
26
- return true;
27
- if (permissions.includes("*:*"))
28
- return true;
29
- return false;
30
- },
31
- hasAnyPermission(payload, permissions) {
32
- const payloadPermissions = payload.permissions ?? [];
33
- return permissions.some((perm) => {
34
- const target = `${perm.resource}:${perm.action}`;
35
- if (payloadPermissions.includes(target))
36
- return true;
37
- if (payloadPermissions.includes(`${perm.resource}:*`))
38
- return true;
39
- if (payloadPermissions.includes(`*:${perm.action}`))
40
- return true;
41
- if (payloadPermissions.includes("*:*"))
42
- return true;
43
- return false;
44
- });
45
- },
46
- };
47
- }