@mostajs/rbac 2.4.1 → 2.5.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.
@@ -8,6 +8,11 @@ export interface ResolveAccountOptions {
8
8
  plan?: string;
9
9
  /** Status on auto-create (default: 'active'). */
10
10
  status?: string;
11
+ /** Parent Account ID (multi-tenant β model — set on auto-create only).
12
+ * Si défini, le compte personnel créé devient un child du portal tenant
13
+ * → visible par le middleware row-level d'Octonet via expandTenant.
14
+ * Pas appliqué aux comptes déjà existants (pas de re-parenting). */
15
+ parent?: string;
11
16
  /** Disable auto-create — return null if not found. */
12
17
  noAutoCreate?: boolean;
13
18
  }
@@ -1 +1 @@
1
- {"version":3,"file":"account-resolver.d.ts","sourceRoot":"","sources":["../../lib/account-resolver.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AAG5C,MAAM,WAAW,qBAAqB;IACpC,6EAA6E;IAC7E,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,mEAAmE;IACnE,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,uDAAuD;IACvD,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,iDAAiD;IACjD,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,sDAAsD;IACtD,YAAY,CAAC,EAAE,OAAO,CAAA;CACvB;AAED;;;;;;;;GAQG;AACH,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,QAAQ,EACjB,MAAM,EAAE,MAAM,EACd,SAAS,CAAC,EAAE,MAAM,EAClB,OAAO,GAAE,qBAA0B,GAClC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAuBxB"}
1
+ {"version":3,"file":"account-resolver.d.ts","sourceRoot":"","sources":["../../lib/account-resolver.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AAG5C,MAAM,WAAW,qBAAqB;IACpC,6EAA6E;IAC7E,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,mEAAmE;IACnE,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,uDAAuD;IACvD,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,iDAAiD;IACjD,MAAM,CAAC,EAAE,MAAM,CAAA;IACf;;;yEAGqE;IACrE,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,sDAAsD;IACtD,YAAY,CAAC,EAAE,OAAO,CAAA;CACvB;AAED;;;;;;;;GAQG;AACH,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,QAAQ,EACjB,MAAM,EAAE,MAAM,EACd,SAAS,CAAC,EAAE,MAAM,EAClB,OAAO,GAAE,qBAA0B,GAClC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAwBxB"}
@@ -31,11 +31,7 @@ export async function resolveUserAccountId(dialect, userId, userEmail, options =
31
31
  return any.id;
32
32
  if (options.noAutoCreate)
33
33
  return null;
34
- const created = await accountRepo.create({
35
- name: options.name || `${userEmail || userId}-${type}`,
36
- type, plan, status,
37
- owner: userId,
38
- });
34
+ const created = await accountRepo.create(Object.assign({ name: options.name || `${userEmail || userId}-${type}`, type, plan, status, owner: userId }, (options.parent ? { parent: options.parent } : {})));
39
35
  return created.id;
40
36
  }
41
37
  //# sourceMappingURL=account-resolver.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"account-resolver.js","sourceRoot":"","sources":["../../lib/account-resolver.ts"],"names":[],"mappings":"AAAA,mCAAmC;AACnC,EAAE;AACF,oEAAoE;AACpE,mEAAmE;AACnE,qEAAqE;AACrE,gEAAgE;AAChE,EAAE;AACF,0CAA0C;AAG1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAA;AAetE;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,OAAiB,EACjB,MAAc,EACd,SAAkB,EAClB,UAAiC,EAAE;IAEnC,MAAM,WAAW,GAAG,IAAI,iBAAiB,CAAC,OAAO,CAAC,CAAA;IAElD,MAAM,IAAI,GAAK,OAAO,CAAC,IAAI,IAAM,UAAU,CAAA;IAC3C,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,QAAQ,CAAA;IACzC,MAAM,IAAI,GAAK,OAAO,CAAC,IAAI,IAAM,MAAM,CAAA;IAEvC,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAS,CAAC,CAAA;IAC1E,IAAK,QAAgB,aAAhB,QAAQ,uBAAR,QAAQ,CAAU,EAAE;QAAE,OAAQ,QAAgB,CAAC,EAAE,CAAA;IAEtD,sEAAsE;IACtE,yEAAyE;IACzE,MAAM,GAAG,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,MAAM,EAAS,CAAC,CAAA;IAC/D,IAAK,GAAW,aAAX,GAAG,uBAAH,GAAG,CAAU,EAAE;QAAE,OAAQ,GAAW,CAAC,EAAE,CAAA;IAE5C,IAAI,OAAO,CAAC,YAAY;QAAE,OAAO,IAAI,CAAA;IAErC,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,MAAM,CAAC;QACvC,IAAI,EAAI,OAAO,CAAC,IAAI,IAAI,GAAG,SAAS,IAAI,MAAM,IAAI,IAAI,EAAE;QACxD,IAAI,EAAE,IAAI,EAAE,MAAM;QAClB,KAAK,EAAG,MAAM;KACR,CAAC,CAAA;IACT,OAAQ,OAAe,CAAC,EAAE,CAAA;AAC5B,CAAC"}
1
+ {"version":3,"file":"account-resolver.js","sourceRoot":"","sources":["../../lib/account-resolver.ts"],"names":[],"mappings":"AAAA,mCAAmC;AACnC,EAAE;AACF,oEAAoE;AACpE,mEAAmE;AACnE,qEAAqE;AACrE,gEAAgE;AAChE,EAAE;AACF,0CAA0C;AAG1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAA;AAoBtE;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,OAAiB,EACjB,MAAc,EACd,SAAkB,EAClB,UAAiC,EAAE;IAEnC,MAAM,WAAW,GAAG,IAAI,iBAAiB,CAAC,OAAO,CAAC,CAAA;IAElD,MAAM,IAAI,GAAK,OAAO,CAAC,IAAI,IAAM,UAAU,CAAA;IAC3C,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,QAAQ,CAAA;IACzC,MAAM,IAAI,GAAK,OAAO,CAAC,IAAI,IAAM,MAAM,CAAA;IAEvC,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAS,CAAC,CAAA;IAC1E,IAAK,QAAgB,aAAhB,QAAQ,uBAAR,QAAQ,CAAU,EAAE;QAAE,OAAQ,QAAgB,CAAC,EAAE,CAAA;IAEtD,sEAAsE;IACtE,yEAAyE;IACzE,MAAM,GAAG,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,MAAM,EAAS,CAAC,CAAA;IAC/D,IAAK,GAAW,aAAX,GAAG,uBAAH,GAAG,CAAU,EAAE;QAAE,OAAQ,GAAW,CAAC,EAAE,CAAA;IAE5C,IAAI,OAAO,CAAC,YAAY;QAAE,OAAO,IAAI,CAAA;IAErC,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,MAAM,CAAC,gBACvC,IAAI,EAAI,OAAO,CAAC,IAAI,IAAI,GAAG,SAAS,IAAI,MAAM,IAAI,IAAI,EAAE,EACxD,IAAI,EAAE,IAAI,EAAE,MAAM,EAClB,KAAK,EAAG,MAAM,IACX,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAC/C,CAAC,CAAA;IACT,OAAQ,OAAe,CAAC,EAAE,CAAA;AAC5B,CAAC"}
@@ -1,6 +1,18 @@
1
1
  import { BaseRepository } from '@mostajs/orm';
2
2
  import type { IDialect, FilterQuery, QueryOptions } from '@mostajs/orm';
3
3
  import type { UserDTO } from '../types/index';
4
+ export interface FindOrCreatePasswordlessOptions {
5
+ /** Prénom — défaut : local-part de l'email. */
6
+ firstName?: string;
7
+ /** Nom — défaut : '·' (placeholder visible mais non vide). */
8
+ lastName?: string;
9
+ /** Locale — défaut : 'fr'. */
10
+ locale?: string;
11
+ /** Téléphone optionnel. */
12
+ phone?: string;
13
+ /** verified par défaut true (l'utilisateur a prouvé l'email via magic-link). */
14
+ verified?: boolean;
15
+ }
4
16
  export declare class UserRepository extends BaseRepository<UserDTO> {
5
17
  constructor(dialect: IDialect);
6
18
  /** List users without password field */
@@ -9,6 +21,25 @@ export declare class UserRepository extends BaseRepository<UserDTO> {
9
21
  findByIdSafe(id: string): Promise<UserDTO | null>;
10
22
  /** Find user by email (for authentication) */
11
23
  findByEmail(email: string): Promise<UserDTO | null>;
24
+ /**
25
+ * Lookup-or-create idempotent pour les flux **magic-link / OAuth /
26
+ * passwordless** où l'utilisateur n'a jamais à saisir de password.
27
+ *
28
+ * - normalise l'email (lowercase + trim)
29
+ * - valide le format (regex minimaliste)
30
+ * - retourne null si email invalide
31
+ * - retourne le user existant sinon
32
+ * - sinon crée avec un password placeholder cryptographiquement sûr,
33
+ * firstName=local-part de l'email, lastName='·' (les required:true du
34
+ * schema sont respectés), `verified: true` (l'utilisateur a prouvé
35
+ * l'email via le canal magic-link)
36
+ *
37
+ * Le password placeholder ne doit JAMAIS être utilisé pour authentifier
38
+ * — il sert uniquement à satisfaire le NOT NULL du schema. Si l'app
39
+ * permet plus tard l'auth password, l'utilisateur passera par
40
+ * password-reset pour s'en attribuer un valide.
41
+ */
42
+ findOrCreatePasswordless(email: string, opts?: FindOrCreatePasswordlessOptions): Promise<UserDTO | null>;
12
43
  /** Update lastLoginAt timestamp */
13
44
  updateLastLogin(id: string): Promise<void>;
14
45
  /** Find user by ID with roles populated */
@@ -1 +1 @@
1
- {"version":3,"file":"user.repository.d.ts","sourceRoot":"","sources":["../../repositories/user.repository.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAE7C,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AACvE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAA;AAE7C,qBAAa,cAAe,SAAQ,cAAc,CAAC,OAAO,CAAC;gBAC7C,OAAO,EAAE,QAAQ;IAI7B,wCAAwC;IAClC,WAAW,CAAC,MAAM,GAAE,WAAgB,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAIvF,gDAAgD;IAC1C,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAIvD,8CAA8C;IACxC,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAIzD,mCAAmC;IAC7B,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIhD,2CAA2C;IACrC,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAI5D,wDAAwD;IAClD,gBAAgB,CAAC,MAAM,GAAE,WAAgB,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAI5F,yCAAyC;IACnC,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAIlD,2BAA2B;IACrB,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAItE,gCAAgC;IAC1B,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;CAG1E"}
1
+ {"version":3,"file":"user.repository.d.ts","sourceRoot":"","sources":["../../repositories/user.repository.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAE7C,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AACvE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAA;AAI7C,MAAM,WAAW,+BAA+B;IAC9C,+CAA+C;IAC/C,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,8DAA8D;IAC9D,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,8BAA8B;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,2BAA2B;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,gFAAgF;IAChF,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED,qBAAa,cAAe,SAAQ,cAAc,CAAC,OAAO,CAAC;gBAC7C,OAAO,EAAE,QAAQ;IAI7B,wCAAwC;IAClC,WAAW,CAAC,MAAM,GAAE,WAAgB,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAIvF,gDAAgD;IAC1C,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAIvD,8CAA8C;IACxC,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAIzD;;;;;;;;;;;;;;;;;OAiBG;IACG,wBAAwB,CAC5B,KAAK,EAAE,MAAM,EACb,IAAI,CAAC,EAAE,+BAA+B,GACrC,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAoB1B,mCAAmC;IAC7B,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIhD,2CAA2C;IACrC,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAI5D,wDAAwD;IAClD,gBAAgB,CAAC,MAAM,GAAE,WAAgB,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAI5F,yCAAyC;IACnC,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAIlD,2BAA2B;IACrB,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAItE,gCAAgC;IAC1B,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;CAG1E"}
@@ -1,7 +1,9 @@
1
1
  // @mostajs/rbac — UserRepository
2
2
  // Author: Dr Hamid MADANI drmdh@msn.com
3
+ import { randomBytes } from 'node:crypto';
3
4
  import { BaseRepository } from '@mostajs/orm';
4
5
  import { UserSchema } from '../schemas/user.schema.js';
6
+ const EMAIL_REGEX = /^[^@\s]+@[^@\s]+\.[^@\s]+$/;
5
7
  export class UserRepository extends BaseRepository {
6
8
  constructor(dialect) {
7
9
  super(UserSchema, dialect);
@@ -18,6 +20,46 @@ export class UserRepository extends BaseRepository {
18
20
  async findByEmail(email) {
19
21
  return this.findOne({ email: email.toLowerCase() });
20
22
  }
23
+ /**
24
+ * Lookup-or-create idempotent pour les flux **magic-link / OAuth /
25
+ * passwordless** où l'utilisateur n'a jamais à saisir de password.
26
+ *
27
+ * - normalise l'email (lowercase + trim)
28
+ * - valide le format (regex minimaliste)
29
+ * - retourne null si email invalide
30
+ * - retourne le user existant sinon
31
+ * - sinon crée avec un password placeholder cryptographiquement sûr,
32
+ * firstName=local-part de l'email, lastName='·' (les required:true du
33
+ * schema sont respectés), `verified: true` (l'utilisateur a prouvé
34
+ * l'email via le canal magic-link)
35
+ *
36
+ * Le password placeholder ne doit JAMAIS être utilisé pour authentifier
37
+ * — il sert uniquement à satisfaire le NOT NULL du schema. Si l'app
38
+ * permet plus tard l'auth password, l'utilisateur passera par
39
+ * password-reset pour s'en attribuer un valide.
40
+ */
41
+ async findOrCreatePasswordless(email, opts) {
42
+ var _a, _b, _c, _d;
43
+ const e = String(email !== null && email !== void 0 ? email : '').toLowerCase().trim();
44
+ if (!e || !EMAIL_REGEX.test(e))
45
+ return null;
46
+ const existing = await this.findByEmail(e);
47
+ if (existing)
48
+ return existing;
49
+ const localPart = e.split('@')[0] || 'user';
50
+ const placeholder = '!passwordless-' + randomBytes(8).toString('hex');
51
+ await this.create({
52
+ email: e,
53
+ password: placeholder,
54
+ firstName: (_a = opts === null || opts === void 0 ? void 0 : opts.firstName) !== null && _a !== void 0 ? _a : localPart,
55
+ lastName: (_b = opts === null || opts === void 0 ? void 0 : opts.lastName) !== null && _b !== void 0 ? _b : '·',
56
+ phone: opts === null || opts === void 0 ? void 0 : opts.phone,
57
+ locale: (_c = opts === null || opts === void 0 ? void 0 : opts.locale) !== null && _c !== void 0 ? _c : 'fr',
58
+ status: 'active',
59
+ verified: (_d = opts === null || opts === void 0 ? void 0 : opts.verified) !== null && _d !== void 0 ? _d : true,
60
+ });
61
+ return this.findByEmail(e);
62
+ }
21
63
  /** Update lastLoginAt timestamp */
22
64
  async updateLastLogin(id) {
23
65
  await this.update(id, { lastLoginAt: new Date() });
@@ -1 +1 @@
1
- {"version":3,"file":"user.repository.js","sourceRoot":"","sources":["../../repositories/user.repository.ts"],"names":[],"mappings":"AAAA,iCAAiC;AACjC,wCAAwC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AAInD,MAAM,OAAO,cAAe,SAAQ,cAAuB;IACzD,YAAY,OAAiB;QAC3B,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,CAAA;IAC5B,CAAC;IAED,wCAAwC;IACxC,KAAK,CAAC,WAAW,CAAC,SAAsB,EAAE,EAAE,OAAsB;QAChE,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,kCAAO,OAAO,KAAE,OAAO,EAAE,CAAC,UAAU,CAAC,IAAG,CAAA;IACpE,CAAC;IAED,gDAAgD;IAChD,KAAK,CAAC,YAAY,CAAC,EAAU;QAC3B,OAAO,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,CAAA;IACrD,CAAC;IAED,8CAA8C;IAC9C,KAAK,CAAC,WAAW,CAAC,KAAa;QAC7B,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC,CAAA;IACrD,CAAC;IAED,mCAAmC;IACnC,KAAK,CAAC,eAAe,CAAC,EAAU;QAC9B,MAAM,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,WAAW,EAAE,IAAI,IAAI,EAAE,EAAS,CAAC,CAAA;IAC3D,CAAC;IAED,2CAA2C;IAC3C,KAAK,CAAC,iBAAiB,CAAC,EAAU;QAChC,OAAO,IAAI,CAAC,qBAAqB,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAA;IAClD,CAAC;IAED,wDAAwD;IACxD,KAAK,CAAC,gBAAgB,CAAC,SAAsB,EAAE,EAAE,OAAsB;QACrE,OAAO,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,kCAAO,OAAO,KAAE,OAAO,EAAE,CAAC,UAAU,CAAC,IAAG,CAAA;IACzF,CAAC;IAED,yCAAyC;IACzC,KAAK,CAAC,WAAW,CAAC,MAAc;QAC9B,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAA;IACtC,CAAC;IAED,2BAA2B;IAC3B,KAAK,CAAC,OAAO,CAAC,MAAc,EAAE,MAAc;QAC1C,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAA;IAC/C,CAAC;IAED,gCAAgC;IAChC,KAAK,CAAC,UAAU,CAAC,MAAc,EAAE,MAAc;QAC7C,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAA;IAC3C,CAAC;CACF"}
1
+ {"version":3,"file":"user.repository.js","sourceRoot":"","sources":["../../repositories/user.repository.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mostajs/rbac",
3
- "version": "2.4.1",
3
+ "version": "2.5.0",
4
4
  "description": "RBAC — User/Role/Permission schemas, repos, management UI, API handlers",
5
5
  "author": "Dr Hamid MADANI <drmdh@msn.com>",
6
6
  "license": "AGPL-3.0-or-later",