@stratal/framework 0.0.17 → 0.0.19
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/access-control/index.d.mts +180 -0
- package/dist/access-control/index.d.mts.map +1 -0
- package/dist/access-control/index.mjs +71 -0
- package/dist/access-control/index.mjs.map +1 -0
- package/dist/access.service-BjYVtUJw.mjs +145 -0
- package/dist/access.service-BjYVtUJw.mjs.map +1 -0
- package/dist/auth/index.d.mts +134 -13
- package/dist/auth/index.d.mts.map +1 -1
- package/dist/auth/index.mjs +262 -75
- package/dist/auth/index.mjs.map +1 -1
- package/dist/{auth-context-BD2ApWg1.d.mts → auth-context-BXSkiJ56.d.mts} +14 -1
- package/dist/auth-context-BXSkiJ56.d.mts.map +1 -0
- package/dist/{auth-context-CV3Ko1ew.mjs → auth-context-BberoPal.mjs} +25 -4
- package/dist/auth-context-BberoPal.mjs.map +1 -0
- package/dist/context/index.d.mts +1 -1
- package/dist/context/index.mjs +2 -2
- package/dist/database/index.d.mts +3 -3
- package/dist/database/index.mjs +49 -43
- package/dist/database/index.mjs.map +1 -1
- package/dist/{decorate-RSane8dy.mjs → decorate-CdfCRvAc.mjs} +1 -1
- package/dist/{decorateMetadata-CETItPez.mjs → decorateMetadata-CqtSx3_1.mjs} +1 -1
- package/dist/decorateParam-Dc5DGEpb.mjs +18 -0
- package/dist/decorateParam-Dc5DGEpb.mjs.map +1 -0
- package/dist/{errors-C_KIIU1v.mjs → errors-B1vVXc1T.mjs} +1 -1
- package/dist/{errors-C_KIIU1v.mjs.map → errors-B1vVXc1T.mjs.map} +1 -1
- package/dist/factory/index.d.mts +1 -1
- package/dist/guards/index.d.mts +7 -6
- package/dist/guards/index.d.mts.map +1 -1
- package/dist/guards/index.mjs +39 -30
- package/dist/guards/index.mjs.map +1 -1
- package/dist/{index-eukGTmI8.d.mts → index-CpFBG0Ws.d.mts} +26 -45
- package/dist/index-CpFBG0Ws.d.mts.map +1 -0
- package/dist/index.d.mts +2 -2
- package/dist/insufficient-permissions.error-CRnOHYvq.mjs +23 -0
- package/dist/insufficient-permissions.error-CRnOHYvq.mjs.map +1 -0
- package/dist/types-BLyu9dAd.d.mts +11 -0
- package/dist/types-BLyu9dAd.d.mts.map +1 -0
- package/dist/types-BZlcRR2M.d.mts +92 -0
- package/dist/types-BZlcRR2M.d.mts.map +1 -0
- package/package.json +25 -25
- package/dist/auth-context-BD2ApWg1.d.mts.map +0 -1
- package/dist/auth-context-CV3Ko1ew.mjs.map +0 -1
- package/dist/decorateParam-CcTvpNsw.mjs +0 -8
- package/dist/index-eukGTmI8.d.mts.map +0 -1
- package/dist/rbac/index.d.mts +0 -206
- package/dist/rbac/index.d.mts.map +0 -1
- package/dist/rbac/index.mjs +0 -346
- package/dist/rbac/index.mjs.map +0 -1
- package/dist/tokens-Di1ofovy.mjs +0 -32
- package/dist/tokens-Di1ofovy.mjs.map +0 -1
- package/dist/types-Gjk0d2qB.d.mts +0 -47
- package/dist/types-Gjk0d2qB.d.mts.map +0 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@stratal/framework",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.19",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Temitayo Fadojutimi",
|
|
@@ -26,6 +26,10 @@
|
|
|
26
26
|
"types": "./dist/index.d.mts",
|
|
27
27
|
"import": "./dist/index.mjs"
|
|
28
28
|
},
|
|
29
|
+
"./access-control": {
|
|
30
|
+
"types": "./dist/access-control/index.d.mts",
|
|
31
|
+
"import": "./dist/access-control/index.mjs"
|
|
32
|
+
},
|
|
29
33
|
"./auth": {
|
|
30
34
|
"types": "./dist/auth/index.d.mts",
|
|
31
35
|
"import": "./dist/auth/index.mjs"
|
|
@@ -46,10 +50,6 @@
|
|
|
46
50
|
"types": "./dist/guards/index.d.mts",
|
|
47
51
|
"import": "./dist/guards/index.mjs"
|
|
48
52
|
},
|
|
49
|
-
"./rbac": {
|
|
50
|
-
"types": "./dist/rbac/index.d.mts",
|
|
51
|
-
"import": "./dist/rbac/index.mjs"
|
|
52
|
-
},
|
|
53
53
|
"./package.json": "./package.json"
|
|
54
54
|
},
|
|
55
55
|
"scripts": {
|
|
@@ -63,40 +63,40 @@
|
|
|
63
63
|
"test:coverage": "vitest run --coverage",
|
|
64
64
|
"test:db": "docker compose -f test/docker-compose.yml up -d",
|
|
65
65
|
"typecheck": "yarn tsc --noEmit",
|
|
66
|
-
"lint": "npx
|
|
67
|
-
"lint:fix": "npx
|
|
66
|
+
"lint": "npx oxlint .",
|
|
67
|
+
"lint:fix": "npx oxlint --fix ."
|
|
68
68
|
},
|
|
69
69
|
"dependencies": {
|
|
70
|
-
"@better-auth/core": "^1.
|
|
71
|
-
"@faker-js/faker": "^10.
|
|
72
|
-
"@zenstackhq/cli": "^3.
|
|
73
|
-
"@zenstackhq/orm": "^3.
|
|
74
|
-
"better-auth": "^1.
|
|
75
|
-
"casbin": "^5.49.0",
|
|
70
|
+
"@better-auth/core": "^1.6.9",
|
|
71
|
+
"@faker-js/faker": "^10.4.0",
|
|
72
|
+
"@zenstackhq/cli": "^3.6.3",
|
|
73
|
+
"@zenstackhq/orm": "^3.6.3",
|
|
74
|
+
"better-auth": "^1.6.9",
|
|
76
75
|
"postgres-array": "^3.0.4"
|
|
77
76
|
},
|
|
78
77
|
"peerDependencies": {
|
|
79
78
|
"pg": "^8.0.0",
|
|
80
79
|
"reflect-metadata": "^0.2.2",
|
|
81
|
-
"stratal": "^0.0.
|
|
80
|
+
"stratal": "^0.0.19"
|
|
82
81
|
},
|
|
83
82
|
"devDependencies": {
|
|
84
|
-
"@cloudflare/vitest-pool-workers": "^0.
|
|
85
|
-
"@cloudflare/workers-types": "4.
|
|
83
|
+
"@cloudflare/vitest-pool-workers": "^0.15.0",
|
|
84
|
+
"@cloudflare/workers-types": "4.20260426.1",
|
|
86
85
|
"@stratal/testing": "workspace:^",
|
|
87
|
-
"@types/node": "^25.
|
|
86
|
+
"@types/node": "^25.6.0",
|
|
88
87
|
"@types/pg": "^8.20.0",
|
|
89
|
-
"@vitest/coverage-istanbul": "~4.1.
|
|
90
|
-
"@vitest/runner": "~4.1.
|
|
91
|
-
"@vitest/snapshot": "~4.1.
|
|
92
|
-
"@zenstackhq/better-auth": "^3.
|
|
88
|
+
"@vitest/coverage-istanbul": "~4.1.5",
|
|
89
|
+
"@vitest/runner": "~4.1.5",
|
|
90
|
+
"@vitest/snapshot": "~4.1.5",
|
|
91
|
+
"@zenstackhq/better-auth": "^3.6.3",
|
|
93
92
|
"dotenv-cli": "^11.0.0",
|
|
93
|
+
"kysely": "0.28.16",
|
|
94
94
|
"pg": "^8.20.0",
|
|
95
95
|
"reflect-metadata": "^0.2.2",
|
|
96
96
|
"stratal": "workspace:*",
|
|
97
|
-
"tsdown": "^0.21.
|
|
98
|
-
"typescript": "^
|
|
99
|
-
"vitest": "~4.1.
|
|
100
|
-
"wrangler": "^4.
|
|
97
|
+
"tsdown": "^0.21.10",
|
|
98
|
+
"typescript": "^6.0.3",
|
|
99
|
+
"vitest": "~4.1.5",
|
|
100
|
+
"wrangler": "^4.85.0"
|
|
101
101
|
}
|
|
102
102
|
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"auth-context-BD2ApWg1.d.mts","names":[],"sources":["../src/context/auth-context.ts"],"mappings":";UAMiB,QAAA;EACf,MAAA;AAAA;AAAA,cAIW,WAAA;EAAA,UACD,MAAA;EALJ;AAGR;;;EAQE,cAAA,CAAe,IAAA,EAAM,QAAA;EANX;;;;EAcV,SAAA,CAAA;EAQA;;;;EAAA,aAAA,CAAA;EA+BgB;;;EApBhB,cAAA,CAAA,GAAkB,QAAA;;;;EAYlB,eAAA,CAAA;;;;;EAQA,gBAAA,CAAA;AAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"auth-context-CV3Ko1ew.mjs","names":[],"sources":["../src/context/auth-context.ts"],"sourcesContent":["import { Transient, DI_TOKENS } from 'stratal/di'\nimport {\n ContextNotInitializedError,\n UserNotAuthenticatedError\n} from './errors'\n\nexport interface AuthInfo {\n userId?: string\n}\n\n@Transient(DI_TOKENS.AuthContext)\nexport class AuthContext {\n protected userId?: string\n\n /**\n * Set authentication context.\n * This should be called once per request with user information.\n */\n setAuthContext(info: AuthInfo): void {\n this.userId = info.userId\n }\n\n /**\n * Get user ID if available.\n * Returns undefined if no user is authenticated.\n */\n getUserId(): string | undefined {\n return this.userId\n }\n\n /**\n * Get user ID or throw if not authenticated.\n * Use this when authentication is required.\n */\n requireUserId(): string {\n const userId = this.getUserId()\n if (!userId) {\n throw new UserNotAuthenticatedError()\n }\n return userId\n }\n\n /**\n * Get full authentication context or throw if not initialized.\n */\n getAuthContext(): AuthInfo {\n if (!this.userId) {\n throw new ContextNotInitializedError('Authentication')\n }\n return {\n userId: this.userId\n }\n }\n\n /**\n * Check if user is authenticated.\n */\n isAuthenticated(): boolean {\n return !!this.userId\n }\n\n /**\n * Clear authentication context.\n * Useful for testing or cleanup.\n */\n clearAuthContext(): void {\n this.userId = undefined\n }\n}\n"],"mappings":";;;;AAWO,IAAA,cAAA,MAAM,YAAY;CACvB;;;;;CAMA,eAAe,MAAsB;AACnC,OAAK,SAAS,KAAK;;;;;;CAOrB,YAAgC;AAC9B,SAAO,KAAK;;;;;;CAOd,gBAAwB;EACtB,MAAM,SAAS,KAAK,WAAW;AAC/B,MAAI,CAAC,OACH,OAAM,IAAI,2BAA2B;AAEvC,SAAO;;;;;CAMT,iBAA2B;AACzB,MAAI,CAAC,KAAK,OACR,OAAM,IAAI,2BAA2B,iBAAiB;AAExD,SAAO,EACL,QAAQ,KAAK,QACd;;;;;CAMH,kBAA2B;AACzB,SAAO,CAAC,CAAC,KAAK;;;;;;CAOhB,mBAAyB;AACvB,OAAK,SAAS,KAAA;;;0BAxDjB,UAAU,UAAU,YAAY,CAAA,EAAA,YAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index-eukGTmI8.d.mts","names":[],"sources":["../src/database/database.module.ts","../src/database/database.service.ts","../src/database/database.tokens.ts","../src/database/decorators/inject-db.decorator.ts","../src/database/errors/database-error.ts","../src/database/errors/database-config.error.ts","../src/database/errors/foreign-key-constraint.error.ts","../src/database/errors/invalid-error-code-range.error.ts","../src/database/errors/record-not-found.error.ts","../src/database/errors/unique-constraint.error.ts","../src/database/errors/from-zenstack-error.ts","../src/database/event-types.ts","../src/database/i18n/en.ts","../src/database/plugins/error-handler.plugin.ts","../src/database/plugins/event-emitter.plugin.ts","../src/database/plugins/schema-switcher.plugin.ts","../src/database/commands/zenstack.command.ts","../src/database/commands/db-generate.command.ts","../src/database/commands/db-pull.command.ts","../src/database/commands/db-push.command.ts","../src/database/commands/migrate-deploy.command.ts","../src/database/commands/migrate-dev.command.ts","../src/database/commands/migrate-reset.command.ts","../src/database/commands/migrate-status.command.ts"],"mappings":"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"}
|
package/dist/rbac/index.d.mts
DELETED
|
@@ -1,206 +0,0 @@
|
|
|
1
|
-
import { t as AuthContext } from "../auth-context-BD2ApWg1.mjs";
|
|
2
|
-
import { AsyncModuleOptions, DynamicModule } from "stratal/module";
|
|
3
|
-
import { ApplicationError } from "stratal/errors";
|
|
4
|
-
import { Adapter, Enforcer, Model } from "casbin";
|
|
5
|
-
|
|
6
|
-
//#region src/rbac/constants.d.ts
|
|
7
|
-
/**
|
|
8
|
-
* RBAC Constants
|
|
9
|
-
*/
|
|
10
|
-
declare const RBAC_CONTEXT_KEYS: {
|
|
11
|
-
/** Key for storing required authorization scopes (permissions) in context */readonly AUTH_SCOPES: symbol;
|
|
12
|
-
};
|
|
13
|
-
//#endregion
|
|
14
|
-
//#region src/rbac/errors/insufficient-permissions.error.d.ts
|
|
15
|
-
/**
|
|
16
|
-
* InsufficientPermissionsError
|
|
17
|
-
*
|
|
18
|
-
* Thrown when a user attempts to perform an action without the required permissions.
|
|
19
|
-
* This error is used by the auth guard after authorization check fails.
|
|
20
|
-
*
|
|
21
|
-
* HTTP Status: 403 Forbidden
|
|
22
|
-
* Error Code: 3102 (AUTHZ.INSUFFICIENT_PERMISSIONS)
|
|
23
|
-
*/
|
|
24
|
-
declare class InsufficientPermissionsError extends ApplicationError {
|
|
25
|
-
constructor(requiredScopes: string[], userId?: string);
|
|
26
|
-
}
|
|
27
|
-
//#endregion
|
|
28
|
-
//#region src/rbac/adapters/custom-zenstack-adapter.d.ts
|
|
29
|
-
/**
|
|
30
|
-
* Minimal interface for the database client used by the adapter.
|
|
31
|
-
* The actual DatabaseService extends ZenStackClient which provides these methods
|
|
32
|
-
* when the schema includes a `casbinRule` model.
|
|
33
|
-
*/
|
|
34
|
-
interface CasbinDbClient {
|
|
35
|
-
casbinRule: {
|
|
36
|
-
findMany(args?: {
|
|
37
|
-
where?: Record<string, unknown>;
|
|
38
|
-
}): Promise<unknown[]>;
|
|
39
|
-
create(args: {
|
|
40
|
-
data: CasbinRuleCreateInput;
|
|
41
|
-
}): Promise<unknown>;
|
|
42
|
-
createMany(args: {
|
|
43
|
-
data: CasbinRuleCreateInput[];
|
|
44
|
-
}): Promise<unknown>;
|
|
45
|
-
deleteMany(args: {
|
|
46
|
-
where: CasbinRuleCreateInput;
|
|
47
|
-
}): Promise<{
|
|
48
|
-
count: number;
|
|
49
|
-
}>;
|
|
50
|
-
};
|
|
51
|
-
$executeRawUnsafe(query: string, ...values: unknown[]): Promise<unknown>;
|
|
52
|
-
}
|
|
53
|
-
interface CasbinRuleCreateInput {
|
|
54
|
-
ptype: string;
|
|
55
|
-
v0?: string | null;
|
|
56
|
-
v1?: string | null;
|
|
57
|
-
v2?: string | null;
|
|
58
|
-
v3?: string | null;
|
|
59
|
-
v4?: string | null;
|
|
60
|
-
v5?: string | null;
|
|
61
|
-
}
|
|
62
|
-
/**
|
|
63
|
-
* Custom ZenStack adapter for Casbin that works with Cloudflare Workers.
|
|
64
|
-
*
|
|
65
|
-
* Based on the original casbin-prisma-adapter but modified to:
|
|
66
|
-
* - Work with ZenStack v3 ORM clients
|
|
67
|
-
* - Avoid bundling errors in Cloudflare Workers
|
|
68
|
-
* - Accept pre-connected ZenStack clients (request-scoped)
|
|
69
|
-
*/
|
|
70
|
-
declare class CustomZenStackAdapter implements Adapter {
|
|
71
|
-
#private;
|
|
72
|
-
filtered: boolean;
|
|
73
|
-
isFiltered(): boolean;
|
|
74
|
-
enableFiltered(enabled: boolean): void;
|
|
75
|
-
constructor(db: CasbinDbClient);
|
|
76
|
-
loadPolicy(model: Model): Promise<void>;
|
|
77
|
-
loadFilteredPolicy(model: Model, filter: Record<string, string[][]>): Promise<void>;
|
|
78
|
-
savePolicy(model: Model): Promise<boolean>;
|
|
79
|
-
addPolicy(_sec: string, ptype: string, rule: string[]): Promise<void>;
|
|
80
|
-
addPolicies(_sec: string, ptype: string, rules: string[][]): Promise<void>;
|
|
81
|
-
removePolicy(_sec: string, ptype: string, rule: string[]): Promise<void>;
|
|
82
|
-
removePolicies(_sec: string, ptype: string, rules: string[][]): Promise<void>;
|
|
83
|
-
removeFilteredPolicy(_sec: string, ptype: string, fieldIndex: number, ...fieldValues: string[]): Promise<void>;
|
|
84
|
-
close(): Promise<void>;
|
|
85
|
-
static newAdapter(db: CasbinDbClient): CustomZenStackAdapter;
|
|
86
|
-
}
|
|
87
|
-
//#endregion
|
|
88
|
-
//#region src/rbac/types.d.ts
|
|
89
|
-
/**
|
|
90
|
-
* Configuration options for the RBAC module
|
|
91
|
-
*/
|
|
92
|
-
interface RbacModuleOptions {
|
|
93
|
-
/** Casbin PERM model string */
|
|
94
|
-
model: string;
|
|
95
|
-
/** Default policies: [role, resource, action][] */
|
|
96
|
-
defaultPolicies?: readonly (readonly [string, string, string])[];
|
|
97
|
-
/** Role hierarchy: [childRole, parentRole][] */
|
|
98
|
-
roleHierarchy?: readonly (readonly [string, string])[];
|
|
99
|
-
}
|
|
100
|
-
//#endregion
|
|
101
|
-
//#region src/rbac/services/casbin-enforcer.service.d.ts
|
|
102
|
-
/**
|
|
103
|
-
* CasbinEnforcerService
|
|
104
|
-
*
|
|
105
|
-
* Manages the Casbin enforcer instance for authorization.
|
|
106
|
-
* Model, default policies, and role hierarchy are provided via DI options.
|
|
107
|
-
*/
|
|
108
|
-
declare class CasbinEnforcerService {
|
|
109
|
-
protected readonly db: CasbinDbClient;
|
|
110
|
-
protected readonly options: RbacModuleOptions;
|
|
111
|
-
protected enforcer: Enforcer | null;
|
|
112
|
-
constructor(db: CasbinDbClient, options: RbacModuleOptions);
|
|
113
|
-
/**
|
|
114
|
-
* Get or create the enforcer instance
|
|
115
|
-
*/
|
|
116
|
-
getEnforcer(): Promise<Enforcer>;
|
|
117
|
-
/**
|
|
118
|
-
* Create a new enforcer instance.
|
|
119
|
-
* Can be overridden by subclasses to customize enforcer creation.
|
|
120
|
-
*/
|
|
121
|
-
protected createEnforcer(): Promise<Enforcer>;
|
|
122
|
-
/**
|
|
123
|
-
* Seed default policies into database
|
|
124
|
-
*/
|
|
125
|
-
seedPolicies(): Promise<void>;
|
|
126
|
-
/**
|
|
127
|
-
* Clear cached enforcer instance
|
|
128
|
-
*/
|
|
129
|
-
clearCache(): void;
|
|
130
|
-
/**
|
|
131
|
-
* Seed role hierarchy into database
|
|
132
|
-
*/
|
|
133
|
-
seedRoleHierarchy(): Promise<void>;
|
|
134
|
-
}
|
|
135
|
-
//#endregion
|
|
136
|
-
//#region src/rbac/services/casbin.service.d.ts
|
|
137
|
-
/**
|
|
138
|
-
* CasbinService
|
|
139
|
-
*
|
|
140
|
-
* Request-scoped service that provides the full Casbin RBAC API.
|
|
141
|
-
* Uses AuthContext to get the current user.
|
|
142
|
-
*/
|
|
143
|
-
declare class CasbinService {
|
|
144
|
-
protected readonly context: AuthContext;
|
|
145
|
-
protected readonly enforcerService: CasbinEnforcerService;
|
|
146
|
-
constructor(context: AuthContext, enforcerService: CasbinEnforcerService);
|
|
147
|
-
protected getEnforcer(): Promise<Enforcer>;
|
|
148
|
-
addRoleForUser(userId: string, role: string): Promise<boolean>;
|
|
149
|
-
deleteRoleForUser(userId: string, role: string): Promise<boolean>;
|
|
150
|
-
deleteRolesForUser(userId: string): Promise<boolean>;
|
|
151
|
-
getRolesForUser(userId: string): Promise<string[]>;
|
|
152
|
-
getImplicitRolesForUser(userId: string): Promise<string[]>;
|
|
153
|
-
getUsersForRole(role: string): Promise<string[]>;
|
|
154
|
-
getImplicitUsersForRole(role: string): Promise<string[]>;
|
|
155
|
-
hasRoleForUser(userId: string, role: string): Promise<boolean>;
|
|
156
|
-
addRoleInheritance(childRole: string, parentRole: string): Promise<boolean>;
|
|
157
|
-
deleteRoleInheritance(childRole: string, parentRole: string): Promise<boolean>;
|
|
158
|
-
deleteUser(userId: string): Promise<boolean>;
|
|
159
|
-
deleteRole(role: string): Promise<boolean>;
|
|
160
|
-
getCurrentUserRoles(): Promise<string[]>;
|
|
161
|
-
currentUserHasRole(role: string): Promise<boolean>;
|
|
162
|
-
setRolesForUser(userId: string, roles: string[]): Promise<void>;
|
|
163
|
-
hasPermission(userId: string, scope: string, action: string): Promise<boolean>;
|
|
164
|
-
currentUserHasPermission(scope: string, action: string): Promise<boolean>;
|
|
165
|
-
hasAnyPermission(userId: string, scopes: string[], action: string): Promise<boolean>;
|
|
166
|
-
currentUserHasAnyPermission(scopes: string[], action: string): Promise<boolean>;
|
|
167
|
-
getPermissionsForUserAsCasbinJs(userId: string): Promise<Record<string, string[]>>;
|
|
168
|
-
getCurrentUserPermissionsAsCasbinJs(): Promise<Record<string, string[]>>;
|
|
169
|
-
}
|
|
170
|
-
//#endregion
|
|
171
|
-
//#region src/rbac/rbac.module.d.ts
|
|
172
|
-
/**
|
|
173
|
-
* RBAC Module
|
|
174
|
-
*
|
|
175
|
-
* Provides role-based access control using Casbin.
|
|
176
|
-
* Fully configurable — no hardcoded roles, policies, or model.
|
|
177
|
-
*
|
|
178
|
-
* @example
|
|
179
|
-
* ```typescript
|
|
180
|
-
* @Module({
|
|
181
|
-
* imports: [
|
|
182
|
-
* RbacModule.forRoot({
|
|
183
|
-
* model: MY_RBAC_MODEL,
|
|
184
|
-
* defaultPolicies: [['admin', 'users:*', '.*']],
|
|
185
|
-
* roleHierarchy: [['super_admin', 'admin']],
|
|
186
|
-
* })
|
|
187
|
-
* ]
|
|
188
|
-
* })
|
|
189
|
-
* ```
|
|
190
|
-
*/
|
|
191
|
-
declare class RbacModule {
|
|
192
|
-
static forRoot(options: RbacModuleOptions): DynamicModule;
|
|
193
|
-
static forRootAsync(options: AsyncModuleOptions<RbacModuleOptions>): DynamicModule;
|
|
194
|
-
}
|
|
195
|
-
//#endregion
|
|
196
|
-
//#region src/rbac/tokens.d.ts
|
|
197
|
-
/**
|
|
198
|
-
* RBAC DI Tokens
|
|
199
|
-
*/
|
|
200
|
-
declare const RBAC_TOKENS: {
|
|
201
|
-
/** Request-scoped Casbin service with auto context resolution */readonly CasbinService: symbol; /** RBAC module options (model, policies, hierarchy) */
|
|
202
|
-
readonly Options: symbol;
|
|
203
|
-
};
|
|
204
|
-
//#endregion
|
|
205
|
-
export { CasbinEnforcerService, CasbinService, CustomZenStackAdapter, InsufficientPermissionsError, RBAC_CONTEXT_KEYS, RBAC_TOKENS, RbacModule, type RbacModuleOptions };
|
|
206
|
-
//# sourceMappingURL=index.d.mts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.mts","names":[],"sources":["../../src/rbac/constants.ts","../../src/rbac/errors/insufficient-permissions.error.ts","../../src/rbac/adapters/custom-zenstack-adapter.ts","../../src/rbac/types.ts","../../src/rbac/services/casbin-enforcer.service.ts","../../src/rbac/services/casbin.service.ts","../../src/rbac/rbac.module.ts","../../src/rbac/tokens.ts"],"mappings":"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"}
|