@ackplus/nest-auth 1.1.18 → 1.1.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.
Files changed (27) hide show
  1. package/package.json +1 -1
  2. package/src/lib/admin-console/static/index.html +697 -177
  3. package/src/lib/auth/controllers/mfa.controller.js +5 -5
  4. package/src/lib/auth/dto/responses/mfa-status.response.dto.d.ts +2 -2
  5. package/src/lib/auth/dto/responses/mfa-status.response.dto.d.ts.map +1 -1
  6. package/src/lib/auth/dto/responses/mfa-status.response.dto.js +5 -5
  7. package/src/lib/auth/guards/auth.guard.d.ts.map +1 -1
  8. package/src/lib/auth/guards/auth.guard.js +28 -13
  9. package/src/lib/auth/services/auth.service.d.ts.map +1 -1
  10. package/src/lib/auth/services/auth.service.js +188 -61
  11. package/src/lib/auth/services/mfa.service.d.ts.map +1 -1
  12. package/src/lib/auth/services/mfa.service.js +19 -8
  13. package/src/lib/auth.constants.d.ts +178 -8
  14. package/src/lib/auth.constants.d.ts.map +1 -1
  15. package/src/lib/auth.constants.js +139 -10
  16. package/src/lib/core/interfaces/auth-module-options.interface.d.ts +170 -0
  17. package/src/lib/core/interfaces/auth-module-options.interface.d.ts.map +1 -1
  18. package/src/lib/core/interfaces/session-options.interface.d.ts +52 -0
  19. package/src/lib/core/interfaces/session-options.interface.d.ts.map +1 -1
  20. package/src/lib/core/interfaces/token-payload.interface.d.ts +14 -6
  21. package/src/lib/core/interfaces/token-payload.interface.d.ts.map +1 -1
  22. package/src/lib/session/services/session-manager.service.d.ts +3 -3
  23. package/src/lib/session/services/session-manager.service.d.ts.map +1 -1
  24. package/src/lib/session/services/session-manager.service.js +27 -17
  25. package/src/lib/user/services/user.service.d.ts +3 -1
  26. package/src/lib/user/services/user.service.d.ts.map +1 -1
  27. package/src/lib/user/services/user.service.js +17 -4
@@ -15,6 +15,19 @@ export interface JWTTokenPayload {
15
15
  exp?: number;
16
16
  iat?: number;
17
17
  }
18
+ /**
19
+ * Data stored in the session (database-side).
20
+ * This data is NOT sent to the client and can include sensitive information.
21
+ */
22
+ export interface SessionDataPayload {
23
+ user: NestAuthUser;
24
+ isMfaVerified: boolean;
25
+ isMfaEnabled?: boolean;
26
+ roles: Partial<NestAuthRole>[];
27
+ permissions: string[];
28
+ /** Allow custom fields to be added */
29
+ [key: string]: any;
30
+ }
18
31
  export interface SessionPayload {
19
32
  id?: string;
20
33
  userId?: string;
@@ -22,12 +35,7 @@ export interface SessionPayload {
22
35
  userAgent?: string;
23
36
  ipAddress?: string;
24
37
  deviceName?: string;
25
- data?: {
26
- user: NestAuthUser;
27
- isMfaVerified: boolean;
28
- roles: Partial<NestAuthRole>[];
29
- permissions: string[];
30
- };
38
+ data?: SessionDataPayload;
31
39
  expiresAt?: Date;
32
40
  lastActive: Date;
33
41
  createdAt?: Date;
@@ -1 +1 @@
1
- {"version":3,"file":"token-payload.interface.d.ts","sourceRoot":"","sources":["../../../../../../../packages/nest-auth/src/lib/core/interfaces/token-payload.interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAE/D,MAAM,WAAW,eAAe;IAC5B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,KAAK,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;IAC5B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,cAAc;IAC3B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE;QACH,IAAI,EAAE,YAAY,CAAC;QACnB,aAAa,EAAE,OAAO,CAAC;QACvB,KAAK,EAAE,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;QAC/B,WAAW,EAAE,MAAM,EAAE,CAAC;KACzB,CAAC;IACF,SAAS,CAAC,EAAE,IAAI,CAAC;IACjB,UAAU,EAAE,IAAI,CAAC;IACjB,SAAS,CAAC,EAAE,IAAI,CAAC;IACjB,SAAS,CAAC,EAAE,IAAI,CAAC;CACpB;AAED,MAAM,WAAW,uBAAuB;IACpC,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,YAAY,CAAC;CACvB"}
1
+ {"version":3,"file":"token-payload.interface.d.ts","sourceRoot":"","sources":["../../../../../../../packages/nest-auth/src/lib/core/interfaces/token-payload.interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAE/D,MAAM,WAAW,eAAe;IAC5B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,KAAK,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;IAC5B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IAC/B,IAAI,EAAE,YAAY,CAAC;IACnB,aAAa,EAAE,OAAO,CAAC;IACvB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,KAAK,EAAE,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;IAC/B,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,sCAAsC;IACtC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACtB;AAED,MAAM,WAAW,cAAc;IAC3B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,kBAAkB,CAAC;IAC1B,SAAS,CAAC,EAAE,IAAI,CAAC;IACjB,UAAU,EAAE,IAAI,CAAC;IACjB,SAAS,CAAC,EAAE,IAAI,CAAC;IACjB,SAAS,CAAC,EAAE,IAAI,CAAC;CACpB;AAED,MAAM,WAAW,uBAAuB;IACpC,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,YAAY,CAAC;CACvB"}
@@ -87,10 +87,10 @@ export declare class SessionManagerService {
87
87
  isMfaVerified?: boolean;
88
88
  }): Promise<NestAuthSession>;
89
89
  /**
90
- * Create new session from existing session (for refresh)
91
- * For backward compatibility with AuthService
90
+ * Refresh an existing session
91
+ * Updates expiration and last active time
92
92
  */
93
- createSessionFromSession(session: NestAuthSession): Promise<NestAuthSession>;
93
+ refreshSession(session: NestAuthSession): Promise<NestAuthSession>;
94
94
  /**
95
95
  * Get current active sessions for a user
96
96
  * For backward compatibility with AuthService
@@ -1 +1 @@
1
- {"version":3,"file":"session-manager.service.d.ts","sourceRoot":"","sources":["../../../../../../../packages/nest-auth/src/lib/session/services/session-manager.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,4CAA4C,CAAC;AAChF,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAK7D,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAI/D,eAAO,MAAM,kBAAkB,uBAAuB,CAAC;AAEvD;;;GAGG;AACH,qBACa,qBAAqB;IAO1B,OAAO,CAAC,QAAQ,CAAC,UAAU;IAN/B,OAAO,CAAC,OAAO,CAAoB;IACnC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAS;IAC5C,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAU;gBAIvB,UAAU,EAAE,kBAAkB;IAOnD;;OAEG;IACG,aAAa,CAAC,OAAO,EAAE;QACzB,MAAM,EAAE,MAAM,CAAC;QACf,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,IAAI,CAAC,EAAE,GAAG,CAAC;QACX,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,SAAS,CAAC,EAAE,MAAM,CAAC;KACtB,GAAG,OAAO,CAAC,eAAe,CAAC;IAqB5B;;OAEG;IACG,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,cAAc,UAAO,GAAG,OAAO,CAAC,eAAe,CAAC;IAqBpF;;OAEG;IACG,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAIjE;;OAEG;IACG,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAInE;;OAEG;IACG,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,OAAO,CAAC,eAAe,CAAC;IAInG;;OAEG;IACG,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIrD;;OAEG;IACG,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI1D;;OAEG;IACG,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAUlF;;OAEG;IACG,sBAAsB,IAAI,OAAO,CAAC,MAAM,CAAC;IAI/C;;OAEG;IACG,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAKnF;;OAEG;IACG,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC;IAQzE;;OAEG;IACG,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAK7D;;OAEG;YACW,kBAAkB;IAmBhC;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAM3B;;OAEG;IACH,OAAO,CAAC,SAAS;IAKjB;;;OAGG;IACG,qBAAqB,CAAC,IAAI,EAAE,YAAY,EAAE,SAAS,GAAE;QAAE,aAAa,CAAC,EAAE,OAAO,CAAA;KAAO,GAAG,OAAO,CAAC,eAAe,CAAC;IA0BtH;;;OAGG;IACG,wBAAwB,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC;IAWlF;;;OAGG;IACG,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;CAGvE"}
1
+ {"version":3,"file":"session-manager.service.d.ts","sourceRoot":"","sources":["../../../../../../../packages/nest-auth/src/lib/session/services/session-manager.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,4CAA4C,CAAC;AAChF,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAK7D,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAI/D,eAAO,MAAM,kBAAkB,uBAAuB,CAAC;AAEvD;;;GAGG;AACH,qBACa,qBAAqB;IAO1B,OAAO,CAAC,QAAQ,CAAC,UAAU;IAN/B,OAAO,CAAC,OAAO,CAAoB;IACnC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAS;IAC5C,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAU;gBAIvB,UAAU,EAAE,kBAAkB;IAOnD;;OAEG;IACG,aAAa,CAAC,OAAO,EAAE;QACzB,MAAM,EAAE,MAAM,CAAC;QACf,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,IAAI,CAAC,EAAE,GAAG,CAAC;QACX,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,SAAS,CAAC,EAAE,MAAM,CAAC;KACtB,GAAG,OAAO,CAAC,eAAe,CAAC;IAqB5B;;OAEG;IACG,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,cAAc,UAAO,GAAG,OAAO,CAAC,eAAe,CAAC;IAqBpF;;OAEG;IACG,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAIjE;;OAEG;IACG,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAInE;;OAEG;IACG,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,OAAO,CAAC,eAAe,CAAC;IAInG;;OAEG;IACG,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIrD;;OAEG;IACG,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI1D;;OAEG;IACG,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAUlF;;OAEG;IACG,sBAAsB,IAAI,OAAO,CAAC,MAAM,CAAC;IAI/C;;OAEG;IACG,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAKnF;;OAEG;IACG,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC;IAQzE;;OAEG;IACG,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAK7D;;OAEG;YACW,kBAAkB;IAmBhC;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAM3B;;OAEG;IACH,OAAO,CAAC,SAAS;IAKjB;;;OAGG;IACG,qBAAqB,CAAC,IAAI,EAAE,YAAY,EAAE,SAAS,GAAE;QAAE,aAAa,CAAC,EAAE,OAAO,CAAA;KAAO,GAAG,OAAO,CAAC,eAAe,CAAC;IAkCtH;;;OAGG;IACG,cAAc,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC;IAiBxE;;;OAGG;IACG,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;CAGvE"}
@@ -177,33 +177,43 @@ let SessionManagerService = class SessionManagerService {
177
177
  }
178
178
  const roles = await user.getRoles();
179
179
  const permissions = await user.getPermissions();
180
+ // Build default session data
181
+ let sessionData = {
182
+ user,
183
+ isMfaVerified,
184
+ roles,
185
+ permissions,
186
+ };
187
+ // Apply custom session data hook if configured
188
+ if (this.options.session?.customizeSessionData) {
189
+ sessionData = await this.options.session.customizeSessionData(sessionData, user);
190
+ }
180
191
  // Create session using createSession method
181
192
  return await this.createSession({
182
193
  userId: user.id,
183
- data: {
184
- user,
185
- isMfaVerified,
186
- roles,
187
- permissions,
188
- },
194
+ data: sessionData,
189
195
  userAgent: [browser, deviceName].join(' - '),
190
196
  ipAddress,
191
197
  deviceName,
192
198
  });
193
199
  }
194
200
  /**
195
- * Create new session from existing session (for refresh)
196
- * For backward compatibility with AuthService
201
+ * Refresh an existing session
202
+ * Updates expiration and last active time
197
203
  */
198
- async createSessionFromSession(session) {
199
- return await this.createSession({
200
- userId: session.userId,
201
- refreshToken: session.refreshToken,
202
- data: session.data,
203
- userAgent: session.userAgent,
204
- deviceName: session.deviceName,
205
- ipAddress: session.ipAddress,
206
- });
204
+ async refreshSession(session) {
205
+ const updates = {
206
+ expiresAt: this.calculateExpiration(),
207
+ lastActive: new Date(),
208
+ };
209
+ // Apply onRefreshed hook if configured
210
+ if (this.options.session?.onRefreshed) {
211
+ // We need to pass the old session (current state) and the new session (future state)
212
+ // Since we are updating in place, we can construct the "new" session object for the hook
213
+ const newSession = { ...session, ...updates };
214
+ await this.options.session.onRefreshed(session, newSession);
215
+ }
216
+ return await this.updateSession(session.id, updates);
207
217
  }
208
218
  /**
209
219
  * Get current active sessions for a user
@@ -3,12 +3,14 @@ import { NestAuthUser } from '../entities/user.entity';
3
3
  import { EventEmitter2 } from '@nestjs/event-emitter';
4
4
  import { TenantService } from '../../tenant';
5
5
  import { DebugLoggerService } from '../../core/services/debug-logger.service';
6
+ import { AuthConfigService } from '../../core/services/auth-config.service';
6
7
  export declare class UserService {
7
8
  private userRepository;
8
9
  private eventEmitter;
9
10
  private tenantService;
10
11
  private debugLogger;
11
- constructor(userRepository: Repository<NestAuthUser>, eventEmitter: EventEmitter2, tenantService: TenantService, debugLogger: DebugLoggerService);
12
+ private authConfigService;
13
+ constructor(userRepository: Repository<NestAuthUser>, eventEmitter: EventEmitter2, tenantService: TenantService, debugLogger: DebugLoggerService, authConfigService: AuthConfigService);
12
14
  createUser(data: Partial<NestAuthUser>): Promise<NestAuthUser>;
13
15
  getUserById(id: string, options?: FindOneOptions<NestAuthUser>): Promise<NestAuthUser>;
14
16
  getUserByEmail(email: string, tenantId?: string, options?: FindOneOptions<NestAuthUser>): Promise<NestAuthUser>;
@@ -1 +1 @@
1
- {"version":3,"file":"user.service.d.ts","sourceRoot":"","sources":["../../../../../../../packages/nest-auth/src/lib/user/services/user.service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,cAAc,EAAe,UAAU,EAAE,MAAM,SAAS,CAAC;AACnF,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAKtD,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,0CAA0C,CAAC;AAE9E,qBACa,WAAW;IAGhB,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,WAAW;gBAHX,cAAc,EAAE,UAAU,CAAC,YAAY,CAAC,EACxC,YAAY,EAAE,aAAa,EAC3B,aAAa,EAAE,aAAa,EAC5B,WAAW,EAAE,kBAAkB;IAGrC,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC;IAoF9D,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,CAAC,YAAY,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC;IAsBtF,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,CAAC,YAAY,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC;IA6B/G,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,CAAC,YAAY,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC;IA0B/G,QAAQ,CAAC,OAAO,CAAC,EAAE,eAAe,CAAC,YAAY,CAAC,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAI1E,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,eAAe,CAAC,YAAY,CAAC,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAepG,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC;IA+E1E,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAoCrC,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,gBAAgB,CAAC,EAAE,OAAO,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAqB5F,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,gBAAgB,CAAC,EAAE,OAAO,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAwB9F,gBAAgB,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,OAAO,CAAC,YAAY,CAAC;IActE,kBAAkB,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC;IAkBpF,UAAU,CAAC,OAAO,CAAC,EAAE,eAAe,CAAC,YAAY,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IAIpE,gBAAgB,CAAC,OAAO,CAAC,EAAE,eAAe,CAAC,YAAY,CAAC,GAAG,OAAO,CAAC,CAAC,YAAY,EAAE,EAAE,MAAM,CAAC,CAAC;IAI5F,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;CAajF"}
1
+ {"version":3,"file":"user.service.d.ts","sourceRoot":"","sources":["../../../../../../../packages/nest-auth/src/lib/user/services/user.service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,cAAc,EAAe,UAAU,EAAE,MAAM,SAAS,CAAC;AACnF,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAKtD,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,0CAA0C,CAAC;AAC9E,OAAO,EAAE,iBAAiB,EAAE,MAAM,yCAAyC,CAAC;AAE5E,qBACa,WAAW;IAGhB,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,iBAAiB;gBAJjB,cAAc,EAAE,UAAU,CAAC,YAAY,CAAC,EACxC,YAAY,EAAE,aAAa,EAC3B,aAAa,EAAE,aAAa,EAC5B,WAAW,EAAE,kBAAkB,EAC/B,iBAAiB,EAAE,iBAAiB;IAG1C,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC;IAiG9D,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,CAAC,YAAY,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC;IAsBtF,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,CAAC,YAAY,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC;IA6B/G,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,CAAC,YAAY,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC;IA0B/G,QAAQ,CAAC,OAAO,CAAC,EAAE,eAAe,CAAC,YAAY,CAAC,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAI1E,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,eAAe,CAAC,YAAY,CAAC,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAepG,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC;IA+E1E,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAoCrC,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,gBAAgB,CAAC,EAAE,OAAO,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAqB5F,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,gBAAgB,CAAC,EAAE,OAAO,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAwB9F,gBAAgB,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,OAAO,CAAC,YAAY,CAAC;IActE,kBAAkB,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC;IAkBpF,UAAU,CAAC,OAAO,CAAC,EAAE,eAAe,CAAC,YAAY,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IAIpE,gBAAgB,CAAC,OAAO,CAAC,EAAE,eAAe,CAAC,YAAY,CAAC,GAAG,OAAO,CAAC,CAAC,YAAY,EAAE,EAAE,MAAM,CAAC,CAAC;IAI5F,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;CAajF"}
@@ -13,12 +13,14 @@ const user_deleted_event_1 = require("../events/user-deleted.event");
13
13
  const user_created_event_1 = require("../events/user-created.event");
14
14
  const tenant_1 = require("../../tenant");
15
15
  const debug_logger_service_1 = require("../../core/services/debug-logger.service");
16
+ const auth_config_service_1 = require("../../core/services/auth-config.service");
16
17
  let UserService = class UserService {
17
- constructor(userRepository, eventEmitter, tenantService, debugLogger) {
18
+ constructor(userRepository, eventEmitter, tenantService, debugLogger, authConfigService) {
18
19
  this.userRepository = userRepository;
19
20
  this.eventEmitter = eventEmitter;
20
21
  this.tenantService = tenantService;
21
22
  this.debugLogger = debugLogger;
23
+ this.authConfigService = authConfigService;
22
24
  }
23
25
  async createUser(data) {
24
26
  this.debugLogger.logFunctionEntry('createUser', 'UserService', { email: data.email, phone: data.phone, hasPassword: !!data.password });
@@ -57,11 +59,17 @@ let UserService = class UserService {
57
59
  });
58
60
  }
59
61
  this.debugLogger.debug('Creating new user', 'UserService', { email: !!email, phone: !!phone, tenantId });
60
- const user = this.userRepository.create({
62
+ // Apply beforeCreate hook if configured
63
+ let userData = {
61
64
  ...data,
62
65
  email: normalizedEmail || data.email,
63
66
  tenantId
64
- });
67
+ };
68
+ const config = this.authConfigService.getConfig();
69
+ if (config.user?.beforeCreate) {
70
+ userData = await config.user.beforeCreate(userData, data);
71
+ }
72
+ const user = this.userRepository.create(userData);
65
73
  await this.userRepository.save(user);
66
74
  this.debugLogger.info('User created successfully', 'UserService', { userId: user.id, tenantId });
67
75
  // Create authentication identity for login
@@ -78,6 +86,10 @@ let UserService = class UserService {
78
86
  await this.eventEmitter.emitAsync(auth_constants_1.NestAuthEvents.USER_CREATED, new user_created_event_1.UserCreatedEvent({
79
87
  user
80
88
  }));
89
+ // Apply afterCreate hook if configured
90
+ if (config.user?.afterCreate) {
91
+ await config.user.afterCreate(user);
92
+ }
81
93
  this.debugLogger.logFunctionExit('createUser', 'UserService', { userId: user.id });
82
94
  return user;
83
95
  }
@@ -340,5 +352,6 @@ exports.UserService = UserService = tslib_1.__decorate([
340
352
  tslib_1.__metadata("design:paramtypes", [typeorm_2.Repository,
341
353
  event_emitter_1.EventEmitter2,
342
354
  tenant_1.TenantService,
343
- debug_logger_service_1.DebugLoggerService])
355
+ debug_logger_service_1.DebugLoggerService,
356
+ auth_config_service_1.AuthConfigService])
344
357
  ], UserService);