mongodb-dynamic-api 4.10.0 → 4.12.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 +20 -0
- package/package.json +1 -1
- package/src/gateways/base.gateway.d.ts +2 -2
- package/src/gateways/base.gateway.js +2 -3
- package/src/gateways/base.gateway.js.map +1 -1
- package/src/helpers/resolve-rooms.helper.d.ts +1 -1
- package/src/helpers/resolve-rooms.helper.js +2 -2
- package/src/helpers/resolve-rooms.helper.js.map +1 -1
- package/src/interfaces/dynamic-api-ability.interface.d.ts +1 -1
- package/src/interfaces/dynamic-api-broadcast-config.interface.d.ts +4 -4
- package/src/interfaces/dynamic-api-route-config.interface.d.ts +2 -2
- package/src/interfaces/dynamic-api-service-before-save-callback.interface.d.ts +21 -21
- package/src/modules/auth/auth.helper.d.ts +13 -3
- package/src/modules/auth/auth.helper.js +20 -6
- package/src/modules/auth/auth.helper.js.map +1 -1
- package/src/modules/auth/auth.module.js +24 -3
- package/src/modules/auth/auth.module.js.map +1 -1
- package/src/modules/auth/dtos/send-otp-code.dto.d.ts +3 -0
- package/src/modules/auth/dtos/send-otp-code.dto.js +24 -0
- package/src/modules/auth/dtos/send-otp-code.dto.js.map +1 -0
- package/src/modules/auth/dtos/verify-otp-code.dto.d.ts +4 -0
- package/src/modules/auth/dtos/verify-otp-code.dto.js +31 -0
- package/src/modules/auth/dtos/verify-otp-code.dto.js.map +1 -0
- package/src/modules/auth/guards/index.d.ts +1 -0
- package/src/modules/auth/guards/index.js +1 -0
- package/src/modules/auth/guards/index.js.map +1 -1
- package/src/modules/auth/guards/passwordless/passwordless.guard.d.ts +6 -0
- package/src/modules/auth/guards/passwordless/passwordless.guard.js +30 -0
- package/src/modules/auth/guards/passwordless/passwordless.guard.js.map +1 -0
- package/src/modules/auth/interfaces/auth-controller.interface.d.ts +7 -0
- package/src/modules/auth/interfaces/auth-options.interface.d.ts +8 -1
- package/src/modules/auth/interfaces/auth-service.interface.d.ts +2 -0
- package/src/modules/auth/mixins/auth-controller.mixin.d.ts +11 -2
- package/src/modules/auth/mixins/auth-controller.mixin.js +39 -1
- package/src/modules/auth/mixins/auth-controller.mixin.js.map +1 -1
- package/src/modules/auth/models/otp-code.model.d.ts +15 -0
- package/src/modules/auth/models/otp-code.model.js +38 -0
- package/src/modules/auth/models/otp-code.model.js.map +1 -0
- package/src/modules/auth/services/base-auth.service.d.ts +7 -2
- package/src/modules/auth/services/base-auth.service.js +38 -1
- package/src/modules/auth/services/base-auth.service.js.map +1 -1
- package/src/services/dynamic-api-broadcast/dynamic-api-broadcast.service.d.ts +2 -2
- package/src/services/dynamic-api-broadcast/dynamic-api-broadcast.service.js.map +1 -1
- package/src/version.json +1 -1
- package/test/for-feature/room-broadcast.e2e-spec.js +37 -0
- package/test/for-feature/room-broadcast.e2e-spec.js.map +1 -1
- package/test/for-feature/websockets.e2e-spec.js.map +1 -1
- package/test/for-root/auth-api-passwordless.e2e-spec.d.ts +1 -0
- package/test/for-root/auth-api-passwordless.e2e-spec.js +150 -0
- package/test/for-root/auth-api-passwordless.e2e-spec.js.map +1 -0
- package/test/shared/entities/index.d.ts +1 -0
- package/test/shared/entities/index.js +1 -0
- package/test/shared/entities/index.js.map +1 -1
- package/test/shared/entities/passwordless-user.factory.d.ts +12 -0
- package/test/shared/entities/passwordless-user.factory.js +31 -0
- package/test/shared/entities/passwordless-user.factory.js.map +1 -0
- package/tsconfig.tsbuildinfo +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,25 @@
|
|
|
1
1
|
Changelog
|
|
2
2
|
|
|
3
|
+
## [4.12.0](https://github.com/MikeDev75015/mongodb-dynamic-api/compare/v4.11.0...v4.12.0) (2026-05-26)
|
|
4
|
+
|
|
5
|
+
### auth
|
|
6
|
+
|
|
7
|
+
* **auth:** add passwordless OTP flow ([858cd49](https://github.com/MikeDev75015/mongodb-dynamic-api/commit/858cd49e348127412e8eaf86f06d94d0784bef63))
|
|
8
|
+
|
|
9
|
+
## [4.11.0](https://github.com/MikeDev75015/mongodb-dynamic-api/compare/v4.10.0...v4.11.0) (2026-05-25)
|
|
10
|
+
|
|
11
|
+
### callbacks
|
|
12
|
+
|
|
13
|
+
* **callbacks:** add BodyDTO generic to beforeSave context types ([4c04c50](https://github.com/MikeDev75015/mongodb-dynamic-api/commit/4c04c50f57e9b1e96d14f1eab83b45f76e2afd71))
|
|
14
|
+
|
|
15
|
+
### e2e
|
|
16
|
+
|
|
17
|
+
* **e2e:** cast user to UserEntity in websockets broadcast enabled predicate ([6ac68ef](https://github.com/MikeDev75015/mongodb-dynamic-api/commit/6ac68ef1a5f206d129ee6395a7afb55dc1714962))
|
|
18
|
+
|
|
19
|
+
### broadcast
|
|
20
|
+
|
|
21
|
+
* **broadcast:** pass socket.user to rooms callback ([da6177f](https://github.com/MikeDev75015/mongodb-dynamic-api/commit/da6177f307b3afb14e3b56bfef25c39d3ee9b514))
|
|
22
|
+
|
|
3
23
|
## [4.10.0](https://github.com/MikeDev75015/mongodb-dynamic-api/compare/v4.9.0...v4.10.0) (2026-05-25)
|
|
4
24
|
|
|
5
25
|
### custom-route
|
package/package.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { JwtService } from '@nestjs/jwt';
|
|
2
|
-
import {
|
|
2
|
+
import { BroadcastConfig, ExtendedSocket } from '../interfaces';
|
|
3
3
|
import { BaseEntity } from '../models';
|
|
4
4
|
export declare abstract class BaseGateway<Entity extends BaseEntity> {
|
|
5
5
|
protected readonly jwtService: JwtService;
|
|
@@ -7,5 +7,5 @@ export declare abstract class BaseGateway<Entity extends BaseEntity> {
|
|
|
7
7
|
protected constructor(jwtService: JwtService);
|
|
8
8
|
protected addUserToSocket(socket: ExtendedSocket<Entity>, isPublic: boolean): void;
|
|
9
9
|
protected isValidManyBody<T extends object>(body: T): boolean;
|
|
10
|
-
protected broadcastIfNeeded<ResponseData extends object>(socket: ExtendedSocket, event: string, data: ResponseData[], broadcastConfig?:
|
|
10
|
+
protected broadcastIfNeeded<ResponseData extends object>(socket: ExtendedSocket, event: string, data: ResponseData[], broadcastConfig?: BroadcastConfig<ResponseData>): void;
|
|
11
11
|
}
|
|
@@ -4,7 +4,6 @@ exports.BaseGateway = void 0;
|
|
|
4
4
|
const websockets_1 = require("@nestjs/websockets");
|
|
5
5
|
const dynamic_api_module_1 = require("../dynamic-api.module");
|
|
6
6
|
const helpers_1 = require("../helpers");
|
|
7
|
-
const ws_config_store_1 = require("../helpers/ws-config.store");
|
|
8
7
|
const logger_1 = require("../logger");
|
|
9
8
|
class BaseGateway {
|
|
10
9
|
constructor(jwtService) {
|
|
@@ -57,8 +56,8 @@ class BaseGateway {
|
|
|
57
56
|
return;
|
|
58
57
|
}
|
|
59
58
|
const broadcastEvent = eventName || event;
|
|
60
|
-
const resolvedRooms = (0, helpers_1.resolveRooms)(rooms, broadcastData);
|
|
61
|
-
if (
|
|
59
|
+
const resolvedRooms = (0, helpers_1.resolveRooms)(rooms, broadcastData, socket.user);
|
|
60
|
+
if (helpers_1.DynamicApiWsConfigStore.debug) {
|
|
62
61
|
this.logger.log(`[WS] broadcastIfNeeded – event=${broadcastEvent}, rooms=${resolvedRooms ? JSON.stringify(resolvedRooms) : 'all'}, items=${broadcastData.length}`);
|
|
63
62
|
}
|
|
64
63
|
if (resolvedRooms) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.gateway.js","sourceRoot":"","sources":["../../../libs/dynamic-api/src/gateways/base.gateway.ts"],"names":[],"mappings":";;;AACA,mDAAiD;AAEjD,8DAAyD;AACzD,
|
|
1
|
+
{"version":3,"file":"base.gateway.js","sourceRoot":"","sources":["../../../libs/dynamic-api/src/gateways/base.gateway.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { BroadcastRooms } from '../interfaces';
|
|
2
|
-
declare function resolveRooms<T extends object>(rooms: BroadcastRooms<T> | undefined, data: T[]): string[] | undefined;
|
|
2
|
+
declare function resolveRooms<T extends object, User = unknown>(rooms: BroadcastRooms<T, User> | undefined, data: T[], user?: User): string[] | undefined;
|
|
3
3
|
export { resolveRooms };
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.resolveRooms = resolveRooms;
|
|
4
|
-
function resolveRooms(rooms, data) {
|
|
4
|
+
function resolveRooms(rooms, data, user) {
|
|
5
5
|
if (!rooms) {
|
|
6
6
|
return undefined;
|
|
7
7
|
}
|
|
8
8
|
if (typeof rooms === 'function') {
|
|
9
9
|
const resolved = data.flatMap((item) => {
|
|
10
|
-
const result = rooms(item);
|
|
10
|
+
const result = rooms(item, user);
|
|
11
11
|
return Array.isArray(result) ? result : [result];
|
|
12
12
|
});
|
|
13
13
|
return [...new Set(resolved)];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolve-rooms.helper.js","sourceRoot":"","sources":["../../../libs/dynamic-api/src/helpers/resolve-rooms.helper.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"resolve-rooms.helper.js","sourceRoot":"","sources":["../../../libs/dynamic-api/src/helpers/resolve-rooms.helper.ts"],"names":[],"mappings":";;AAkCS,oCAAY;AArBrB,SAAS,YAAY,CACnB,KAA0C,EAC1C,IAAS,EACT,IAAW;IAEX,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE,CAAC;QAChC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YACrC,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACjC,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;QACH,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;IAChC,CAAC;IAED,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAC3D,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC;AACnC,CAAC"}
|
|
@@ -4,7 +4,7 @@ type PredicateBehavior = 'filter' | 'throw';
|
|
|
4
4
|
type AbilityPredicate<Entity extends BaseEntity, User = any> = (entity: Entity, user: User) => boolean;
|
|
5
5
|
type AuthAbilityPredicate<User = any, Body = unknown> = (user: User, body?: Body) => boolean;
|
|
6
6
|
type BroadcastAbilityPredicate<ResponseData extends object, User = any> = (data: ResponseData, user: User) => boolean;
|
|
7
|
-
type BroadcastRooms<T extends object> = string | string[] | ((data: T) => string | string[]);
|
|
7
|
+
type BroadcastRooms<T extends object, User = unknown> = string | string[] | ((data: T, user?: User) => string | string[]);
|
|
8
8
|
type ControllerAbilityPredicate<Entity extends BaseEntity> = {
|
|
9
9
|
targets: RouteType[];
|
|
10
10
|
predicate: AbilityPredicate<Entity>;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { BroadcastAbilityPredicate, BroadcastRooms } from './dynamic-api-ability.interface';
|
|
2
|
-
interface
|
|
3
|
-
enabled: boolean | BroadcastAbilityPredicate<ResponseData>;
|
|
2
|
+
interface BroadcastConfig<ResponseData extends object, User = unknown> {
|
|
3
|
+
enabled: boolean | BroadcastAbilityPredicate<ResponseData, User>;
|
|
4
4
|
eventName?: string;
|
|
5
|
-
rooms?: BroadcastRooms<ResponseData>;
|
|
5
|
+
rooms?: BroadcastRooms<ResponseData, User>;
|
|
6
6
|
}
|
|
7
|
-
export {
|
|
7
|
+
export { BroadcastConfig };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { NestInterceptor, Type, ValidationPipeOptions } from '@nestjs/common';
|
|
2
2
|
import { BaseEntity } from '../models';
|
|
3
3
|
import { AbilityPredicate, PredicateBehavior } from './dynamic-api-ability.interface';
|
|
4
|
-
import {
|
|
4
|
+
import { BroadcastConfig } from './dynamic-api-broadcast-config.interface';
|
|
5
5
|
import { CascadeConfig } from './dynamic-api-cascade-config.interface';
|
|
6
6
|
import { DTOsBundle } from './dynamic-api-route-dtos-bundle.type';
|
|
7
7
|
import { RouteType } from './dynamic-api-route-type.type';
|
|
@@ -26,7 +26,7 @@ interface DynamicApiRouteConfig<Entity extends BaseEntity> {
|
|
|
26
26
|
callback?: AfterSaveCallback<Entity>;
|
|
27
27
|
webSocket?: DynamicApiWebSocketOptions;
|
|
28
28
|
eventName?: string;
|
|
29
|
-
broadcast?:
|
|
29
|
+
broadcast?: BroadcastConfig<Entity>;
|
|
30
30
|
isArrayResponse?: boolean;
|
|
31
31
|
useInterceptors?: Type<NestInterceptor>[];
|
|
32
32
|
fromUser?: FromUserMap<Entity>;
|
|
@@ -1,22 +1,22 @@
|
|
|
1
1
|
import { BaseEntity } from '../models';
|
|
2
2
|
import { CallbackMethods } from './dynamic-api-service-callback.interface';
|
|
3
|
-
type BeforeSaveCreateContext<Entity extends BaseEntity> = {
|
|
4
|
-
toCreate: Partial<
|
|
3
|
+
type BeforeSaveCreateContext<Entity extends BaseEntity, BodyDTO = Entity> = {
|
|
4
|
+
toCreate: Partial<BodyDTO>;
|
|
5
5
|
};
|
|
6
|
-
type BeforeSaveCreateManyContext<Entity extends BaseEntity> = {
|
|
7
|
-
toCreate: Partial<
|
|
6
|
+
type BeforeSaveCreateManyContext<Entity extends BaseEntity, BodyDTO = Entity> = {
|
|
7
|
+
toCreate: Partial<BodyDTO>[];
|
|
8
8
|
};
|
|
9
|
-
type BeforeSaveUpdateContext<Entity extends BaseEntity> = {
|
|
9
|
+
type BeforeSaveUpdateContext<Entity extends BaseEntity, BodyDTO = Entity> = {
|
|
10
10
|
id: string;
|
|
11
|
-
update: Partial<
|
|
11
|
+
update: Partial<BodyDTO>;
|
|
12
12
|
};
|
|
13
|
-
type BeforeSaveUpdateManyContext<Entity extends BaseEntity> = {
|
|
13
|
+
type BeforeSaveUpdateManyContext<Entity extends BaseEntity, BodyDTO = Entity> = {
|
|
14
14
|
ids: string[];
|
|
15
|
-
update: Partial<
|
|
15
|
+
update: Partial<BodyDTO>;
|
|
16
16
|
};
|
|
17
|
-
type BeforeSaveReplaceContext<Entity extends BaseEntity> = {
|
|
17
|
+
type BeforeSaveReplaceContext<Entity extends BaseEntity, BodyDTO = Entity> = {
|
|
18
18
|
id: string;
|
|
19
|
-
replacement: Partial<
|
|
19
|
+
replacement: Partial<BodyDTO>;
|
|
20
20
|
};
|
|
21
21
|
type BeforeSaveDeleteContext = {
|
|
22
22
|
id: string;
|
|
@@ -24,13 +24,13 @@ type BeforeSaveDeleteContext = {
|
|
|
24
24
|
type BeforeSaveDeleteManyContext = {
|
|
25
25
|
ids: string[];
|
|
26
26
|
};
|
|
27
|
-
type BeforeSaveDuplicateContext<Entity extends BaseEntity> = {
|
|
27
|
+
type BeforeSaveDuplicateContext<Entity extends BaseEntity, BodyDTO = Entity> = {
|
|
28
28
|
id: string;
|
|
29
|
-
override?: Partial<
|
|
29
|
+
override?: Partial<BodyDTO>;
|
|
30
30
|
};
|
|
31
|
-
type BeforeSaveDuplicateManyContext<Entity extends BaseEntity> = {
|
|
31
|
+
type BeforeSaveDuplicateManyContext<Entity extends BaseEntity, BodyDTO = Entity> = {
|
|
32
32
|
ids: string[];
|
|
33
|
-
override?: Partial<
|
|
33
|
+
override?: Partial<BodyDTO>;
|
|
34
34
|
};
|
|
35
35
|
type BeforeSaveCallback<Entity extends BaseEntity, Context = Record<string, unknown>, User = unknown> = (entity: Entity | undefined, context: Context, methods: CallbackMethods, user?: User) => Promise<Partial<Entity>>;
|
|
36
36
|
type BeforeSaveListCallback<Entity extends BaseEntity, Context = Record<string, unknown>, User = unknown> = (entities: Entity[] | undefined, context: Context, methods: CallbackMethods, user?: User) => Promise<Partial<Entity>[]>;
|
|
@@ -40,15 +40,15 @@ type AnyBeforeSaveCallback<Entity extends BaseEntity, User = unknown> = BeforeSa
|
|
|
40
40
|
type BeforeDeleteCallback<Entity extends BaseEntity, Context = Record<string, unknown>, User = unknown> = (entity: Entity | undefined, context: Context, methods: CallbackMethods, user?: User) => Promise<void>;
|
|
41
41
|
type BeforeDeleteManyCallback<Entity extends BaseEntity, Context = Record<string, unknown>, User = unknown> = (entities: Entity[], context: Context, methods: CallbackMethods, user?: User) => Promise<void>;
|
|
42
42
|
type AnyBeforeDeleteCallback<Entity extends BaseEntity, User = unknown> = BeforeDeleteCallback<Entity, BeforeSaveDeleteContext, User> | BeforeDeleteManyCallback<Entity, BeforeSaveDeleteManyContext, User>;
|
|
43
|
-
type DynamicApiServiceBeforeSaveCreateContext<Entity extends BaseEntity> = BeforeSaveCreateContext<Entity>;
|
|
44
|
-
type DynamicApiServiceBeforeSaveCreateManyContext<Entity extends BaseEntity> = BeforeSaveCreateManyContext<Entity>;
|
|
45
|
-
type DynamicApiServiceBeforeSaveUpdateContext<Entity extends BaseEntity> = BeforeSaveUpdateContext<Entity>;
|
|
46
|
-
type DynamicApiServiceBeforeSaveUpdateManyContext<Entity extends BaseEntity> = BeforeSaveUpdateManyContext<Entity>;
|
|
47
|
-
type DynamicApiServiceBeforeSaveReplaceContext<Entity extends BaseEntity> = BeforeSaveReplaceContext<Entity>;
|
|
43
|
+
type DynamicApiServiceBeforeSaveCreateContext<Entity extends BaseEntity, BodyDTO = Entity> = BeforeSaveCreateContext<Entity, BodyDTO>;
|
|
44
|
+
type DynamicApiServiceBeforeSaveCreateManyContext<Entity extends BaseEntity, BodyDTO = Entity> = BeforeSaveCreateManyContext<Entity, BodyDTO>;
|
|
45
|
+
type DynamicApiServiceBeforeSaveUpdateContext<Entity extends BaseEntity, BodyDTO = Entity> = BeforeSaveUpdateContext<Entity, BodyDTO>;
|
|
46
|
+
type DynamicApiServiceBeforeSaveUpdateManyContext<Entity extends BaseEntity, BodyDTO = Entity> = BeforeSaveUpdateManyContext<Entity, BodyDTO>;
|
|
47
|
+
type DynamicApiServiceBeforeSaveReplaceContext<Entity extends BaseEntity, BodyDTO = Entity> = BeforeSaveReplaceContext<Entity, BodyDTO>;
|
|
48
48
|
type DynamicApiServiceBeforeSaveDeleteContext = BeforeSaveDeleteContext;
|
|
49
49
|
type DynamicApiServiceBeforeSaveDeleteManyContext = BeforeSaveDeleteManyContext;
|
|
50
|
-
type DynamicApiServiceBeforeSaveDuplicateContext<Entity extends BaseEntity> = BeforeSaveDuplicateContext<Entity>;
|
|
51
|
-
type DynamicApiServiceBeforeSaveDuplicateManyContext<Entity extends BaseEntity> = BeforeSaveDuplicateManyContext<Entity>;
|
|
50
|
+
type DynamicApiServiceBeforeSaveDuplicateContext<Entity extends BaseEntity, BodyDTO = Entity> = BeforeSaveDuplicateContext<Entity, BodyDTO>;
|
|
51
|
+
type DynamicApiServiceBeforeSaveDuplicateManyContext<Entity extends BaseEntity, BodyDTO = Entity> = BeforeSaveDuplicateManyContext<Entity, BodyDTO>;
|
|
52
52
|
type DynamicApiServiceBeforeSaveCallback<Entity extends BaseEntity, Context = Record<string, unknown>, User = unknown> = BeforeSaveCallback<Entity, Context, User>;
|
|
53
53
|
type DynamicApiServiceBeforeSaveListCallback<Entity extends BaseEntity, Context = Record<string, unknown>, User = unknown> = BeforeSaveListCallback<Entity, Context, User>;
|
|
54
54
|
type DynamicApiServiceBeforeSaveDeleteCallback<Entity extends BaseEntity, Context = Record<string, unknown>, User = unknown> = BeforeSaveDeleteCallback<Entity, Context, User>;
|
|
@@ -1,12 +1,21 @@
|
|
|
1
1
|
import { Type, ValidationPipeOptions } from '@nestjs/common';
|
|
2
2
|
import { AuthAbilityPredicate, AfterSaveCallback, DynamicAPIServiceProvider, GatewayOptions } from '../../interfaces';
|
|
3
3
|
import { BaseEntity } from '../../models';
|
|
4
|
-
import { AuthControllerConstructor, AuthGatewayConstructor, DynamicApiGetAccountOptions, DynamicApiLoginOptions, DynamicApiRefreshTokenOptions, DynamicApiRegisterOptions, DynamicApiResetPasswordOptions, DynamicApiUpdateAccountOptions } from './interfaces';
|
|
4
|
+
import { AuthControllerConstructor, AuthGatewayConstructor, DynamicApiGetAccountOptions, DynamicApiLoginOptions, DynamicApiRefreshTokenOptions, DynamicApiRegisterOptions, DynamicApiResetPasswordOptions, DynamicApiUpdateAccountOptions, PasswordlessOptions } from './interfaces';
|
|
5
5
|
declare const authServiceProviderName = "DynamicApiAuthService";
|
|
6
6
|
declare const authGatewayProviderName = "DynamicApiAuthGateway";
|
|
7
7
|
declare const localStrategyProviderName = "DynamicApiLocalStrategy";
|
|
8
8
|
declare function createLocalStrategyProvider<Entity extends BaseEntity>(loginField: keyof Entity, passwordField: keyof Entity, abilityPredicate: AuthAbilityPredicate | undefined, customValidate?: (req: any) => Promise<Entity | null>, useStrategy?: Type<any>): DynamicAPIServiceProvider;
|
|
9
|
-
|
|
9
|
+
type AuthServiceProviderOptions<Entity extends BaseEntity> = {
|
|
10
|
+
loginOptions: DynamicApiLoginOptions<Entity>;
|
|
11
|
+
getAccountCallback?: AfterSaveCallback<Entity>;
|
|
12
|
+
register?: DynamicApiRegisterOptions<Entity>;
|
|
13
|
+
resetPasswordOptions?: DynamicApiResetPasswordOptions<Entity>;
|
|
14
|
+
updateAccount?: DynamicApiUpdateAccountOptions<Entity>;
|
|
15
|
+
refreshToken?: DynamicApiRefreshTokenOptions<Entity>;
|
|
16
|
+
passwordlessOptions?: PasswordlessOptions<Entity>;
|
|
17
|
+
};
|
|
18
|
+
declare function createAuthServiceProvider<Entity extends BaseEntity>(userEntity: Type<Entity>, { loginOptions: { loginField, passwordField, additionalFields, callback: loginCallback }, getAccountCallback, register, resetPasswordOptions, updateAccount, refreshToken, passwordlessOptions, }: AuthServiceProviderOptions<Entity>): DynamicAPIServiceProvider;
|
|
10
19
|
type CreateAuthControllerOptions<Entity extends BaseEntity> = {
|
|
11
20
|
getAccountOptions?: DynamicApiGetAccountOptions<Entity>;
|
|
12
21
|
registerOptions?: DynamicApiRegisterOptions<Entity>;
|
|
@@ -14,6 +23,7 @@ type CreateAuthControllerOptions<Entity extends BaseEntity> = {
|
|
|
14
23
|
resetPasswordOptions?: DynamicApiResetPasswordOptions<Entity>;
|
|
15
24
|
updateAccountOptions?: DynamicApiUpdateAccountOptions<Entity>;
|
|
16
25
|
refreshTokenOptions?: DynamicApiRefreshTokenOptions<Entity>;
|
|
26
|
+
passwordlessOptions?: PasswordlessOptions<Entity>;
|
|
17
27
|
};
|
|
18
28
|
type CreateAuthGatewayOptions<Entity extends BaseEntity> = GatewayOptions & {
|
|
19
29
|
validationPipeOptions?: ValidationPipeOptions;
|
|
@@ -23,6 +33,6 @@ type CreateAuthGatewayOptions<Entity extends BaseEntity> = GatewayOptions & {
|
|
|
23
33
|
updateAccountOptions?: DynamicApiUpdateAccountOptions<Entity>;
|
|
24
34
|
refreshTokenOptions?: DynamicApiRefreshTokenOptions<Entity>;
|
|
25
35
|
};
|
|
26
|
-
declare function createAuthController<Entity extends BaseEntity>(userEntity: Type<Entity>, loginOptions: DynamicApiLoginOptions<Entity>, { getAccountOptions, registerOptions, validationPipeOptions, resetPasswordOptions, updateAccountOptions, refreshTokenOptions, }?: CreateAuthControllerOptions<Entity>): AuthControllerConstructor<Entity>;
|
|
36
|
+
declare function createAuthController<Entity extends BaseEntity>(userEntity: Type<Entity>, loginOptions: DynamicApiLoginOptions<Entity>, { getAccountOptions, registerOptions, validationPipeOptions, resetPasswordOptions, updateAccountOptions, refreshTokenOptions, passwordlessOptions, }?: CreateAuthControllerOptions<Entity>): AuthControllerConstructor<Entity>;
|
|
27
37
|
declare function createAuthGateway<Entity extends BaseEntity>(userEntity: Type<Entity>, loginOptions: DynamicApiLoginOptions<Entity>, { getAccountOptions, registerOptions, resetPasswordOptions, updateAccountOptions, refreshTokenOptions, validationPipeOptions, ...gatewayOptions }: CreateAuthGatewayOptions<Entity>): AuthGatewayConstructor<Entity>;
|
|
28
38
|
export { authServiceProviderName, authGatewayProviderName, createAuthController, createAuthServiceProvider, createAuthGateway, createLocalStrategyProvider, localStrategyProviderName, };
|
|
@@ -29,6 +29,7 @@ const decorators_1 = require("../../decorators");
|
|
|
29
29
|
const dynamic_api_module_1 = require("../../dynamic-api.module");
|
|
30
30
|
const filters_1 = require("../../filters");
|
|
31
31
|
const services_1 = require("../../services");
|
|
32
|
+
const otp_code_model_1 = require("./models/otp-code.model");
|
|
32
33
|
const mixins_1 = require("./mixins");
|
|
33
34
|
const services_2 = require("./services");
|
|
34
35
|
const authServiceProviderName = 'DynamicApiAuthService';
|
|
@@ -92,13 +93,14 @@ function createLocalStrategyProvider(loginField, passwordField, abilityPredicate
|
|
|
92
93
|
useClass: LocalStrategy,
|
|
93
94
|
};
|
|
94
95
|
}
|
|
95
|
-
function createAuthServiceProvider(userEntity, { loginField, passwordField, additionalFields = [], callback: loginCallback }, getAccountCallback, register, resetPasswordOptions, updateAccount, refreshToken) {
|
|
96
|
+
function createAuthServiceProvider(userEntity, { loginOptions: { loginField, passwordField, additionalFields = [], callback: loginCallback }, getAccountCallback, register, resetPasswordOptions, updateAccount, refreshToken, passwordlessOptions, }) {
|
|
96
97
|
let AuthService = class AuthService extends services_2.BaseAuthService {
|
|
97
|
-
constructor(model, jwtService, bcryptService) {
|
|
98
|
-
super(model, jwtService, bcryptService);
|
|
98
|
+
constructor(model, jwtService, bcryptService, otpModel) {
|
|
99
|
+
super(model, jwtService, bcryptService, otpModel);
|
|
99
100
|
this.model = model;
|
|
100
101
|
this.jwtService = jwtService;
|
|
101
102
|
this.bcryptService = bcryptService;
|
|
103
|
+
this.otpModel = otpModel;
|
|
102
104
|
this.entity = userEntity;
|
|
103
105
|
this.additionalRequestFields = additionalFields;
|
|
104
106
|
this.loginField = loginField;
|
|
@@ -112,21 +114,33 @@ function createAuthServiceProvider(userEntity, { loginField, passwordField, addi
|
|
|
112
114
|
this.loginCallback = loginCallback;
|
|
113
115
|
this.getAccountCallback = getAccountCallback;
|
|
114
116
|
this.resetPasswordOptions = resetPasswordOptions;
|
|
117
|
+
this.passwordlessOptions = passwordlessOptions;
|
|
115
118
|
}
|
|
116
119
|
};
|
|
117
120
|
AuthService = __decorate([
|
|
118
121
|
__param(0, (0, mongoose_1.InjectModel)(userEntity.name, dynamic_api_module_1.DynamicApiModule.state.get('connectionName'))),
|
|
122
|
+
__param(3, (0, common_1.Optional)()),
|
|
123
|
+
__param(3, (0, mongoose_1.InjectModel)(otp_code_model_1.OtpCode.name, dynamic_api_module_1.DynamicApiModule.state.get('connectionName'))),
|
|
119
124
|
__metadata("design:paramtypes", [mongoose_2.Model,
|
|
120
125
|
jwt_1.JwtService,
|
|
121
|
-
services_1.BcryptService
|
|
126
|
+
services_1.BcryptService,
|
|
127
|
+
mongoose_2.Model])
|
|
122
128
|
], AuthService);
|
|
123
129
|
return {
|
|
124
130
|
provide: authServiceProviderName,
|
|
125
131
|
useClass: AuthService,
|
|
126
132
|
};
|
|
127
133
|
}
|
|
128
|
-
function createAuthController(userEntity, loginOptions, { getAccountOptions, registerOptions, validationPipeOptions, resetPasswordOptions, updateAccountOptions, refreshTokenOptions, } = {}) {
|
|
129
|
-
let AuthController = class AuthController extends (0, mixins_1.AuthControllerMixin)(userEntity,
|
|
134
|
+
function createAuthController(userEntity, loginOptions, { getAccountOptions, registerOptions, validationPipeOptions, resetPasswordOptions, updateAccountOptions, refreshTokenOptions, passwordlessOptions, } = {}) {
|
|
135
|
+
let AuthController = class AuthController extends (0, mixins_1.AuthControllerMixin)(userEntity, {
|
|
136
|
+
loginOptions,
|
|
137
|
+
registerOptions,
|
|
138
|
+
resetPasswordOptions,
|
|
139
|
+
updateAccountOptions,
|
|
140
|
+
getAccountOptions,
|
|
141
|
+
refreshTokenOptions,
|
|
142
|
+
passwordlessOptions,
|
|
143
|
+
}) {
|
|
130
144
|
constructor(service, broadcastService, jwtService) {
|
|
131
145
|
super(service, broadcastService, jwtService);
|
|
132
146
|
this.service = service;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.helper.js","sourceRoot":"","sources":["../../../../libs/dynamic-api/src/modules/auth/auth.helper.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"auth.helper.js","sourceRoot":"","sources":["../../../../libs/dynamic-api/src/modules/auth/auth.helper.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AA4QE,oDAAoB;AACpB,8DAAyB;AACzB,8CAAiB;AACjB,kEAA2B;AA/Q7B,2CAA8J;AAC9J,qCAAyC;AACzC,+CAA+C;AAC/C,+CAAoD;AACpD,6CAA0C;AAC1C,mDAAsD;AACtD,uCAAiC;AACjC,mDAA0C;AAC1C,iDAAiD;AACjD,iEAA4D;AAC5D,2CAA4D;AAG5D,6CAA2E;AAC3E,4DAAkD;AAElD,qCAAiE;AACjE,yCAA6C;AAE7C,MAAM,uBAAuB,GAAG,uBAAuB,CAAC;AAuPtD,0DAAuB;AAtPzB,MAAM,uBAAuB,GAAG,uBAAuB,CAAC;AAuPtD,0DAAuB;AAtPzB,MAAM,yBAAyB,GAAG,yBAAyB,CAAC;AA2P1D,8DAAyB;AAzP3B,SAAS,2BAA2B,CAClC,UAAwB,EACxB,aAA2B,EAC3B,gBAAkD,EAClD,cAAqD,EACrD,WAAuB;IAEvB,IAAI,WAAW,EAAE,CAAC;QAChB,OAAO;YACL,OAAO,EAAE,yBAAyB;YAClC,QAAQ,EAAE,WAAW;SACtB,CAAC;IACJ,CAAC;IAED,IACM,aAAa,GADnB,MACM,aAAc,SAAQ,IAAA,2BAAgB,EAAC,yBAAQ,CAAC;QAIpD,YAEE,WAAmD;YAEnD,KAAK,CAAC;gBACJ,aAAa,EAAE,UAAoB;gBACnC,aAAa,EAAE,aAAuB;gBACtC,iBAAiB,EAAE,IAAI;aACxB,CAAC,CAAC;YANgB,gBAAW,GAAX,WAAW,CAAqB;YAL3C,qBAAgB,GAAG,gBAAgB,CAAC;YACpC,mBAAc,GAAG,cAAc,CAAC;QAW1C,CAAC;QASD,YAAY,CAAC,GAAQ,EAAE,OAAa;YAClC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,UAAoB,CAAC,IAAI,GAAG,CAAC,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,CAAC;gBACjE,GAAG,CAAC,IAAI,CAAC,UAAoB,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC;YAClD,CAAC;YAED,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;gBACzB,OAAO,KAAK,CAAC,YAAY,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;YAC1C,CAAC;YAED,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,UAAoB,CAAC,IAAI,EAAE,CAAC;YACrD,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,aAAuB,CAAC,IAAI,EAAE,CAAC;YAEvD,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC;iBAC5B,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;iBAClC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;QACrC,CAAC;QAED,KAAK,CAAC,QAAQ,CAAC,GAAQ,EAAE,KAAa,EAAE,IAAY;YAClD,IAAI,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAEvE,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,IAAI,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YAC1D,CAAC;YAED,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,MAAM,IAAI,8BAAqB,CAAC,qBAAqB,CAAC,CAAC;YACzD,CAAC;YAED,IAAI,IAAI,CAAC,gBAAgB,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC1D,MAAM,IAAI,2BAAkB,CAAC,eAAe,CAAC,CAAC;YAChD,CAAC;YAED,OAAO,IAAI,CAAC;QACd,CAAC;KACF,CAAA;IAxDK,aAAa;QADlB,IAAA,mBAAU,GAAE;QAMR,WAAA,IAAA,eAAM,EAAC,uBAAuB,CAAC,CAAA;;OAL9B,aAAa,CAwDlB;IAED,OAAO;QACL,OAAO,EAAE,yBAAyB;QAClC,QAAQ,EAAE,aAAa;KACxB,CAAC;AACJ,CAAC;AAYD,SAAS,yBAAyB,CAChC,UAAwB,EACxB,EACE,YAAY,EAAE,EAAE,UAAU,EAAE,aAAa,EAAE,gBAAgB,GAAG,EAAE,EAAE,QAAQ,EAAE,aAAa,EAAE,EAC3F,kBAAkB,EAClB,QAAQ,EACR,oBAAoB,EACpB,aAAa,EACb,YAAY,EACZ,mBAAmB,GACgB;IAErC,IAAM,WAAW,GAAjB,MAAM,WAAY,SAAQ,0BAAuB;QAkB/C,YAKE,KAAuC,EACpB,UAAsB,EACtB,aAA4B,EAK/C,QAA4C;YAE5C,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,QAAQ,CAAC,CAAC;YAT/B,UAAK,GAAL,KAAK,CAAe;YACpB,eAAU,GAAV,UAAU,CAAY;YACtB,kBAAa,GAAb,aAAa,CAAe;YAK5B,aAAQ,GAAR,QAAQ,CAAiB;YA7BpC,WAAM,GAAG,UAAU,CAAC;YACpB,4BAAuB,GAAG,gBAAgB,CAAC;YAC3C,eAAU,GAAG,UAAU,CAAC;YACxB,kBAAa,GAAG,aAAa,CAAC;YAC9B,sBAAiB,GAAG,YAAY,EAAE,iBAAiB,CAAC;YACpD,yBAAoB,GAAG,qCAAgB,CAAC,KAAK,CAAC,GAAG,CAAU,sBAAsB,CAAC,IAAI,KAAK,CAAC;YAE5F,2BAAsB,GAAG,QAAQ,EAAE,kBAAkB,CAAC;YACtD,qBAAgB,GAAG,QAAQ,EAAE,QAAQ,CAAC;YAEtC,gCAA2B,GAAG,aAAa,EAAE,kBAAkB,CAAC;YAChE,0BAAqB,GAAG,aAAa,EAAE,QAAQ,CAAC;YAChD,kBAAa,GAAG,aAAa,CAAC;YAC9B,uBAAkB,GAAG,kBAAkB,CAAC;YACxC,yBAAoB,GAAG,oBAAoB,CAAC;YAC5C,wBAAmB,GAAG,mBAAmB,CAAC;QAiBpD,CAAC;KACF,CAAA;IAlCK,WAAW;QAmBZ,WAAA,IAAA,sBAAW,EACV,UAAU,CAAC,IAAI,EACf,qCAAgB,CAAC,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAC7C,CAAA;QAIA,WAAA,IAAA,iBAAQ,GAAE,CAAA;QAAE,WAAA,IAAA,sBAAW,EACtB,wBAAO,CAAC,IAAI,EACZ,qCAAgB,CAAC,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAC7C,CAAA;yCANyB,gBAAK;YACA,gBAAU;YACP,wBAAa;YAKjB,gBAAK;OA9BjC,WAAW,CAkChB;IAED,OAAO;QACL,OAAO,EAAE,uBAAuB;QAChC,QAAQ,EAAE,WAAW;KACtB,CAAC;AACJ,CAAC;AAqBD,SAAS,oBAAoB,CAC3B,UAAwB,EACxB,YAA4C,EAC5C,EACE,iBAAiB,EACjB,eAAe,EACf,qBAAqB,EACrB,oBAAoB,EACpB,oBAAoB,EACpB,mBAAmB,EACnB,mBAAmB,MACoB,EAAE;IAE3C,IAGM,cAAc,GAHpB,MAGM,cAAe,SAAQ,IAAA,4BAAmB,EAC9C,UAAU,EACV;QACE,YAAY;QACZ,eAAe;QACf,oBAAoB;QACpB,oBAAoB;QACpB,iBAAiB;QACjB,mBAAmB;QACnB,mBAAmB;KACpB,CACF;QACC,YAEqB,OAA4B,EAE5B,gBAA4C,EAE5C,UAAsB;YAEzC,KAAK,CAAC,OAAO,EAAE,gBAAgB,EAAE,UAAU,CAAC,CAAC;YAN1B,YAAO,GAAP,OAAO,CAAqB;YAE5B,qBAAgB,GAAhB,gBAAgB,CAA4B;YAE5C,eAAU,GAAV,UAAU,CAAY;QAG3C,CAAC;KACF,CAAA;IAtBK,cAAc;QAHnB,IAAA,mBAAU,EAAC,MAAM,CAAC;QAClB,IAAA,iBAAO,EAAC,MAAM,CAAC;QACf,IAAA,0BAAa,EAAC,qBAAqB,CAAC;QAchC,WAAA,IAAA,eAAM,EAAC,uBAAuB,CAAC,CAAA;QAE/B,WAAA,IAAA,iBAAQ,GAAE,CAAA;QAAE,WAAA,IAAA,eAAM,EAAC,qCAA0B,CAAC,CAAA;QAE9C,WAAA,IAAA,eAAM,EAAC,gBAAU,CAAC,CAAA;iDADkB,qCAA0B;YAEhC,gBAAU;OAlBvC,cAAc,CAsBnB;IAED,OAAO,cAAc,CAAC;AACxB,CAAC;AAED,SAAS,iBAAiB,CACxB,UAAwB,EACxB,YAA4C,EAC5C,EACE,iBAAiB,EACjB,eAAe,EACf,oBAAoB,EACpB,oBAAoB,EACpB,mBAAmB,EACnB,qBAAqB,EACrB,GAAG,cAAc,EACgB;IAEnC,IAGM,WAAW,GAHjB,MAGM,WAAY,SAAQ,IAAA,yBAAgB,EACxC,UAAU,EACV,YAAY,EACZ,eAAe,IAAI,EAAE,EACrB,oBAAoB,EACpB,oBAAoB,EACpB,iBAAiB,EACjB,mBAAmB,CACpB;QACC,YAEqB,OAA4B,EAC5B,UAAsB;YAEzC,KAAK,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;YAHR,YAAO,GAAP,OAAO,CAAqB;YAC5B,eAAU,GAAV,UAAU,CAAY;QAG3C,CAAC;KACF,CAAA;IAhBK,WAAW;QAHhB,IAAA,6BAAgB,EAAC,cAAc,CAAC;QAChC,IAAA,mBAAU,EAAC,IAAI,qCAA2B,EAAE,CAAC;QAC7C,IAAA,0BAAa,EAAC,qBAAqB,CAAC;QAWhC,WAAA,IAAA,eAAM,EAAC,uBAAuB,CAAC,CAAA;iDAED,gBAAU;OAZvC,WAAW,CAgBhB;IAED,OAAO,WAAW,CAAC;AACrB,CAAC"}
|
|
@@ -18,6 +18,7 @@ const gateways_1 = require("../../gateways");
|
|
|
18
18
|
const helpers_1 = require("../../helpers");
|
|
19
19
|
const services_1 = require("../../services");
|
|
20
20
|
const auth_helper_1 = require("./auth.helper");
|
|
21
|
+
const otp_code_model_1 = require("./models/otp-code.model");
|
|
21
22
|
const strategies_1 = require("./strategies");
|
|
22
23
|
let AuthModule = AuthModule_1 = class AuthModule {
|
|
23
24
|
configure(consumer) {
|
|
@@ -26,12 +27,13 @@ let AuthModule = AuthModule_1 = class AuthModule {
|
|
|
26
27
|
}
|
|
27
28
|
}
|
|
28
29
|
static forRoot(options) {
|
|
29
|
-
const { userEntity, login: { loginField, passwordField, ...login }, getAccount, register, updateAccount, resetPassword, refreshToken, jwt: { secret, expiresIn }, validationPipeOptions, webSocket, extraImports, extraProviders, extraControllers, } = this.initializeAuthOptions(options);
|
|
30
|
+
const { userEntity, login: { loginField, passwordField, ...login }, getAccount, register, updateAccount, resetPassword, refreshToken, passwordless, jwt: { secret, expiresIn }, validationPipeOptions, webSocket, extraImports, extraProviders, extraControllers, } = this.initializeAuthOptions(options);
|
|
30
31
|
AuthModule_1.useCookie = refreshToken?.useCookie ?? false;
|
|
31
32
|
const { resetPasswordCallback, ...resetPasswordOptionsRest } = resetPassword;
|
|
32
33
|
const resetPasswordOptions = resetPasswordCallback
|
|
33
34
|
? { resetPasswordCallback, ...resetPasswordOptionsRest }
|
|
34
35
|
: undefined;
|
|
36
|
+
const connectionName = dynamic_api_module_1.DynamicApiModule.state.get('connectionName');
|
|
35
37
|
const AuthController = (0, auth_helper_1.createAuthController)(userEntity, { loginField, passwordField, ...login }, {
|
|
36
38
|
getAccountOptions: getAccount,
|
|
37
39
|
registerOptions: register,
|
|
@@ -39,8 +41,17 @@ let AuthModule = AuthModule_1 = class AuthModule {
|
|
|
39
41
|
resetPasswordOptions,
|
|
40
42
|
updateAccountOptions: updateAccount,
|
|
41
43
|
refreshTokenOptions: refreshToken,
|
|
44
|
+
passwordlessOptions: passwordless,
|
|
45
|
+
});
|
|
46
|
+
const AuthServiceProvider = (0, auth_helper_1.createAuthServiceProvider)(userEntity, {
|
|
47
|
+
loginOptions: { loginField, passwordField, ...login },
|
|
48
|
+
getAccountCallback: getAccount?.callback,
|
|
49
|
+
register,
|
|
50
|
+
resetPasswordOptions,
|
|
51
|
+
updateAccount,
|
|
52
|
+
refreshToken,
|
|
53
|
+
passwordlessOptions: passwordless,
|
|
42
54
|
});
|
|
43
|
-
const AuthServiceProvider = (0, auth_helper_1.createAuthServiceProvider)(userEntity, { loginField, passwordField, ...login }, getAccount?.callback, register, resetPasswordOptions, updateAccount, refreshToken);
|
|
44
55
|
const LocalStrategyProvider = (0, auth_helper_1.createLocalStrategyProvider)(loginField, passwordField, login.abilityPredicate, login.customValidate, login.useStrategy);
|
|
45
56
|
const schema = (0, helpers_1.buildSchemaFromEntity)(userEntity);
|
|
46
57
|
services_1.DynamicApiGlobalStateService.addEntitySchema(userEntity, schema);
|
|
@@ -68,6 +79,9 @@ let AuthModule = AuthModule_1 = class AuthModule {
|
|
|
68
79
|
}),
|
|
69
80
|
},
|
|
70
81
|
];
|
|
82
|
+
const otpFeatureModule = passwordless
|
|
83
|
+
? mongoose_1.MongooseModule.forFeature([{ name: otp_code_model_1.OtpCode.name, schema: otp_code_model_1.OtpCodeSchema }], connectionName)
|
|
84
|
+
: undefined;
|
|
71
85
|
return {
|
|
72
86
|
module: AuthModule_1,
|
|
73
87
|
imports: [
|
|
@@ -78,6 +92,7 @@ let AuthModule = AuthModule_1 = class AuthModule {
|
|
|
78
92
|
schema,
|
|
79
93
|
},
|
|
80
94
|
], dynamic_api_module_1.DynamicApiModule.state.get('connectionName')),
|
|
95
|
+
...(otpFeatureModule ? [otpFeatureModule] : []),
|
|
81
96
|
passport_1.PassportModule,
|
|
82
97
|
jwt_1.JwtModule.register({
|
|
83
98
|
global: true,
|
|
@@ -98,7 +113,7 @@ let AuthModule = AuthModule_1 = class AuthModule {
|
|
|
98
113
|
controllers: [AuthController, ...extraControllers],
|
|
99
114
|
};
|
|
100
115
|
}
|
|
101
|
-
static initializeAuthOptions({ userEntity, jwt, login, register, updateAccount, getAccount, resetPassword, refreshToken, validationPipeOptions, webSocket, extraImports = [], extraProviders = [], extraControllers = [], }) {
|
|
116
|
+
static initializeAuthOptions({ userEntity, jwt, login, register, updateAccount, getAccount, resetPassword, refreshToken, passwordless, validationPipeOptions, webSocket, extraImports = [], extraProviders = [], extraControllers = [], }) {
|
|
102
117
|
return {
|
|
103
118
|
userEntity: userEntity,
|
|
104
119
|
jwt: {
|
|
@@ -137,6 +152,12 @@ let AuthModule = AuthModule_1 = class AuthModule {
|
|
|
137
152
|
refreshTokenField: refreshToken?.refreshTokenField,
|
|
138
153
|
useCookie: refreshToken?.useCookie ?? false,
|
|
139
154
|
},
|
|
155
|
+
passwordless: passwordless
|
|
156
|
+
? {
|
|
157
|
+
...passwordless,
|
|
158
|
+
otpExpirationMinutes: passwordless.otpExpirationMinutes ?? 10,
|
|
159
|
+
}
|
|
160
|
+
: undefined,
|
|
140
161
|
validationPipeOptions: validationPipeOptions,
|
|
141
162
|
webSocket,
|
|
142
163
|
extraImports,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.module.js","sourceRoot":"","sources":["../../../../libs/dynamic-api/src/modules/auth/auth.module.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,8CAA8C;AAC9C,2CAAwE;AACxE,qCAAwC;AAExC,+CAAkD;AAClD,+CAAkD;AAClD,iEAA4D;AAC5D,6CAAkE;AAClE,2CAAmF;AAGnF,6CAAyG;AACzG,+CAAyJ;
|
|
1
|
+
{"version":3,"file":"auth.module.js","sourceRoot":"","sources":["../../../../libs/dynamic-api/src/modules/auth/auth.module.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
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;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.SendOtpCodeDto = void 0;
|
|
13
|
+
const swagger_1 = require("@nestjs/swagger");
|
|
14
|
+
const class_validator_1 = require("class-validator");
|
|
15
|
+
class SendOtpCodeDto {
|
|
16
|
+
}
|
|
17
|
+
exports.SendOtpCodeDto = SendOtpCodeDto;
|
|
18
|
+
__decorate([
|
|
19
|
+
(0, class_validator_1.IsString)(),
|
|
20
|
+
(0, class_validator_1.IsNotEmpty)(),
|
|
21
|
+
(0, swagger_1.ApiProperty)({ description: 'User identifier (e.g. email address).' }),
|
|
22
|
+
__metadata("design:type", String)
|
|
23
|
+
], SendOtpCodeDto.prototype, "identifier", void 0);
|
|
24
|
+
//# sourceMappingURL=send-otp-code.dto.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"send-otp-code.dto.js","sourceRoot":"","sources":["../../../../../libs/dynamic-api/src/modules/auth/dtos/send-otp-code.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6CAA8C;AAC9C,qDAAuD;AAEvD,MAAa,cAAc;CAK1B;AALD,wCAKC;AADC;IAHC,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,GAAE;IACZ,IAAA,qBAAW,EAAC,EAAE,WAAW,EAAE,uCAAuC,EAAE,CAAC;;kDACnD"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
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;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.VerifyOtpCodeDto = void 0;
|
|
13
|
+
const swagger_1 = require("@nestjs/swagger");
|
|
14
|
+
const class_validator_1 = require("class-validator");
|
|
15
|
+
class VerifyOtpCodeDto {
|
|
16
|
+
}
|
|
17
|
+
exports.VerifyOtpCodeDto = VerifyOtpCodeDto;
|
|
18
|
+
__decorate([
|
|
19
|
+
(0, class_validator_1.IsString)(),
|
|
20
|
+
(0, class_validator_1.IsNotEmpty)(),
|
|
21
|
+
(0, swagger_1.ApiProperty)({ description: 'User identifier (e.g. email address).' }),
|
|
22
|
+
__metadata("design:type", String)
|
|
23
|
+
], VerifyOtpCodeDto.prototype, "identifier", void 0);
|
|
24
|
+
__decorate([
|
|
25
|
+
(0, class_validator_1.IsString)(),
|
|
26
|
+
(0, class_validator_1.IsNotEmpty)(),
|
|
27
|
+
(0, class_validator_1.Length)(6, 6),
|
|
28
|
+
(0, swagger_1.ApiProperty)({ description: '6-digit one-time code sent to the user.' }),
|
|
29
|
+
__metadata("design:type", String)
|
|
30
|
+
], VerifyOtpCodeDto.prototype, "code", void 0);
|
|
31
|
+
//# sourceMappingURL=verify-otp-code.dto.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verify-otp-code.dto.js","sourceRoot":"","sources":["../../../../../libs/dynamic-api/src/modules/auth/dtos/verify-otp-code.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6CAA8C;AAC9C,qDAA+D;AAE/D,MAAa,gBAAgB;CAW5B;AAXD,4CAWC;AAPC;IAHC,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,GAAE;IACZ,IAAA,qBAAW,EAAC,EAAE,WAAW,EAAE,uCAAuC,EAAE,CAAC;;oDACnD;AAMnB;IAJC,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,GAAE;IACZ,IAAA,wBAAM,EAAC,CAAC,EAAE,CAAC,CAAC;IACZ,IAAA,qBAAW,EAAC,EAAE,WAAW,EAAE,yCAAyC,EAAE,CAAC;;8CAC3D"}
|
|
@@ -3,4 +3,5 @@ export * from './jwt-refresh/jwt-refresh.guard';
|
|
|
3
3
|
export * from './jwt-socket-auth/jwt-socket-auth.guard';
|
|
4
4
|
export * from './jwt-socket-refresh/jwt-socket-refresh.guard';
|
|
5
5
|
export * from './local-auth/local-auth.guard';
|
|
6
|
+
export * from './passwordless/passwordless.guard';
|
|
6
7
|
export * from './reset-password/reset-password.guard';
|
|
@@ -19,5 +19,6 @@ __exportStar(require("./jwt-refresh/jwt-refresh.guard"), exports);
|
|
|
19
19
|
__exportStar(require("./jwt-socket-auth/jwt-socket-auth.guard"), exports);
|
|
20
20
|
__exportStar(require("./jwt-socket-refresh/jwt-socket-refresh.guard"), exports);
|
|
21
21
|
__exportStar(require("./local-auth/local-auth.guard"), exports);
|
|
22
|
+
__exportStar(require("./passwordless/passwordless.guard"), exports);
|
|
22
23
|
__exportStar(require("./reset-password/reset-password.guard"), exports);
|
|
23
24
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../libs/dynamic-api/src/modules/auth/guards/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4DAA0C;AAC1C,kEAAgD;AAChD,0EAAwD;AACxD,gFAA8D;AAC9D,gEAA8C;AAC9C,wEAAsD"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../libs/dynamic-api/src/modules/auth/guards/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4DAA0C;AAC1C,kEAAgD;AAChD,0EAAwD;AACxD,gFAA8D;AAC9D,gEAA8C;AAC9C,oEAAkD;AAClD,wEAAsD"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
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;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.PasswordlessGuard = void 0;
|
|
13
|
+
const common_1 = require("@nestjs/common");
|
|
14
|
+
let PasswordlessGuard = class PasswordlessGuard {
|
|
15
|
+
constructor(configured) {
|
|
16
|
+
this.configured = configured;
|
|
17
|
+
}
|
|
18
|
+
canActivate(_context) {
|
|
19
|
+
if (!this.configured) {
|
|
20
|
+
throw new common_1.ServiceUnavailableException('This feature is not available');
|
|
21
|
+
}
|
|
22
|
+
return true;
|
|
23
|
+
}
|
|
24
|
+
};
|
|
25
|
+
exports.PasswordlessGuard = PasswordlessGuard;
|
|
26
|
+
exports.PasswordlessGuard = PasswordlessGuard = __decorate([
|
|
27
|
+
(0, common_1.Injectable)(),
|
|
28
|
+
__metadata("design:paramtypes", [Boolean])
|
|
29
|
+
], PasswordlessGuard);
|
|
30
|
+
//# sourceMappingURL=passwordless.guard.js.map
|