@dudousxd/nestjs-authz-mikro-orm 0.3.0 → 0.4.0
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 +19 -0
- package/README.md +8 -3
- package/dist/authz-rbac.module.d.ts +1 -1
- package/dist/authz-rbac.module.d.ts.map +1 -1
- package/dist/authz-rbac.module.js.map +1 -1
- package/dist/entities.d.ts +29 -11
- package/dist/entities.d.ts.map +1 -1
- package/dist/entities.js +84 -103
- package/dist/entities.js.map +1 -1
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/mikro-orm-authz.store.d.ts +2 -9
- package/dist/mikro-orm-authz.store.d.ts.map +1 -1
- package/dist/mikro-orm-authz.store.js +1 -7
- package/dist/mikro-orm-authz.store.js.map +1 -1
- package/dist/schema.d.ts.map +1 -1
- package/dist/schema.js +8 -1
- package/dist/schema.js.map +1 -1
- package/dist/scope.d.ts.map +1 -1
- package/dist/scope.js +1 -13
- package/dist/scope.js.map +1 -1
- package/dist/types.d.ts +0 -10
- package/dist/types.d.ts.map +1 -1
- package/package.json +4 -4
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,24 @@
|
|
|
1
1
|
# @dudousxd/nestjs-authz-mikro-orm
|
|
2
2
|
|
|
3
|
+
## 0.4.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- [`45719bb`](https://github.com/DavideCarvalho/nestjs-authz/commit/45719bb958d7abceb8b0edad4c0c3d97f99590cb) - Support MikroORM 7 (peer `@mikro-orm/core` / `@mikro-orm/nestjs` widened to `^6 || ^7`).
|
|
8
|
+
|
|
9
|
+
MikroORM 7 relocated the entity decorators (`@Entity/@Property/@PrimaryKey/@Index`) out of `@mikro-orm/core` into a separate `@mikro-orm/decorators` package, and removed `MikroORM.getSchemaGenerator()`. To run on both v6 and v7 from a single codebase with no extra peer:
|
|
10
|
+
|
|
11
|
+
- The four authz entities are now defined with `EntitySchema` (the one definition style that lives in `@mikro-orm/core` on both majors) instead of decorators. The entity classes (`RoleEntity` … `UserRoleEntity`) are unchanged as the store's reference; their schemas are also exported (`RoleEntitySchema` … `UserRoleEntitySchema`) for BYO-table-name re-declaration.
|
|
12
|
+
- `ensureAuthzSchema` / `authzSchemaSql` now detect a `MikroORM` instance via its `em` property (present on both v6 and v7) instead of the v7-removed `getSchemaGenerator()`, and read the schema generator off the EM-bound platform.
|
|
13
|
+
|
|
14
|
+
Verified end-to-end against `@mikro-orm/core@7` + `@mikro-orm/sqlite@7` (and the existing v6 suite still passes).
|
|
15
|
+
|
|
16
|
+
## 0.3.1
|
|
17
|
+
|
|
18
|
+
### Patch Changes
|
|
19
|
+
|
|
20
|
+
- [`61b6b92`](https://github.com/DavideCarvalho/nestjs-authz/commit/61b6b9241438b8f30811fcd17b0c0c98f08af3bf) - Internal refactors (behavior-preserving): single-source the ORM store contract (`UserRef`/`UserRefInput`/`UserAuthz`/`normalizeUserRef`) via a new `@dudousxd/nestjs-authz/store-kit` subpath that the typeorm/prisma/mikro-orm adapters re-export under their public names, so the definition can't drift across them. Also single-source the grant preamble and the SQL identifier guard in the core store path.
|
|
21
|
+
|
|
3
22
|
## 0.3.0
|
|
4
23
|
|
|
5
24
|
### Minor Changes
|
package/README.md
CHANGED
|
@@ -7,6 +7,11 @@ roles, permissions, and a Gate seam, with **zero connection ownership** (your ap
|
|
|
7
7
|
This is the MikroORM sibling of `@dudousxd/nestjs-authz-typeorm`: identical store surface
|
|
8
8
|
and `AuthzRbacModule`, backed by MikroORM entities.
|
|
9
9
|
|
|
10
|
+
Works with **MikroORM 6 and 7** (peer `@mikro-orm/core` `^6 || ^7`). The entities are
|
|
11
|
+
defined with `EntitySchema` — the one definition style that lives entirely in
|
|
12
|
+
`@mikro-orm/core` across both majors (v7 moved the `@Entity/@Property/...` decorators into a
|
|
13
|
+
separate `@mikro-orm/decorators` package), so no extra peer is required.
|
|
14
|
+
|
|
10
15
|
## Install
|
|
11
16
|
|
|
12
17
|
```bash
|
|
@@ -32,9 +37,9 @@ await MikroORM.init({ entities: [...AUTHZ_ENTITIES /* , your entities */] });
|
|
|
32
37
|
```
|
|
33
38
|
|
|
34
39
|
> BYO table names: MikroORM resolves table names from entity metadata at discovery time,
|
|
35
|
-
> so override them by re-
|
|
36
|
-
> the
|
|
37
|
-
> literal name.
|
|
40
|
+
> so override them by re-declaring these entities with your own `EntitySchema({ tableName })`
|
|
41
|
+
> (the `RoleEntitySchema` … `UserRoleEntitySchema` exports are the defaults); the store +
|
|
42
|
+
> schema helpers operate purely through the `EntityManager` and never assume a literal name.
|
|
38
43
|
|
|
39
44
|
## Usage
|
|
40
45
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
+
import type { UserRef } from '@dudousxd/nestjs-authz/store-kit';
|
|
1
2
|
import { type DynamicModule } from '@nestjs/common';
|
|
2
3
|
import type { MikroOrmAuthzStore } from './mikro-orm-authz.store.js';
|
|
3
|
-
import type { UserRef } from './types.js';
|
|
4
4
|
/** Injection token holding the {@link MikroOrmAuthzStore} the RBAC module manages. */
|
|
5
5
|
export declare const AUTHZ_RBAC_STORE: unique symbol;
|
|
6
6
|
/** Injection token holding the resolved {@link AuthzRbacModuleOptions}. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"authz-rbac.module.d.ts","sourceRoot":"","sources":["../src/authz-rbac.module.ts"],"names":[],"mappings":"AAMA,OAAO,
|
|
1
|
+
{"version":3,"file":"authz-rbac.module.d.ts","sourceRoot":"","sources":["../src/authz-rbac.module.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kCAAkC,CAAC;AAChE,OAAO,EACL,KAAK,aAAa,EAQnB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAErE,sFAAsF;AACtF,eAAO,MAAM,gBAAgB,eAAuD,CAAC;AACrF,2EAA2E;AAC3E,eAAO,MAAM,kBAAkB,eAAyD,CAAC;AAEzF;;;GAGG;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,IAAI,EAAE,OAAO,KAAK,OAAO,GAAG,SAAS,CAAC;AAEnE,MAAM,WAAW,sBAAsB;IACrC,2EAA2E;IAC3E,KAAK,EAAE,kBAAkB,CAAC;IAC1B;;;OAGG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B;;;OAGG;IACH,WAAW,CAAC,EAAE,aAAa,CAAC;CAC7B;AAED,MAAM,WAAW,2BAA2B;IAC1C,OAAO,CAAC,EAAE,OAAO,EAAE,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC;IACnB,UAAU,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC,sBAAsB,CAAC,GAAG,sBAAsB,CAAC;CAC9F;AAED,qFAAqF;AACrF,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,GAAG,SAAS,CAOvE;AAuDD;;;;;;GAMG;AACH,qBACa,eAAe;IAC1B,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,sBAAsB,GAAG,aAAa;IAa9D,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,2BAA2B,GAAG,aAAa;IAsBxE,OAAO,CAAC,MAAM,CAAC,eAAe;CAS/B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"authz-rbac.module.js","sourceRoot":"","sources":["../src/authz-rbac.module.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,OAAO,EACL,mBAAmB,EAEnB,aAAa,GAEd,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"authz-rbac.module.js","sourceRoot":"","sources":["../src/authz-rbac.module.ts"],"names":[],"mappings":"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"}
|
package/dist/entities.d.ts
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
|
+
import { EntitySchema } from '@mikro-orm/core';
|
|
1
2
|
/**
|
|
2
|
-
* Default table names — the
|
|
3
|
-
* resolves the physical table from the entity metadata (not at
|
|
4
|
-
* wants different names re-
|
|
5
|
-
* purely through the EntityManager and never assume a literal name.
|
|
3
|
+
* Default table names — the {@link EntitySchema} definitions below carry these as their
|
|
4
|
+
* `tableName`. MikroORM resolves the physical table from the entity metadata (not at
|
|
5
|
+
* runtime), so an app that wants different names re-declares these schemas; the store +
|
|
6
|
+
* schema helpers operate purely through the EntityManager and never assume a literal name.
|
|
6
7
|
*/
|
|
7
8
|
export declare const DEFAULT_TABLE_NAMES: {
|
|
8
9
|
readonly roles: "authz_roles";
|
|
@@ -11,24 +12,34 @@ export declare const DEFAULT_TABLE_NAMES: {
|
|
|
11
12
|
readonly userRole: "authz_user_role";
|
|
12
13
|
};
|
|
13
14
|
/**
|
|
14
|
-
*
|
|
15
|
-
*
|
|
15
|
+
* The entities are described with {@link EntitySchema} (the schema-first definition style)
|
|
16
|
+
* rather than property decorators. This is the ONE definition surface that lives entirely
|
|
17
|
+
* in `@mikro-orm/core` and is identical across MikroORM 6 and 7 — v7 relocated the
|
|
18
|
+
* `@Entity/@Property/...` decorators to a separate `@mikro-orm/decorators` package, so a
|
|
19
|
+
* decorator-based definition would force an extra peer and break on v6. The plain classes
|
|
20
|
+
* below stay the public reference the store keys on (`em.find(RoleEntity, ...)`,
|
|
21
|
+
* `meta.get(RoleEntity.name)`); the schemas attach metadata to them.
|
|
16
22
|
*
|
|
17
|
-
* Every column declares an explicit `type
|
|
18
|
-
*
|
|
19
|
-
*
|
|
23
|
+
* Every column declares an explicit `type`, so discovery works even when the consuming app
|
|
24
|
+
* compiles with SWC/esbuild/Vite (which don't emit decorator metadata — irrelevant here
|
|
25
|
+
* since we don't rely on reflection, but kept explicit for clarity and parity).
|
|
20
26
|
*
|
|
21
27
|
* Forward-compat rule: any column added to these entities AFTER v1 MUST be nullable or
|
|
22
28
|
* carry a default — `ensureAuthzSchema` only ever runs the non-destructive `safe` diff
|
|
23
29
|
* (create table + add-missing-column), and `ADD COLUMN NOT NULL` without a default fails
|
|
24
30
|
* on a populated table.
|
|
25
31
|
*/
|
|
32
|
+
/**
|
|
33
|
+
* A named role (e.g. `editor`). Permissions are attached via {@link RolePermissionEntity};
|
|
34
|
+
* users are attached via {@link UserRoleEntity}.
|
|
35
|
+
*/
|
|
26
36
|
export declare class RoleEntity {
|
|
27
37
|
id: string;
|
|
28
38
|
name: string;
|
|
29
39
|
guard?: string | null;
|
|
30
40
|
createdAt: Date;
|
|
31
41
|
}
|
|
42
|
+
export declare const RoleEntitySchema: EntitySchema<RoleEntity, never>;
|
|
32
43
|
/** A named permission (e.g. `posts.publish`). Granted to roles via {@link RolePermissionEntity}. */
|
|
33
44
|
export declare class PermissionEntity {
|
|
34
45
|
id: string;
|
|
@@ -36,11 +47,13 @@ export declare class PermissionEntity {
|
|
|
36
47
|
guard?: string | null;
|
|
37
48
|
createdAt: Date;
|
|
38
49
|
}
|
|
50
|
+
export declare const PermissionEntitySchema: EntitySchema<PermissionEntity, never>;
|
|
39
51
|
/** Pivot: role ↔ permission. Composite PK `(roleId, permissionId)`. */
|
|
40
52
|
export declare class RolePermissionEntity {
|
|
41
53
|
roleId: string;
|
|
42
54
|
permissionId: string;
|
|
43
55
|
}
|
|
56
|
+
export declare const RolePermissionEntitySchema: EntitySchema<RolePermissionEntity, never>;
|
|
44
57
|
/**
|
|
45
58
|
* Pivot: user ↔ role. References the user BY ID ONLY — this package NEVER defines or
|
|
46
59
|
* owns a users table. `userType` lets the same table key polymorphic principals
|
|
@@ -51,6 +64,11 @@ export declare class UserRoleEntity {
|
|
|
51
64
|
userId: string;
|
|
52
65
|
roleId: string;
|
|
53
66
|
}
|
|
54
|
-
|
|
55
|
-
|
|
67
|
+
export declare const UserRoleEntitySchema: EntitySchema<UserRoleEntity, never>;
|
|
68
|
+
/**
|
|
69
|
+
* All entity SCHEMAS, in dependency order — pass to `entities: [...]` registration. These
|
|
70
|
+
* are the {@link EntitySchema} objects MikroORM discovers; the store keys on the plain
|
|
71
|
+
* classes ({@link RoleEntity} etc.), which the schemas are bound to via `class`.
|
|
72
|
+
*/
|
|
73
|
+
export declare const AUTHZ_ENTITIES: readonly [EntitySchema<RoleEntity, never>, EntitySchema<PermissionEntity, never>, EntitySchema<RolePermissionEntity, never>, EntitySchema<UserRoleEntity, never>];
|
|
56
74
|
//# sourceMappingURL=entities.d.ts.map
|
package/dist/entities.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entities.d.ts","sourceRoot":"","sources":["../src/entities.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"entities.d.ts","sourceRoot":"","sources":["../src/entities.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB;;;;;CAKtB,CAAC;AAEX;;;;;;;;;;;;;;;;;GAiBG;AAEH;;;GAGG;AACH,qBAAa,UAAU;IACrB,EAAE,EAAG,MAAM,CAAC;IACZ,IAAI,EAAG,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,SAAS,EAAG,IAAI,CAAC;CAClB;AAED,eAAO,MAAM,gBAAgB,iCAc3B,CAAC;AAEH,oGAAoG;AACpG,qBAAa,gBAAgB;IAC3B,EAAE,EAAG,MAAM,CAAC;IACZ,IAAI,EAAG,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,SAAS,EAAG,IAAI,CAAC;CAClB;AAED,eAAO,MAAM,sBAAsB,uCAcjC,CAAC;AAEH,uEAAuE;AACvE,qBAAa,oBAAoB;IAC/B,MAAM,EAAG,MAAM,CAAC;IAChB,YAAY,EAAG,MAAM,CAAC;CACvB;AAED,eAAO,MAAM,0BAA0B,2CAOrC,CAAC;AAEH;;;;GAIG;AACH,qBAAa,cAAc;IACzB,QAAQ,EAAG,MAAM,CAAC;IAClB,MAAM,EAAG,MAAM,CAAC;IAChB,MAAM,EAAG,MAAM,CAAC;CACjB;AAED,eAAO,MAAM,oBAAoB,qCAS/B,CAAC;AAEH;;;;GAIG;AACH,eAAO,MAAM,cAAc,mKAKjB,CAAC"}
|
package/dist/entities.js
CHANGED
|
@@ -1,18 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
-
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
-
};
|
|
7
|
-
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
-
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
-
};
|
|
10
|
-
import { Entity, Index, PrimaryKey, Property } from '@mikro-orm/core';
|
|
1
|
+
import { EntitySchema } from '@mikro-orm/core';
|
|
11
2
|
/**
|
|
12
|
-
* Default table names — the
|
|
13
|
-
* resolves the physical table from the entity metadata (not at
|
|
14
|
-
* wants different names re-
|
|
15
|
-
* purely through the EntityManager and never assume a literal name.
|
|
3
|
+
* Default table names — the {@link EntitySchema} definitions below carry these as their
|
|
4
|
+
* `tableName`. MikroORM resolves the physical table from the entity metadata (not at
|
|
5
|
+
* runtime), so an app that wants different names re-declares these schemas; the store +
|
|
6
|
+
* schema helpers operate purely through the EntityManager and never assume a literal name.
|
|
16
7
|
*/
|
|
17
8
|
export const DEFAULT_TABLE_NAMES = {
|
|
18
9
|
roles: 'authz_roles',
|
|
@@ -21,122 +12,112 @@ export const DEFAULT_TABLE_NAMES = {
|
|
|
21
12
|
userRole: 'authz_user_role',
|
|
22
13
|
};
|
|
23
14
|
/**
|
|
24
|
-
*
|
|
25
|
-
*
|
|
15
|
+
* The entities are described with {@link EntitySchema} (the schema-first definition style)
|
|
16
|
+
* rather than property decorators. This is the ONE definition surface that lives entirely
|
|
17
|
+
* in `@mikro-orm/core` and is identical across MikroORM 6 and 7 — v7 relocated the
|
|
18
|
+
* `@Entity/@Property/...` decorators to a separate `@mikro-orm/decorators` package, so a
|
|
19
|
+
* decorator-based definition would force an extra peer and break on v6. The plain classes
|
|
20
|
+
* below stay the public reference the store keys on (`em.find(RoleEntity, ...)`,
|
|
21
|
+
* `meta.get(RoleEntity.name)`); the schemas attach metadata to them.
|
|
26
22
|
*
|
|
27
|
-
* Every column declares an explicit `type
|
|
28
|
-
*
|
|
29
|
-
*
|
|
23
|
+
* Every column declares an explicit `type`, so discovery works even when the consuming app
|
|
24
|
+
* compiles with SWC/esbuild/Vite (which don't emit decorator metadata — irrelevant here
|
|
25
|
+
* since we don't rely on reflection, but kept explicit for clarity and parity).
|
|
30
26
|
*
|
|
31
27
|
* Forward-compat rule: any column added to these entities AFTER v1 MUST be nullable or
|
|
32
28
|
* carry a default — `ensureAuthzSchema` only ever runs the non-destructive `safe` diff
|
|
33
29
|
* (create table + add-missing-column), and `ADD COLUMN NOT NULL` without a default fails
|
|
34
30
|
* on a populated table.
|
|
35
31
|
*/
|
|
36
|
-
|
|
32
|
+
/**
|
|
33
|
+
* A named role (e.g. `editor`). Permissions are attached via {@link RolePermissionEntity};
|
|
34
|
+
* users are attached via {@link UserRoleEntity}.
|
|
35
|
+
*/
|
|
36
|
+
export class RoleEntity {
|
|
37
37
|
id;
|
|
38
38
|
name;
|
|
39
39
|
guard;
|
|
40
40
|
createdAt;
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
__metadata("design:type", Date)
|
|
58
|
-
], RoleEntity.prototype, "createdAt", void 0);
|
|
59
|
-
RoleEntity = __decorate([
|
|
60
|
-
Entity({ tableName: DEFAULT_TABLE_NAMES.roles })
|
|
61
|
-
], RoleEntity);
|
|
62
|
-
export { RoleEntity };
|
|
41
|
+
}
|
|
42
|
+
export const RoleEntitySchema = new EntitySchema({
|
|
43
|
+
class: RoleEntity,
|
|
44
|
+
tableName: DEFAULT_TABLE_NAMES.roles,
|
|
45
|
+
properties: {
|
|
46
|
+
id: { type: 'string', length: 191, primary: true },
|
|
47
|
+
name: {
|
|
48
|
+
type: 'string',
|
|
49
|
+
length: 191,
|
|
50
|
+
unique: true,
|
|
51
|
+
index: 'authz_roles_name_uniq',
|
|
52
|
+
},
|
|
53
|
+
guard: { type: 'string', nullable: true },
|
|
54
|
+
createdAt: { type: 'datetime' },
|
|
55
|
+
},
|
|
56
|
+
});
|
|
63
57
|
/** A named permission (e.g. `posts.publish`). Granted to roles via {@link RolePermissionEntity}. */
|
|
64
|
-
|
|
58
|
+
export class PermissionEntity {
|
|
65
59
|
id;
|
|
66
60
|
name;
|
|
67
61
|
guard;
|
|
68
62
|
createdAt;
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
__metadata("design:type", Date)
|
|
86
|
-
], PermissionEntity.prototype, "createdAt", void 0);
|
|
87
|
-
PermissionEntity = __decorate([
|
|
88
|
-
Entity({ tableName: DEFAULT_TABLE_NAMES.permissions })
|
|
89
|
-
], PermissionEntity);
|
|
90
|
-
export { PermissionEntity };
|
|
63
|
+
}
|
|
64
|
+
export const PermissionEntitySchema = new EntitySchema({
|
|
65
|
+
class: PermissionEntity,
|
|
66
|
+
tableName: DEFAULT_TABLE_NAMES.permissions,
|
|
67
|
+
properties: {
|
|
68
|
+
id: { type: 'string', length: 191, primary: true },
|
|
69
|
+
name: {
|
|
70
|
+
type: 'string',
|
|
71
|
+
length: 191,
|
|
72
|
+
unique: true,
|
|
73
|
+
index: 'authz_permissions_name_uniq',
|
|
74
|
+
},
|
|
75
|
+
guard: { type: 'string', nullable: true },
|
|
76
|
+
createdAt: { type: 'datetime' },
|
|
77
|
+
},
|
|
78
|
+
});
|
|
91
79
|
/** Pivot: role ↔ permission. Composite PK `(roleId, permissionId)`. */
|
|
92
|
-
|
|
80
|
+
export class RolePermissionEntity {
|
|
93
81
|
roleId;
|
|
94
82
|
permissionId;
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
RolePermissionEntity = __decorate([
|
|
105
|
-
Entity({ tableName: DEFAULT_TABLE_NAMES.rolePermission })
|
|
106
|
-
], RolePermissionEntity);
|
|
107
|
-
export { RolePermissionEntity };
|
|
83
|
+
}
|
|
84
|
+
export const RolePermissionEntitySchema = new EntitySchema({
|
|
85
|
+
class: RolePermissionEntity,
|
|
86
|
+
tableName: DEFAULT_TABLE_NAMES.rolePermission,
|
|
87
|
+
properties: {
|
|
88
|
+
roleId: { type: 'string', length: 191, primary: true },
|
|
89
|
+
permissionId: { type: 'string', length: 191, primary: true },
|
|
90
|
+
},
|
|
91
|
+
});
|
|
108
92
|
/**
|
|
109
93
|
* Pivot: user ↔ role. References the user BY ID ONLY — this package NEVER defines or
|
|
110
94
|
* owns a users table. `userType` lets the same table key polymorphic principals
|
|
111
95
|
* (mirrors nestjs-context's `UserRef` shape).
|
|
112
96
|
*/
|
|
113
|
-
|
|
97
|
+
export class UserRoleEntity {
|
|
114
98
|
userType;
|
|
115
99
|
userId;
|
|
116
100
|
roleId;
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
], UserRoleEntity);
|
|
134
|
-
export { UserRoleEntity };
|
|
135
|
-
/** All entities, in dependency order — convenient for `entities: [...]` registration. */
|
|
101
|
+
}
|
|
102
|
+
export const UserRoleEntitySchema = new EntitySchema({
|
|
103
|
+
class: UserRoleEntity,
|
|
104
|
+
tableName: DEFAULT_TABLE_NAMES.userRole,
|
|
105
|
+
properties: {
|
|
106
|
+
userType: { type: 'string', length: 191, primary: true },
|
|
107
|
+
userId: { type: 'string', length: 191, primary: true },
|
|
108
|
+
roleId: { type: 'string', length: 191, primary: true },
|
|
109
|
+
},
|
|
110
|
+
indexes: [{ name: 'authz_user_role_user_idx', properties: ['userType', 'userId'] }],
|
|
111
|
+
});
|
|
112
|
+
/**
|
|
113
|
+
* All entity SCHEMAS, in dependency order — pass to `entities: [...]` registration. These
|
|
114
|
+
* are the {@link EntitySchema} objects MikroORM discovers; the store keys on the plain
|
|
115
|
+
* classes ({@link RoleEntity} etc.), which the schemas are bound to via `class`.
|
|
116
|
+
*/
|
|
136
117
|
export const AUTHZ_ENTITIES = [
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
118
|
+
RoleEntitySchema,
|
|
119
|
+
PermissionEntitySchema,
|
|
120
|
+
RolePermissionEntitySchema,
|
|
121
|
+
UserRoleEntitySchema,
|
|
141
122
|
];
|
|
142
123
|
//# sourceMappingURL=entities.js.map
|
package/dist/entities.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entities.js","sourceRoot":"","sources":["../src/entities.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"entities.js","sourceRoot":"","sources":["../src/entities.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
export { AUTHZ_ENTITIES, DEFAULT_TABLE_NAMES, PermissionEntity, RoleEntity, RolePermissionEntity, UserRoleEntity, } from './entities.js';
|
|
1
|
+
export { AUTHZ_ENTITIES, DEFAULT_TABLE_NAMES, PermissionEntity, PermissionEntitySchema, RoleEntity, RoleEntitySchema, RolePermissionEntity, RolePermissionEntitySchema, UserRoleEntity, UserRoleEntitySchema, } from './entities.js';
|
|
2
2
|
export { authzSchemaSql, ensureAuthzSchema } from './schema.js';
|
|
3
3
|
export { MikroOrmAuthzStore } from './mikro-orm-authz.store.js';
|
|
4
4
|
export type { UserAuthz } from './mikro-orm-authz.store.js';
|
|
5
5
|
export { AUTHZ_RBAC_OPTIONS, AUTHZ_RBAC_STORE, AuthzRbacModule, defaultUserRefMapper, } from './authz-rbac.module.js';
|
|
6
6
|
export type { AuthzRbacModuleAsyncOptions, AuthzRbacModuleOptions, UserRefMapper, } from './authz-rbac.module.js';
|
|
7
|
-
export type { AuthzStoreOptions
|
|
7
|
+
export type { AuthzStoreOptions } from './types.js';
|
|
8
|
+
export type { UserRef, UserRefInput } from '@dudousxd/nestjs-authz/store-kit';
|
|
8
9
|
export { applyScope, compileScope } from './scope.js';
|
|
9
10
|
export type { ScopeResolver } from './scope.js';
|
|
10
11
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,mBAAmB,EACnB,gBAAgB,EAChB,UAAU,EACV,oBAAoB,EACpB,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,mBAAmB,EACnB,gBAAgB,EAChB,sBAAsB,EACtB,UAAU,EACV,gBAAgB,EAChB,oBAAoB,EACpB,0BAA0B,EAC1B,cAAc,EACd,oBAAoB,GACrB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,YAAY,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,eAAe,EACf,oBAAoB,GACrB,MAAM,wBAAwB,CAAC;AAChC,YAAY,EACV,2BAA2B,EAC3B,sBAAsB,EACtB,aAAa,GACd,MAAM,wBAAwB,CAAC;AAChC,YAAY,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AACpD,YAAY,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAC9E,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AACtD,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { AUTHZ_ENTITIES, DEFAULT_TABLE_NAMES, PermissionEntity, RoleEntity, RolePermissionEntity, UserRoleEntity, } from './entities.js';
|
|
1
|
+
export { AUTHZ_ENTITIES, DEFAULT_TABLE_NAMES, PermissionEntity, PermissionEntitySchema, RoleEntity, RoleEntitySchema, RolePermissionEntity, RolePermissionEntitySchema, UserRoleEntity, UserRoleEntitySchema, } from './entities.js';
|
|
2
2
|
export { authzSchemaSql, ensureAuthzSchema } from './schema.js';
|
|
3
3
|
export { MikroOrmAuthzStore } from './mikro-orm-authz.store.js';
|
|
4
4
|
export { AUTHZ_RBAC_OPTIONS, AUTHZ_RBAC_STORE, AuthzRbacModule, defaultUserRefMapper, } from './authz-rbac.module.js';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,mBAAmB,EACnB,gBAAgB,EAChB,UAAU,EACV,oBAAoB,EACpB,cAAc,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,mBAAmB,EACnB,gBAAgB,EAChB,sBAAsB,EACtB,UAAU,EACV,gBAAgB,EAChB,oBAAoB,EACpB,0BAA0B,EAC1B,cAAc,EACd,oBAAoB,GACrB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAEhE,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,eAAe,EACf,oBAAoB,GACrB,MAAM,wBAAwB,CAAC;AAQhC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -1,13 +1,6 @@
|
|
|
1
|
+
import { type UserAuthz, type UserRef } from '@dudousxd/nestjs-authz/store-kit';
|
|
1
2
|
import type { EntityManager } from '@mikro-orm/core';
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* A user's effective permissions: the role names they hold and the flattened set of
|
|
5
|
-
* permission names granted by those roles.
|
|
6
|
-
*/
|
|
7
|
-
export interface UserAuthz {
|
|
8
|
-
roles: string[];
|
|
9
|
-
permissions: string[];
|
|
10
|
-
}
|
|
3
|
+
export type { UserAuthz };
|
|
11
4
|
/**
|
|
12
5
|
* MikroORM-backed RBAC store. A plain POJO that receives the `EntityManager` in its
|
|
13
6
|
* constructor — NOT `@Injectable`, no internal connection token (the app owns the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mikro-orm-authz.store.d.ts","sourceRoot":"","sources":["../src/mikro-orm-authz.store.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"mikro-orm-authz.store.d.ts","sourceRoot":"","sources":["../src/mikro-orm-authz.store.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,OAAO,EAAoB,MAAM,kCAAkC,CAAC;AAClG,OAAO,KAAK,EAAE,aAAa,EAAY,MAAM,iBAAiB,CAAC;AAM/D,YAAY,EAAE,SAAS,EAAE,CAAC;AAE1B;;;;;;;;GAQG;AACH,qBAAa,kBAAkB;IAI3B,OAAO,CAAC,QAAQ,CAAC,EAAE;gBAAF,EAAE,EAAE,aAAa,EAClC,KAAK,GAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAM;IAGnC,gGAAgG;IAChG,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAM7B;;;OAGG;IACG,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAoB/C,qFAAqF;IAC/E,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;YAoBvC,UAAU;YAKV,gBAAgB;IAO9B,kFAAkF;IAC5E,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAUnF,gFAAgF;IAC1E,wBAAwB,CAAC,QAAQ,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IASvF,iFAAiF;IAC3E,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAUhE,4EAA4E;IACtE,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAShE,mCAAmC;IAC7B,eAAe,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAUvD;;;;;;;;OAQG;IACG,qBAAqB,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAyC7D,0DAA0D;IACpD,YAAY,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC;IAQrD,wEAAwE;IAClE,iBAAiB,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAI7E"}
|
|
@@ -1,13 +1,7 @@
|
|
|
1
1
|
import { randomUUID } from 'node:crypto';
|
|
2
|
+
import { normalizeUserRef } from '@dudousxd/nestjs-authz/store-kit';
|
|
2
3
|
import { PermissionEntity, RoleEntity, RolePermissionEntity, UserRoleEntity } from './entities.js';
|
|
3
4
|
import { ensureAuthzSchema } from './schema.js';
|
|
4
|
-
/** Normalize a {@link UserRef} to `{ type, id }` with `id` stringified. */
|
|
5
|
-
function normalizeUserRef(ref) {
|
|
6
|
-
if (typeof ref === 'string' || typeof ref === 'number') {
|
|
7
|
-
return { type: 'user', id: String(ref) };
|
|
8
|
-
}
|
|
9
|
-
return { type: ref.type ?? 'user', id: String(ref.id) };
|
|
10
|
-
}
|
|
11
5
|
/**
|
|
12
6
|
* MikroORM-backed RBAC store. A plain POJO that receives the `EntityManager` in its
|
|
13
7
|
* constructor — NOT `@Injectable`, no internal connection token (the app owns the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mikro-orm-authz.store.js","sourceRoot":"","sources":["../src/mikro-orm-authz.store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"mikro-orm-authz.store.js","sourceRoot":"","sources":["../src/mikro-orm-authz.store.ts"],"names":[],"mappings":"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"}
|
package/dist/schema.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAwC/D;;;;;;;;;;;GAWG;AACH,wBAAsB,cAAc,CAAC,OAAO,EAAE,QAAQ,GAAG,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,CAGvF;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,QAAQ,GAAG,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAQxF"}
|
package/dist/schema.js
CHANGED
|
@@ -9,8 +9,15 @@ const AUTHZ_TABLES = [
|
|
|
9
9
|
function toEm(ormOrEm) {
|
|
10
10
|
return isOrm(ormOrEm) ? ormOrEm.em : ormOrEm;
|
|
11
11
|
}
|
|
12
|
+
/**
|
|
13
|
+
* A {@link MikroORM} instance exposes its {@link EntityManager} as a (non-null) `em`
|
|
14
|
+
* property; an EntityManager does not expose an `em`. That distinction is stable across
|
|
15
|
+
* MikroORM 6 and 7 — v7 removed `MikroORM.getSchemaGenerator()`, so we can no longer probe
|
|
16
|
+
* for it (the EM-bound generator is read via {@link generatorFor} instead).
|
|
17
|
+
*/
|
|
12
18
|
function isOrm(value) {
|
|
13
|
-
|
|
19
|
+
const candidate = value;
|
|
20
|
+
return candidate.em != null && typeof candidate.em === 'object';
|
|
14
21
|
}
|
|
15
22
|
/** The platform's schema generator for a given EM (driver + EM bound). */
|
|
16
23
|
function generatorFor(em) {
|
package/dist/schema.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AAEA,sFAAsF;AACtF,MAAM,YAAY,GAAG;IACnB,aAAa;IACb,mBAAmB;IACnB,uBAAuB;IACvB,iBAAiB;CAClB,CAAC;AAEF,yEAAyE;AACzE,SAAS,IAAI,CAAC,OAAiC;IAC7C,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAE,OAAO,CAAC,EAA+B,CAAC,CAAC,CAAC,OAAO,CAAC;AAC7E,CAAC;AAED,SAAS,KAAK,CAAC,KAA+B;IAC5C,OAAO,
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AAEA,sFAAsF;AACtF,MAAM,YAAY,GAAG;IACnB,aAAa;IACb,mBAAmB;IACnB,uBAAuB;IACvB,iBAAiB;CAClB,CAAC;AAEF,yEAAyE;AACzE,SAAS,IAAI,CAAC,OAAiC;IAC7C,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAE,OAAO,CAAC,EAA+B,CAAC,CAAC,CAAC,OAAO,CAAC;AAC7E,CAAC;AAED;;;;;GAKG;AACH,SAAS,KAAK,CAAC,KAA+B;IAC5C,MAAM,SAAS,GAAG,KAAyB,CAAC;IAC5C,OAAO,SAAS,CAAC,EAAE,IAAI,IAAI,IAAI,OAAO,SAAS,CAAC,EAAE,KAAK,QAAQ,CAAC;AAClE,CAAC;AAED,0EAA0E;AAC1E,SAAS,YAAY,CAAC,EAAiB;IACrC,OAAO,EAAE,CAAC,WAAW,EAAE,CAAC,kBAAkB,CAAC,EAAE,CAAC,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC;AACjE,CAAC;AAED,8FAA8F;AAC9F,KAAK,UAAU,eAAe,CAAC,EAAiB;IAC9C,MAAM,GAAG,GAAG,MAAM,YAAY,CAAC,EAAE,CAAC,CAAC,kBAAkB,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACnF,OAAO,GAAG;SACP,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;SACpB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpG,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,OAAiC;IACpE,MAAM,UAAU,GAAG,MAAM,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IACxD,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;AAC/D,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,OAAiC;IACvE,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;IACzB,MAAM,UAAU,GAAG,MAAM,eAAe,CAAC,EAAE,CAAC,CAAC;IAC7C,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IACpC,MAAM,UAAU,GAAG,EAAE,CAAC,aAAa,EAAE,CAAC;IACtC,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,MAAM,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACtC,CAAC;AACH,CAAC"}
|
package/dist/scope.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scope.d.ts","sourceRoot":"","sources":["../src/scope.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"scope.d.ts","sourceRoot":"","sources":["../src/scope.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAEV,eAAe,EAGhB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,KAAK,WAAW,EAAO,MAAM,iBAAiB,CAAC;AACxD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAE3C;;;;;GAKG;AACH,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;CAC1E;AAyBD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,YAAY,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,EACpD,UAAU,EAAE,eAAe,GAC1B,WAAW,CAAC,CAAC,CAAC,CAmChB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,UAAU,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,EACxD,IAAI,EAAE,aAAa,EACnB,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,EACrB,OAAO,SAAY,GAClB,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAEzB"}
|
package/dist/scope.js
CHANGED
|
@@ -1,17 +1,5 @@
|
|
|
1
|
+
import { assertSafeIdentifier } from '@dudousxd/nestjs-authz';
|
|
1
2
|
import { raw } from '@mikro-orm/core';
|
|
2
|
-
/**
|
|
3
|
-
* SQL identifiers (column names) become object KEYS in the emitted `FilterQuery`.
|
|
4
|
-
* MikroORM binds VALUES as parameters, but a field name is interpreted as a property /
|
|
5
|
-
* column path, so a hostile name must never reach the driver. We restrict field names
|
|
6
|
-
* to the same conservative allowlist the TypeORM adapter uses (letters/digits/underscore,
|
|
7
|
-
* not leading-digit) and reject anything else loudly.
|
|
8
|
-
*/
|
|
9
|
-
const SAFE_IDENTIFIER = /^[A-Za-z_][A-Za-z0-9_]*$/;
|
|
10
|
-
function assertSafeIdentifier(value, what) {
|
|
11
|
-
if (!SAFE_IDENTIFIER.test(value)) {
|
|
12
|
-
throw new Error(`Unsafe ${what}: ${JSON.stringify(value)}. Identifiers must match /^[A-Za-z_][A-Za-z0-9_]*$/ (letters, digits, underscore; not starting with a digit). This blocks injection via configured names.`);
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
3
|
/**
|
|
16
4
|
* An always-false predicate as a MikroORM `FilterQuery`. An empty `$and` is the
|
|
17
5
|
* identity (true) and an empty `$or` is silently dropped by the query builder, so
|
package/dist/scope.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scope.js","sourceRoot":"","sources":["../src/scope.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"scope.js","sourceRoot":"","sources":["../src/scope.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -1,13 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* A reference to a user. Matches nestjs-context's `UserRef` shape (`{ type, id }`),
|
|
3
|
-
* but the store accepts either a full ref or a bare id (defaulting `type` to `'user'`).
|
|
4
|
-
*/
|
|
5
|
-
export interface UserRefInput {
|
|
6
|
-
type?: string;
|
|
7
|
-
id: string | number;
|
|
8
|
-
}
|
|
9
|
-
/** A user reference, or just its id (treated as `{ type: 'user', id }`). */
|
|
10
|
-
export type UserRef = UserRefInput | string | number;
|
|
11
1
|
/**
|
|
12
2
|
* Options for the MikroORM RBAC store. Reserved for forward-compatibility — MikroORM
|
|
13
3
|
* derives table names from the registered entities (`@Entity({ tableName })`), so BYO
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;CAAG"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dudousxd/nestjs-authz-mikro-orm",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0",
|
|
4
4
|
"description": "MikroORM RBAC persistence for @dudousxd/nestjs-authz — roles, permissions, and a Gate seam (zero connection ownership).",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -26,8 +26,8 @@
|
|
|
26
26
|
],
|
|
27
27
|
"peerDependencies": {
|
|
28
28
|
"@dudousxd/nestjs-authz": ">=0.1.0",
|
|
29
|
-
"@mikro-orm/core": "^6.0.0",
|
|
30
|
-
"@mikro-orm/nestjs": "^5.0.0 || ^6.0.0",
|
|
29
|
+
"@mikro-orm/core": "^6.0.0 || ^7.0.0",
|
|
30
|
+
"@mikro-orm/nestjs": "^5.0.0 || ^6.0.0 || ^7.0.0",
|
|
31
31
|
"@nestjs/common": ">=10.0.0",
|
|
32
32
|
"@nestjs/core": ">=10.0.0",
|
|
33
33
|
"reflect-metadata": ">=0.1.13"
|
|
@@ -49,7 +49,7 @@
|
|
|
49
49
|
"rxjs": "^7.8.1",
|
|
50
50
|
"typescript": "^5.4.0",
|
|
51
51
|
"vitest": "^3.0.0",
|
|
52
|
-
"@dudousxd/nestjs-authz": "^0.6.
|
|
52
|
+
"@dudousxd/nestjs-authz": "^0.6.3"
|
|
53
53
|
},
|
|
54
54
|
"engines": {
|
|
55
55
|
"node": ">=20"
|