@dudousxd/nestjs-authz-mikro-orm 0.5.0 → 0.6.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 +40 -0
- package/README.md +34 -0
- package/dist/entities.d.ts +5 -0
- package/dist/entities.d.ts.map +1 -1
- package/dist/entities.js +12 -0
- package/dist/entities.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/mikro-orm-authz.store.d.ts +25 -6
- package/dist/mikro-orm-authz.store.d.ts.map +1 -1
- package/dist/mikro-orm-authz.store.js +59 -8
- package/dist/mikro-orm-authz.store.js.map +1 -1
- package/package.json +27 -23
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,45 @@
|
|
|
1
1
|
# @dudousxd/nestjs-authz-mikro-orm
|
|
2
2
|
|
|
3
|
+
## 0.6.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- [#58](https://github.com/DavideCarvalho/nestjs-authz/pull/58) [`8b65088`](https://github.com/DavideCarvalho/nestjs-authz/commit/8b6508804216d46384ec3a734a55b9c0ac1e48b6) Thanks [@DavideCarvalho](https://github.com/DavideCarvalho)! - Per-source role assignments (manual vs SSO/SCIM/…).
|
|
8
|
+
|
|
9
|
+
Each role assignment now records a `source`, default `'manual'`. Every store adapter gains:
|
|
10
|
+
|
|
11
|
+
- `setUserRoles(user, roleNames, { source?, tenantId? })` replaces only that source's assignments, so an SSO sync never removes a role that was granted by hand. It creates missing roles and runs in a transaction.
|
|
12
|
+
- `assignRole(user, role, { source })` and `removeRole(user, role, { source })`. Without `source`, `removeRole` removes the role from every source.
|
|
13
|
+
- `getRoleAssignments(user, scope?)` returns `{ role, source, tenantId }[]`.
|
|
14
|
+
- `getRolesForUser` and the Gate seams still return distinct role names.
|
|
15
|
+
|
|
16
|
+
Core's `store-kit` exports `DEFAULT_ROLE_SOURCE` and `RoleAssignment`. The adapters now require `@dudousxd/nestjs-authz >= 0.7.0`.
|
|
17
|
+
|
|
18
|
+
**Migration**
|
|
19
|
+
|
|
20
|
+
- **TypeORM:** `ensureAuthzSchema` / `autoCreateSchema` adds `source varchar(64) NOT NULL DEFAULT 'manual'` to `authz_user_role`, so existing rows become manual assignments. It never rewrites an existing primary key. Until you widen the key, a role can come from only one source per user, and a second-source insert is silently ignored. Widen it once:
|
|
21
|
+
|
|
22
|
+
- PostgreSQL: `ALTER TABLE authz_user_role DROP CONSTRAINT <pk_name>, ADD PRIMARY KEY ("userType","userId","roleId","tenantId","source");`
|
|
23
|
+
- MySQL (utf8mb4 needs the shorter key columns): `ALTER TABLE authz_user_role MODIFY roleId varchar(64) NOT NULL, MODIFY source varchar(64) NOT NULL DEFAULT 'manual', DROP PRIMARY KEY, ADD PRIMARY KEY (userType, userId, roleId, tenantId, source);`
|
|
24
|
+
- SQLite: rebuild the table.
|
|
25
|
+
|
|
26
|
+
New tables are created with the 5-column key, and `roleId` is now `varchar(64)` so the key fits MySQL's 3072-byte limit.
|
|
27
|
+
|
|
28
|
+
- **MikroORM:** the column self-heals the same way. The PK does not. See the adapter README for the SQL.
|
|
29
|
+
- **Prisma:** opt-in with `roleSources: true` after adding `source String @default("manual")` to `UserRole` and including it in `@@id`. See the adapter README. Without the option the adapter behaves exactly as before.
|
|
30
|
+
- **Drizzle:** `createAuthzTables()` now includes the column and the widened key, so regenerate with drizzle-kit. `ensureSchema()` adds the column. See the README for the key SQL.
|
|
31
|
+
|
|
32
|
+
## 0.5.1
|
|
33
|
+
|
|
34
|
+
### Patch Changes
|
|
35
|
+
|
|
36
|
+
- [`f079152`](https://github.com/DavideCarvalho/nestjs-authz/commit/f079152627ed223e87fa5b701d0c6917aaa34d9d) - Support NestJS 12.
|
|
37
|
+
|
|
38
|
+
The `@nestjs/common` / `@nestjs/core` peer ranges are already `>=10.0.0`, so they
|
|
39
|
+
admit 12 unchanged. The dev/test matrix now runs on `@nestjs/*@12.0.1` (and the
|
|
40
|
+
MikroORM 7 integration app with it), so v12 is covered by CI rather than merely
|
|
41
|
+
allowed by the range. No source changes were needed.
|
|
42
|
+
|
|
3
43
|
## 0.5.0
|
|
4
44
|
|
|
5
45
|
### Minor Changes
|
package/README.md
CHANGED
|
@@ -139,6 +139,40 @@ export class AddAuthz extends Migration {
|
|
|
139
139
|
}
|
|
140
140
|
```
|
|
141
141
|
|
|
142
|
+
## Role sources (manual vs SSO/SCIM)
|
|
143
|
+
|
|
144
|
+
Every role assignment records a `source`. It defaults to `'manual'`, so existing calls and existing
|
|
145
|
+
rows keep their meaning. A sync replaces only its own source:
|
|
146
|
+
|
|
147
|
+
```ts
|
|
148
|
+
// On each SSO login: exactly these roles come from SSO. Manual grants are untouched.
|
|
149
|
+
await store.setUserRoles(user, rolesFromIdpGroups, { source: 'sso' });
|
|
150
|
+
|
|
151
|
+
await store.assignRole(user, 'editor'); // source 'manual'
|
|
152
|
+
await store.assignRole(user, 'editor', { source: 'scim' }); // a second assignment of the same role
|
|
153
|
+
await store.removeRole(user, 'editor', { source: 'scim' }); // still an editor (manual)
|
|
154
|
+
await store.removeRole(user, 'editor'); // no source: removed from every source
|
|
155
|
+
await store.getRoleAssignments(user); // [{ role, source, tenantId }]
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
`getRolesForUser` and the Gate seams see the distinct role names from all sources.
|
|
159
|
+
|
|
160
|
+
### Migrating an existing database
|
|
161
|
+
|
|
162
|
+
`ensureAuthzSchema` / `autoCreateSchema` add the `source` column to `authz_user_role`
|
|
163
|
+
(`NOT NULL DEFAULT 'manual'`), so existing rows become manual assignments. They don't widen the
|
|
164
|
+
primary key. Until you widen it, a role can come from only one source per user: assigning it from
|
|
165
|
+
a second source fails with a duplicate-key error. Widen the key once:
|
|
166
|
+
|
|
167
|
+
```sql
|
|
168
|
+
-- PostgreSQL (default constraint name; check yours with \d authz_user_role)
|
|
169
|
+
ALTER TABLE authz_user_role DROP CONSTRAINT authz_user_role_pkey,
|
|
170
|
+
ADD PRIMARY KEY (user_type, user_id, role_id, source);
|
|
171
|
+
-- MySQL
|
|
172
|
+
ALTER TABLE authz_user_role DROP PRIMARY KEY, ADD PRIMARY KEY (user_type, user_id, role_id, source);
|
|
173
|
+
-- SQLite: recreate the table with the 4-column key (SQLite cannot alter a primary key).
|
|
174
|
+
```
|
|
175
|
+
|
|
142
176
|
## License
|
|
143
177
|
|
|
144
178
|
MIT
|
package/dist/entities.d.ts
CHANGED
|
@@ -76,6 +76,11 @@ export declare class UserRoleEntity {
|
|
|
76
76
|
userType: string;
|
|
77
77
|
userId: string;
|
|
78
78
|
roleId: string;
|
|
79
|
+
/**
|
|
80
|
+
* Where the assignment came from (`'manual'`, `'sso'`, …). Part of the PK so a role can be held
|
|
81
|
+
* through two sources. Defaults to `'manual'` (older rows self-heal to it).
|
|
82
|
+
*/
|
|
83
|
+
source: string;
|
|
79
84
|
}
|
|
80
85
|
/** The four {@link EntitySchema} definitions produced by {@link createAuthzEntitySchemas}. */
|
|
81
86
|
export interface AuthzEntitySchemas {
|
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":"AACA,OAAO,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACrE,OAAO,EACL,yBAAyB,EACzB,6BAA6B,EAC7B,mBAAmB,EACnB,uBAAuB,EACxB,MAAM,mBAAmB,CAAC;AAE3B;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB;;;;;CAKtB,CAAC;AAEX,sDAAsD;AACtD,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH;;;GAGG;AACH,qBAAa,UAAU;IACb,CAAC,oBAAoB,CAAC,CAAC,EAAE,mBAAmB,CAAC;IACrD,EAAE,EAAG,MAAM,CAAC;IACZ,IAAI,EAAG,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,SAAS,EAAG,IAAI,CAAC;CAClB;AAED,oGAAoG;AACpG,qBAAa,gBAAgB;IACnB,CAAC,oBAAoB,CAAC,CAAC,EAAE,yBAAyB,CAAC;IAC3D,EAAE,EAAG,MAAM,CAAC;IACZ,IAAI,EAAG,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,SAAS,EAAG,IAAI,CAAC;CAClB;AAED,uEAAuE;AACvE,qBAAa,oBAAoB;IACvB,CAAC,oBAAoB,CAAC,CAAC,EAAE,6BAA6B,CAAC;IAC/D,MAAM,EAAG,MAAM,CAAC;IAChB,YAAY,EAAG,MAAM,CAAC;CACvB;AAED;;;;GAIG;AACH,qBAAa,cAAc;IACjB,CAAC,oBAAoB,CAAC,CAAC,EAAE,uBAAuB,CAAC;IACzD,QAAQ,EAAG,MAAM,CAAC;IAClB,MAAM,EAAG,MAAM,CAAC;IAChB,MAAM,EAAG,MAAM,CAAC;IAChB;;;OAGG;IACH,MAAM,EAAG,MAAM,CAAC;CACjB;AAED,8FAA8F;AAC9F,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,YAAY,CAAC,UAAU,CAAC,CAAC;IAC/B,UAAU,EAAE,YAAY,CAAC,gBAAgB,CAAC,CAAC;IAC3C,cAAc,EAAE,YAAY,CAAC,oBAAoB,CAAC,CAAC;IACnD,QAAQ,EAAE,YAAY,CAAC,cAAc,CAAC,CAAC;IACvC,qEAAqE;IACrE,GAAG,EAAE;QACH,YAAY,CAAC,UAAU,CAAC;QACxB,YAAY,CAAC,gBAAgB,CAAC;QAC9B,YAAY,CAAC,oBAAoB,CAAC;QAClC,YAAY,CAAC,cAAc,CAAC;KAC7B,CAAC;CACH;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,wBAAwB,CACtC,UAAU,GAAE,OAAO,CAAC,eAAe,CAAM,GACxC,kBAAkB,CAwEpB;AAID,eAAO,MAAM,gBAAgB,iCAAsB,CAAC;AACpD,eAAO,MAAM,sBAAsB,uCAA4B,CAAC;AAChE,eAAO,MAAM,0BAA0B,2CAAgC,CAAC;AACxE,eAAO,MAAM,oBAAoB,qCAA0B,CAAC;AAE5D;;;;GAIG;AACH,eAAO,MAAM,cAAc,0JAAqB,CAAC;AAEjD;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,2GAKvB,CAAC"}
|
package/dist/entities.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { DEFAULT_ROLE_SOURCE } from '@dudousxd/nestjs-authz/store-kit';
|
|
1
2
|
import { EntitySchema } from '@mikro-orm/core';
|
|
2
3
|
import { AuthzPermissionRepository, AuthzRolePermissionRepository, AuthzRoleRepository, AuthzUserRoleRepository, } from './repositories.js';
|
|
3
4
|
/**
|
|
@@ -65,6 +66,11 @@ export class UserRoleEntity {
|
|
|
65
66
|
userType;
|
|
66
67
|
userId;
|
|
67
68
|
roleId;
|
|
69
|
+
/**
|
|
70
|
+
* Where the assignment came from (`'manual'`, `'sso'`, …). Part of the PK so a role can be held
|
|
71
|
+
* through two sources. Defaults to `'manual'` (older rows self-heal to it).
|
|
72
|
+
*/
|
|
73
|
+
source;
|
|
68
74
|
}
|
|
69
75
|
/**
|
|
70
76
|
* Build the four authz {@link EntitySchema} definitions, optionally under your own table
|
|
@@ -130,6 +136,12 @@ export function createAuthzEntitySchemas(tableNames = {}) {
|
|
|
130
136
|
userType: { type: 'string', length: 191, primary: true },
|
|
131
137
|
userId: { type: 'string', length: 191, primary: true },
|
|
132
138
|
roleId: { type: 'string', length: 191, primary: true },
|
|
139
|
+
source: {
|
|
140
|
+
type: 'string',
|
|
141
|
+
length: 64,
|
|
142
|
+
primary: true,
|
|
143
|
+
default: DEFAULT_ROLE_SOURCE,
|
|
144
|
+
},
|
|
133
145
|
},
|
|
134
146
|
indexes: [{ name: `${names.userRole}_user_idx`, properties: ['userType', 'userId'] }],
|
|
135
147
|
});
|
package/dist/entities.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entities.js","sourceRoot":"","sources":["../src/entities.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"entities.js","sourceRoot":"","sources":["../src/entities.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -3,7 +3,7 @@ export type { AuthzEntitySchemas, AuthzTableNames } from './entities.js';
|
|
|
3
3
|
export { AuthzPermissionRepository, AuthzRolePermissionRepository, AuthzRoleRepository, AuthzUserRoleRepository, } from './repositories.js';
|
|
4
4
|
export { authzSchemaSql, ensureAuthzSchema } from './schema.js';
|
|
5
5
|
export { MikroOrmAuthzStore } from './mikro-orm-authz.store.js';
|
|
6
|
-
export type { UserAuthz } from './mikro-orm-authz.store.js';
|
|
6
|
+
export type { RoleAssignment, RoleSourceOptions, UserAuthz, } from './mikro-orm-authz.store.js';
|
|
7
7
|
export { AUTHZ_RBAC_OPTIONS, AUTHZ_RBAC_STORE, AuthzRbacModule, defaultUserRefMapper, } from './authz-rbac.module.js';
|
|
8
8
|
export type { AuthzRbacModuleAsyncOptions, AuthzRbacModuleOptions, UserRefMapper, } from './authz-rbac.module.js';
|
|
9
9
|
export type { AuthzStoreOptions } from './types.js';
|
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,oBAAoB,EACpB,wBAAwB,EACxB,mBAAmB,EACnB,gBAAgB,EAChB,sBAAsB,EACtB,UAAU,EACV,gBAAgB,EAChB,oBAAoB,EACpB,0BAA0B,EAC1B,cAAc,EACd,oBAAoB,GACrB,MAAM,eAAe,CAAC;AACvB,YAAY,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAGzE,OAAO,EACL,yBAAyB,EACzB,6BAA6B,EAC7B,mBAAmB,EACnB,uBAAuB,GACxB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,YAAY,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,oBAAoB,EACpB,wBAAwB,EACxB,mBAAmB,EACnB,gBAAgB,EAChB,sBAAsB,EACtB,UAAU,EACV,gBAAgB,EAChB,oBAAoB,EACpB,0BAA0B,EAC1B,cAAc,EACd,oBAAoB,GACrB,MAAM,eAAe,CAAC;AACvB,YAAY,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAGzE,OAAO,EACL,yBAAyB,EACzB,6BAA6B,EAC7B,mBAAmB,EACnB,uBAAuB,GACxB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,YAAY,EACV,cAAc,EACd,iBAAiB,EACjB,SAAS,GACV,MAAM,4BAA4B,CAAC;AACpC,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.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,oBAAoB,EACpB,wBAAwB,EACxB,mBAAmB,EACnB,gBAAgB,EAChB,sBAAsB,EACtB,UAAU,EACV,gBAAgB,EAChB,oBAAoB,EACpB,0BAA0B,EAC1B,cAAc,EACd,oBAAoB,GACrB,MAAM,eAAe,CAAC;AAEvB,0FAA0F;AAC1F,iFAAiF;AACjF,OAAO,EACL,yBAAyB,EACzB,6BAA6B,EAC7B,mBAAmB,EACnB,uBAAuB,GACxB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,oBAAoB,EACpB,wBAAwB,EACxB,mBAAmB,EACnB,gBAAgB,EAChB,sBAAsB,EACtB,UAAU,EACV,gBAAgB,EAChB,oBAAoB,EACpB,0BAA0B,EAC1B,cAAc,EACd,oBAAoB,GACrB,MAAM,eAAe,CAAC;AAEvB,0FAA0F;AAC1F,iFAAiF;AACjF,OAAO,EACL,yBAAyB,EACzB,6BAA6B,EAC7B,mBAAmB,EACnB,uBAAuB,GACxB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAMhE,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,eAAe,EACf,oBAAoB,GACrB,MAAM,wBAAwB,CAAC;AAQhC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -1,6 +1,10 @@
|
|
|
1
|
-
import { type UserAuthz, type UserRef } from '@dudousxd/nestjs-authz/store-kit';
|
|
1
|
+
import { type RoleAssignment, type UserAuthz, type UserRef } from '@dudousxd/nestjs-authz/store-kit';
|
|
2
2
|
import type { EntityManager } from '@mikro-orm/core';
|
|
3
|
-
export type { UserAuthz };
|
|
3
|
+
export type { RoleAssignment, UserAuthz };
|
|
4
|
+
/** Assignment source for role mutations (default `'manual'`) — see `setUserRoles`. */
|
|
5
|
+
export interface RoleSourceOptions {
|
|
6
|
+
source?: string;
|
|
7
|
+
}
|
|
4
8
|
/**
|
|
5
9
|
* MikroORM-backed RBAC store. A plain POJO that receives the `EntityManager` in its
|
|
6
10
|
* constructor — NOT `@Injectable`, no internal connection token (the app owns the
|
|
@@ -28,10 +32,25 @@ export declare class MikroOrmAuthzStore {
|
|
|
28
32
|
givePermissionToRole(roleName: string, permissionName: string): Promise<void>;
|
|
29
33
|
/** Revoke a permission from a role. No-op if either is absent or not linked. */
|
|
30
34
|
revokePermissionFromRole(roleName: string, permissionName: string): Promise<void>;
|
|
31
|
-
/**
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
+
/**
|
|
36
|
+
* Assign a role to a user (creating the role by name if needed). Idempotent. `{ source }`
|
|
37
|
+
* (default `'manual'`) records where the assignment came from.
|
|
38
|
+
*/
|
|
39
|
+
assignRole(user: UserRef, roleName: string, opts?: RoleSourceOptions): Promise<void>;
|
|
40
|
+
/**
|
|
41
|
+
* Remove a role from a user. No-op if the role or assignment is absent. With `{ source }` only
|
|
42
|
+
* that source's assignment goes; without it, the role is removed from every source.
|
|
43
|
+
*/
|
|
44
|
+
removeRole(user: UserRef, roleName: string, opts?: RoleSourceOptions): Promise<void>;
|
|
45
|
+
/**
|
|
46
|
+
* REPLACE the user's role assignments of ONE source (default `'manual'`) with exactly
|
|
47
|
+
* `roleNames` — e.g. an SSO/SCIM sync calls `setUserRoles(user, mappedRoles, { source: 'sso' })`
|
|
48
|
+
* on every login. Other sources' assignments are untouched, so a role held both manually and via
|
|
49
|
+
* SSO survives an SSO sync that drops it. Roles are created by name when missing. Transactional.
|
|
50
|
+
*/
|
|
51
|
+
setUserRoles(user: UserRef, roleNames: readonly string[], opts?: RoleSourceOptions): Promise<void>;
|
|
52
|
+
/** Every role assignment of a user, one entry per `(role, source)`. */
|
|
53
|
+
getRoleAssignments(user: UserRef): Promise<RoleAssignment[]>;
|
|
35
54
|
/** The role names a user holds. */
|
|
36
55
|
getRolesForUser(user: UserRef): Promise<string[]>;
|
|
37
56
|
/**
|
|
@@ -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,EAEL,KAAK,cAAc,EACnB,KAAK,SAAS,EACd,KAAK,OAAO,EAEb,MAAM,kCAAkC,CAAC;AAC1C,OAAO,KAAK,EAAE,aAAa,EAAY,MAAM,iBAAiB,CAAC;AAM/D,YAAY,EAAE,cAAc,EAAE,SAAS,EAAE,CAAC;AAE1C,sFAAsF;AACtF,MAAM,WAAW,iBAAiB;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;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;;;OAGG;IACG,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAgB1F;;;OAGG;IACG,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAY1F;;;;;OAKG;IACG,YAAY,CAChB,IAAI,EAAE,OAAO,EACb,SAAS,EAAE,SAAS,MAAM,EAAE,EAC5B,IAAI,CAAC,EAAE,iBAAiB,GACvB,OAAO,CAAC,IAAI,CAAC;IAchB,uEAAuE;IACjE,kBAAkB,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAelE,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,5 +1,5 @@
|
|
|
1
1
|
import { randomUUID } from 'node:crypto';
|
|
2
|
-
import { normalizeUserRef } from '@dudousxd/nestjs-authz/store-kit';
|
|
2
|
+
import { DEFAULT_ROLE_SOURCE, normalizeUserRef, } from '@dudousxd/nestjs-authz/store-kit';
|
|
3
3
|
import { PermissionEntity, RoleEntity, RolePermissionEntity, UserRoleEntity } from './entities.js';
|
|
4
4
|
import { ensureAuthzSchema } from './schema.js';
|
|
5
5
|
/**
|
|
@@ -101,24 +101,75 @@ export class MikroOrmAuthzStore {
|
|
|
101
101
|
await this.em.fork().nativeDelete(RolePermissionEntity, { roleId, permissionId });
|
|
102
102
|
}
|
|
103
103
|
// --- user ↔ role ---
|
|
104
|
-
/**
|
|
105
|
-
|
|
104
|
+
/**
|
|
105
|
+
* Assign a role to a user (creating the role by name if needed). Idempotent. `{ source }`
|
|
106
|
+
* (default `'manual'`) records where the assignment came from.
|
|
107
|
+
*/
|
|
108
|
+
async assignRole(user, roleName, opts) {
|
|
106
109
|
const { type, id } = normalizeUserRef(user);
|
|
107
110
|
const roleId = await this.createRole(roleName);
|
|
111
|
+
const source = opts?.source ?? DEFAULT_ROLE_SOURCE;
|
|
108
112
|
const em = this.em.fork();
|
|
109
|
-
const existing = await em.findOne(UserRoleEntity, {
|
|
113
|
+
const existing = await em.findOne(UserRoleEntity, {
|
|
114
|
+
userType: type,
|
|
115
|
+
userId: id,
|
|
116
|
+
roleId,
|
|
117
|
+
source,
|
|
118
|
+
});
|
|
110
119
|
if (existing)
|
|
111
120
|
return;
|
|
112
|
-
em.create(UserRoleEntity, { userType: type, userId: id, roleId });
|
|
121
|
+
em.create(UserRoleEntity, { userType: type, userId: id, roleId, source });
|
|
113
122
|
await em.flush();
|
|
114
123
|
}
|
|
115
|
-
/**
|
|
116
|
-
|
|
124
|
+
/**
|
|
125
|
+
* Remove a role from a user. No-op if the role or assignment is absent. With `{ source }` only
|
|
126
|
+
* that source's assignment goes; without it, the role is removed from every source.
|
|
127
|
+
*/
|
|
128
|
+
async removeRole(user, roleName, opts) {
|
|
117
129
|
const { type, id } = normalizeUserRef(user);
|
|
118
130
|
const roleId = await this.findRoleId(roleName);
|
|
119
131
|
if (!roleId)
|
|
120
132
|
return;
|
|
121
|
-
await this.em.fork().nativeDelete(UserRoleEntity, {
|
|
133
|
+
await this.em.fork().nativeDelete(UserRoleEntity, {
|
|
134
|
+
userType: type,
|
|
135
|
+
userId: id,
|
|
136
|
+
roleId,
|
|
137
|
+
...(opts?.source !== undefined ? { source: opts.source } : {}),
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* REPLACE the user's role assignments of ONE source (default `'manual'`) with exactly
|
|
142
|
+
* `roleNames` — e.g. an SSO/SCIM sync calls `setUserRoles(user, mappedRoles, { source: 'sso' })`
|
|
143
|
+
* on every login. Other sources' assignments are untouched, so a role held both manually and via
|
|
144
|
+
* SSO survives an SSO sync that drops it. Roles are created by name when missing. Transactional.
|
|
145
|
+
*/
|
|
146
|
+
async setUserRoles(user, roleNames, opts) {
|
|
147
|
+
const { type, id } = normalizeUserRef(user);
|
|
148
|
+
const source = opts?.source ?? DEFAULT_ROLE_SOURCE;
|
|
149
|
+
const roleIds = [];
|
|
150
|
+
for (const name of new Set(roleNames))
|
|
151
|
+
roleIds.push(await this.createRole(name));
|
|
152
|
+
await this.em.fork().transactional(async (tx) => {
|
|
153
|
+
await tx.nativeDelete(UserRoleEntity, { userType: type, userId: id, source });
|
|
154
|
+
for (const roleId of roleIds) {
|
|
155
|
+
tx.create(UserRoleEntity, { userType: type, userId: id, roleId, source });
|
|
156
|
+
}
|
|
157
|
+
await tx.flush();
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
/** Every role assignment of a user, one entry per `(role, source)`. */
|
|
161
|
+
async getRoleAssignments(user) {
|
|
162
|
+
const { type, id } = normalizeUserRef(user);
|
|
163
|
+
const em = this.em.fork();
|
|
164
|
+
const assignments = await em.find(UserRoleEntity, { userType: type, userId: id });
|
|
165
|
+
if (assignments.length === 0)
|
|
166
|
+
return [];
|
|
167
|
+
const roles = await em.find(RoleEntity, { id: { $in: assignments.map((a) => a.roleId) } });
|
|
168
|
+
const nameById = new Map(roles.map((r) => [r.id, r.name]));
|
|
169
|
+
return assignments
|
|
170
|
+
.filter((a) => nameById.has(a.roleId))
|
|
171
|
+
.map((a) => ({ role: nameById.get(a.roleId), source: a.source, tenantId: null }))
|
|
172
|
+
.sort((a, b) => a.role.localeCompare(b.role) || a.source.localeCompare(b.source));
|
|
122
173
|
}
|
|
123
174
|
// --- queries ---
|
|
124
175
|
/** The role names a user holds. */
|
|
@@ -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;AACzC,OAAO,
|
|
1
|
+
{"version":3,"file":"mikro-orm-authz.store.js","sourceRoot":"","sources":["../src/mikro-orm-authz.store.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dudousxd/nestjs-authz-mikro-orm",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.6.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": {
|
|
@@ -8,6 +8,19 @@
|
|
|
8
8
|
"url": "git+https://github.com/DavideCarvalho/nestjs-authz.git",
|
|
9
9
|
"directory": "packages/mikro-orm"
|
|
10
10
|
},
|
|
11
|
+
"homepage": "https://davidecarvalho.github.io/aviary/docs/authz",
|
|
12
|
+
"bugs": {
|
|
13
|
+
"url": "https://github.com/DavideCarvalho/nestjs-authz/issues"
|
|
14
|
+
},
|
|
15
|
+
"keywords": [
|
|
16
|
+
"nestjs",
|
|
17
|
+
"authorization",
|
|
18
|
+
"authz",
|
|
19
|
+
"rbac",
|
|
20
|
+
"roles",
|
|
21
|
+
"permissions",
|
|
22
|
+
"mikro-orm"
|
|
23
|
+
],
|
|
11
24
|
"author": "Davi Carvalho <davi@goflip.ai>",
|
|
12
25
|
"type": "module",
|
|
13
26
|
"main": "./dist/index.js",
|
|
@@ -25,7 +38,7 @@
|
|
|
25
38
|
"CHANGELOG.md"
|
|
26
39
|
],
|
|
27
40
|
"peerDependencies": {
|
|
28
|
-
"@dudousxd/nestjs-authz": ">=0.
|
|
41
|
+
"@dudousxd/nestjs-authz": ">=0.7.0",
|
|
29
42
|
"@mikro-orm/core": "^6.0.0 || ^7.0.0",
|
|
30
43
|
"@mikro-orm/nestjs": "^5.0.0 || ^6.0.0 || ^7.0.0",
|
|
31
44
|
"@nestjs/common": ">=10.0.0",
|
|
@@ -38,31 +51,22 @@
|
|
|
38
51
|
}
|
|
39
52
|
},
|
|
40
53
|
"devDependencies": {
|
|
41
|
-
"@mikro-orm/better-sqlite": "6.6.
|
|
42
|
-
"@mikro-orm/core": "6.6.
|
|
43
|
-
"@mikro-orm/nestjs": "
|
|
44
|
-
"@nestjs/common": "
|
|
45
|
-
"@nestjs/core": "
|
|
46
|
-
"@nestjs/testing": "
|
|
47
|
-
"@types/node": "
|
|
48
|
-
"reflect-metadata": "
|
|
49
|
-
"rxjs": "
|
|
50
|
-
"typescript": "
|
|
51
|
-
"vitest": "
|
|
52
|
-
"@dudousxd/nestjs-authz": "^0.
|
|
54
|
+
"@mikro-orm/better-sqlite": "6.6.16",
|
|
55
|
+
"@mikro-orm/core": "6.6.16",
|
|
56
|
+
"@mikro-orm/nestjs": "6.1.2",
|
|
57
|
+
"@nestjs/common": "12.0.1",
|
|
58
|
+
"@nestjs/core": "12.0.1",
|
|
59
|
+
"@nestjs/testing": "12.0.1",
|
|
60
|
+
"@types/node": "20.19.43",
|
|
61
|
+
"reflect-metadata": "0.2.2",
|
|
62
|
+
"rxjs": "7.8.2",
|
|
63
|
+
"typescript": "5.9.3",
|
|
64
|
+
"vitest": "3.2.7",
|
|
65
|
+
"@dudousxd/nestjs-authz": "^0.7.0"
|
|
53
66
|
},
|
|
54
67
|
"engines": {
|
|
55
68
|
"node": ">=20"
|
|
56
69
|
},
|
|
57
|
-
"keywords": [
|
|
58
|
-
"nestjs",
|
|
59
|
-
"authorization",
|
|
60
|
-
"authz",
|
|
61
|
-
"rbac",
|
|
62
|
-
"roles",
|
|
63
|
-
"permissions",
|
|
64
|
-
"mikro-orm"
|
|
65
|
-
],
|
|
66
70
|
"scripts": {
|
|
67
71
|
"build": "tsc -p tsconfig.json",
|
|
68
72
|
"test": "vitest run --passWithNoTests",
|