@longzai-intelligence-auth/rbac 0.0.1 → 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 +1 -0
- package/dist/index.d.cts +18 -0
- package/dist/index.d.mts +18 -0
- package/dist/index.mjs +1 -0
- package/package.json +18 -5
- package/dist/index.d.ts +0 -2
- package/dist/index.js +0 -1
- package/dist/role-checker.d.ts +0 -14
- package/dist/role-checker.js +0 -47
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;
|
package/dist/index.d.cts
ADDED
|
@@ -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.d.mts
ADDED
|
@@ -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,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@longzai-intelligence-auth/rbac",
|
|
3
|
-
"version": "0.0.
|
|
4
|
-
"license": "
|
|
3
|
+
"version": "0.0.4",
|
|
4
|
+
"license": "UNLICENSED",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"sideEffects": false,
|
|
7
7
|
"main": "./dist/index.cjs",
|
|
@@ -31,14 +31,27 @@
|
|
|
31
31
|
"directory": "packages/rbac"
|
|
32
32
|
},
|
|
33
33
|
"dependencies": {
|
|
34
|
-
"@longzai-intelligence-auth/core": "0.0.
|
|
34
|
+
"@longzai-intelligence-auth/core": "0.0.4"
|
|
35
35
|
},
|
|
36
36
|
"scripts": {
|
|
37
|
-
"build": "
|
|
38
|
-
"
|
|
37
|
+
"build": "bun build src/index.ts --outdir dist --target bun",
|
|
38
|
+
"build:declaration": "tsgo --declaration --emitDeclarationOnly --outDir dist -p tsconfig/app.json",
|
|
39
|
+
"build:prod": "NODE_ENV=production tsdown",
|
|
40
|
+
"prepublishOnly": "bun run build:prod",
|
|
41
|
+
"typecheck": "bun run typecheck:app && bun run typecheck:node && bun run typecheck:test",
|
|
42
|
+
"typecheck:app": "tsgo --noEmit -p tsconfig/app.json",
|
|
43
|
+
"typecheck:node": "tsgo --noEmit -p tsconfig/node.json",
|
|
44
|
+
"typecheck:test": "tsgo --noEmit -p tsconfig/test.json",
|
|
39
45
|
"lint": "oxlint && oxfmt --check",
|
|
40
46
|
"lint:fix": "oxlint --fix && oxfmt",
|
|
41
47
|
"test": "bun test",
|
|
48
|
+
"test:watch": "bun test --watch",
|
|
49
|
+
"test:coverage": "bun test --coverage",
|
|
50
|
+
"test:unit": "bun test src/__tests__/unit/",
|
|
51
|
+
"test:integration": "bun test src/__tests__/integration/",
|
|
42
52
|
"clean": "rm -rf dist out .cache"
|
|
53
|
+
},
|
|
54
|
+
"devDependencies": {
|
|
55
|
+
"@types/bun": "^1.3.14"
|
|
43
56
|
}
|
|
44
57
|
}
|
package/dist/index.d.ts
DELETED
package/dist/index.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { createRoleChecker } from "./role-checker";
|
package/dist/role-checker.d.ts
DELETED
|
@@ -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;
|
package/dist/role-checker.js
DELETED
|
@@ -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
|
-
}
|