mongodb-dynamic-api 4.1.0 → 4.1.2

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 CHANGED
@@ -1,5 +1,19 @@
1
1
  Changelog
2
2
 
3
+ ## [4.1.2](https://github.com/MikeDev75015/mongodb-dynamic-api/compare/v4.1.1...v4.1.2) (2026-03-16)
4
+
5
+
6
+ ### auth
7
+
8
+ * **auth:** bypass passport-local missing credentials check when customValidate is defined ([6274c6d](https://github.com/MikeDev75015/mongodb-dynamic-api/commit/6274c6d0f3a8251289582dbd59f42d78c34408ac))
9
+
10
+ ## [4.1.1](https://github.com/MikeDev75015/mongodb-dynamic-api/compare/v4.1.0...v4.1.1) (2026-03-16)
11
+
12
+
13
+ ### auth
14
+
15
+ * **auth:** remove shadowing Entity generic from customValidate and LocalStrategy ([b077101](https://github.com/MikeDev75015/mongodb-dynamic-api/commit/b077101839ed16b3d29b0c56f1e2aae007f233c9))
16
+
3
17
  ## [4.1.0](https://github.com/MikeDev75015/mongodb-dynamic-api/compare/v4.0.0...v4.1.0) (2026-03-15)
4
18
 
5
19
 
package/README.md CHANGED
@@ -84,7 +84,7 @@ npm install --save mongodb-dynamic-api
84
84
  > - **`refreshToken.refreshTokenField`** — entity field storing the bcrypt hash (enables server-side revocation)
85
85
  > - **`refreshToken.useCookie`** — send/read refresh token via httpOnly cookie (`cookie-parser` auto-registered)
86
86
  >
87
- > 📖 **Full migration guide:** [README/authentication.md → Migration Guide (v3 → v4)](https://github.com/MikeDev75015/mongodb-dynamic-api/blob/develop/README/authentication.md#migration-guide-v3--v4)
87
+ > 📖 **Full migration guide:** [README/authentication.md → Migration Guide (v3 → v4)](https://github.com/MikeDev75015/mongodb-dynamic-api/blob/main/README/authentication.md#migration-guide-v3--v4)
88
88
 
89
89
  ---
90
90
 
@@ -234,7 +234,7 @@ export class User extends BaseEntity {
234
234
  > - `BaseEntity` provides `id`, `createdAt`, and `updatedAt` fields automatically
235
235
  > - Timestamps are **automatically enabled** - no need to add `timestamps: true` in `@Schema()`
236
236
  > - `_id` and `__v` are automatically excluded from JSON responses
237
- > - See [Entities documentation](https://github.com/MikeDev75015/mongodb-dynamic-api/blob/develop/README/entities.md) for more details
237
+ > - See [Entities documentation](https://github.com/MikeDev75015/mongodb-dynamic-api/blob/main/README/entities.md) for more details
238
238
 
239
239
  ### Step 3: Create a Feature Module
240
240
 
@@ -871,7 +871,7 @@ export class User extends BaseEntity {
871
871
  }
872
872
  ```
873
873
 
874
- > 📚 **Learn More:** See [Schema Options](https://github.com/MikeDev75015/mongodb-dynamic-api/blob/develop/README/schema-options.md) and [Validation](https://github.com/MikeDev75015/mongodb-dynamic-api/blob/develop/README/validation.md) guides.
874
+ > 📚 **Learn More:** See [Schema Options](https://github.com/MikeDev75015/mongodb-dynamic-api/blob/main/README/schema-options.md) and [Validation](https://github.com/MikeDev75015/mongodb-dynamic-api/blob/main/README/validation.md) guides.
875
875
 
876
876
  ---
877
877
 
@@ -881,22 +881,22 @@ Explore advanced features and configurations:
881
881
 
882
882
  ### Core Concepts
883
883
 
884
- - **[Entities](https://github.com/MikeDev75015/mongodb-dynamic-api/blob/develop/README/entities.md)** - Learn about BaseEntity and SoftDeletableEntity (timestamps auto-enabled)
885
- - **[Schema Options](https://github.com/MikeDev75015/mongodb-dynamic-api/blob/develop/README/schema-options.md)** - Configure indexes, hooks with options (document/query), and custom initialization
884
+ - **[Entities](https://github.com/MikeDev75015/mongodb-dynamic-api/blob/main/README/entities.md)** - Learn about BaseEntity and SoftDeletableEntity (timestamps auto-enabled)
885
+ - **[Schema Options](https://github.com/MikeDev75015/mongodb-dynamic-api/blob/main/README/schema-options.md)** - Configure indexes, hooks with options (document/query), and custom initialization
886
886
 
887
887
  ### Optional Features (All Dependencies Included)
888
888
 
889
889
  | Feature | Description | Documentation |
890
890
  |---------|-------------|---------------|
891
- | 📚 **Swagger UI** | Auto-generated OpenAPI documentation | [View Guide](https://github.com/MikeDev75015/mongodb-dynamic-api/blob/develop/README/swagger-ui.md) |
892
- | 🔄 **Versioning** | URI-based API versioning | [View Guide](https://github.com/MikeDev75015/mongodb-dynamic-api/blob/develop/README/versioning.md) |
893
- | ✅ **Validation** | Request validation with class-validator | [View Guide](https://github.com/MikeDev75015/mongodb-dynamic-api/blob/develop/README/validation.md) |
894
- | ⚡ **Caching** | Global caching with auto-invalidation | [View Guide](https://github.com/MikeDev75015/mongodb-dynamic-api/blob/develop/README/caching.md) |
895
- | 🔐 **Authentication** | JWT dual-token auth (8 endpoints) — access + refresh tokens, cookie mode, server-side revocation | [View Guide](https://github.com/MikeDev75015/mongodb-dynamic-api/blob/develop/README/authentication.md) |
896
- | 🛡️ **Authorization** | Role-based access control | [View Guide](https://github.com/MikeDev75015/mongodb-dynamic-api/blob/develop/README/authorization.md) |
897
- | 📡 **WebSockets** | Socket.IO integration for routes | [View Guide](https://github.com/MikeDev75015/mongodb-dynamic-api/blob/develop/README/websockets.md) |
898
- | 🗂️ **Route Configuration** | All route options: DTOs, callbacks, interceptors, etc. | [View Guide](https://github.com/MikeDev75015/mongodb-dynamic-api/blob/develop/README/route-config.md) |
899
- | 🎛️ **Controller Configuration** | All `controllerOptions` and `forFeature` options | [View Guide](https://github.com/MikeDev75015/mongodb-dynamic-api/blob/develop/README/controller-config.md) |
891
+ | 📚 **Swagger UI** | Auto-generated OpenAPI documentation | [View Guide](https://github.com/MikeDev75015/mongodb-dynamic-api/blob/main/README/swagger-ui.md) |
892
+ | 🔄 **Versioning** | URI-based API versioning | [View Guide](https://github.com/MikeDev75015/mongodb-dynamic-api/blob/main/README/versioning.md) |
893
+ | ✅ **Validation** | Request validation with class-validator | [View Guide](https://github.com/MikeDev75015/mongodb-dynamic-api/blob/main/README/validation.md) |
894
+ | ⚡ **Caching** | Global caching with auto-invalidation | [View Guide](https://github.com/MikeDev75015/mongodb-dynamic-api/blob/main/README/caching.md) |
895
+ | 🔐 **Authentication** | JWT dual-token auth (8 endpoints) — access + refresh tokens, cookie mode, server-side revocation | [View Guide](https://github.com/MikeDev75015/mongodb-dynamic-api/blob/main/README/authentication.md) |
896
+ | 🛡️ **Authorization** | Role-based access control | [View Guide](https://github.com/MikeDev75015/mongodb-dynamic-api/blob/main/README/authorization.md) |
897
+ | 📡 **WebSockets** | Socket.IO integration for routes | [View Guide](https://github.com/MikeDev75015/mongodb-dynamic-api/blob/main/README/websockets.md) |
898
+ | 🗂️ **Route Configuration** | All route options: DTOs, callbacks, interceptors, etc. | [View Guide](https://github.com/MikeDev75015/mongodb-dynamic-api/blob/main/README/route-config.md) |
899
+ | 🎛️ **Controller Configuration** | All `controllerOptions` and `forFeature` options | [View Guide](https://github.com/MikeDev75015/mongodb-dynamic-api/blob/main/README/controller-config.md) |
900
900
 
901
901
  ### Important Notes
902
902
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mongodb-dynamic-api",
3
- "version": "4.1.0",
3
+ "version": "4.1.2",
4
4
  "description": "Auto generated CRUD API for MongoDB using NestJS",
5
5
  "readmeFilename": "README.md",
6
6
  "main": "index.js",
@@ -55,17 +55,21 @@ function createLocalStrategyProvider(loginField, passwordField, abilityPredicate
55
55
  this.abilityPredicate = abilityPredicate;
56
56
  this.customValidate = customValidate;
57
57
  }
58
+ authenticate(req, options) {
59
+ if (!this.customValidate) {
60
+ return super.authenticate(req, options);
61
+ }
62
+ const login = req.body?.[loginField] ?? '';
63
+ const pass = req.body?.[passwordField] ?? '';
64
+ this.validate(req, login, pass)
65
+ .then((user) => this.success(user))
66
+ .catch((err) => this.error(err));
67
+ }
58
68
  async validate(req, login, pass) {
59
- if (this.customValidate) {
60
- const user = await this.customValidate(req);
61
- if (user) {
62
- if (this.abilityPredicate && !this.abilityPredicate(user)) {
63
- throw new common_1.ForbiddenException('Access denied');
64
- }
65
- return user;
66
- }
69
+ let user = this.customValidate ? await this.customValidate(req) : null;
70
+ if (!user) {
71
+ user = await this.authService.validateUser(login, pass);
67
72
  }
68
- const user = await this.authService.validateUser(login, pass);
69
73
  if (!user) {
70
74
  throw new common_1.UnauthorizedException('Invalid credentials');
71
75
  }
@@ -1 +1 @@
1
- {"version":3,"file":"auth.helper.js","sourceRoot":"","sources":["../../../../libs/dynamic-api/src/modules/auth/auth.helper.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auth.helper.js","sourceRoot":"","sources":["../../../../libs/dynamic-api/src/modules/auth/auth.helper.ts"],"names":[],"mappings":"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"}
package/src/version.json CHANGED
@@ -1,3 +1,3 @@
1
1
  {
2
- "version": "4.1.0"
2
+ "version": "4.1.2"
3
3
  }
@@ -1,7 +1,21 @@
1
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
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
2
14
  Object.defineProperty(exports, "__esModule", { value: true });
3
15
  const common_1 = require("@nestjs/common");
16
+ const passport_1 = require("@nestjs/passport");
4
17
  const mongoose_1 = require("mongoose");
18
+ const passport_local_1 = require("passport-local");
5
19
  const src_1 = require("../../src");
6
20
  const e2e_setup_1 = require("../e2e.setup");
7
21
  require("dotenv/config");
@@ -100,4 +114,212 @@ describe('DynamicApiModule forRoot - POST /auth/login with login options (e2e)',
100
114
  });
101
115
  });
102
116
  });
117
+ describe('DynamicApiModule forRoot - POST /auth/login with customValidate (e2e)', () => {
118
+ const User = (0, shared_1.createLoginUserEntity)();
119
+ const admin = shared_1.LOGIN_ADMIN;
120
+ const user = shared_1.LOGIN_USER;
121
+ beforeEach(() => {
122
+ src_1.DynamicApiModule.state['resetState']();
123
+ });
124
+ afterEach(async () => {
125
+ await (0, e2e_setup_1.closeTestingApp)(mongoose_1.default.connections);
126
+ });
127
+ describe('when customValidate returns a user', () => {
128
+ beforeEach(async () => {
129
+ const bcryptService = new src_1.BcryptService();
130
+ const fixtures = async (_) => {
131
+ const model = await (0, utils_1.getModelFromEntity)(User);
132
+ await model.insertMany([
133
+ { ...admin, pass: await bcryptService.hashPassword(admin.pass) },
134
+ { ...user, pass: await bcryptService.hashPassword(user.pass) },
135
+ ]);
136
+ };
137
+ await (0, shared_1.initModule)({
138
+ useAuth: {
139
+ userEntity: User,
140
+ login: {
141
+ loginField: 'username',
142
+ passwordField: 'pass',
143
+ additionalFields: ['role', 'isVerified'],
144
+ customValidate: async (req) => {
145
+ const deviceToken = req.body?.deviceToken;
146
+ if (!deviceToken) {
147
+ return null;
148
+ }
149
+ if (deviceToken === 'valid-device-token') {
150
+ return {
151
+ id: 'device-user-id',
152
+ username: 'device-user',
153
+ role: 'admin',
154
+ isVerified: true,
155
+ };
156
+ }
157
+ return null;
158
+ },
159
+ },
160
+ },
161
+ }, fixtures);
162
+ });
163
+ it('should login via customValidate without password check when device token is valid', async () => {
164
+ const { body, status } = await e2e_setup_1.server.post('/auth/login', {
165
+ username: 'any',
166
+ pass: 'any',
167
+ deviceToken: 'valid-device-token',
168
+ });
169
+ expect(status).toBe(200);
170
+ expect(body).toHaveProperty('accessToken');
171
+ });
172
+ it('should login via customValidate even when username and password are missing from request body', async () => {
173
+ const { body, status } = await e2e_setup_1.server.post('/auth/login', {
174
+ deviceToken: 'valid-device-token',
175
+ });
176
+ expect(status).toBe(200);
177
+ expect(body).toHaveProperty('accessToken');
178
+ });
179
+ it('should login via customValidate when password is empty', async () => {
180
+ const { body, status } = await e2e_setup_1.server.post('/auth/login', {
181
+ username: 'any',
182
+ pass: '',
183
+ deviceToken: 'valid-device-token',
184
+ });
185
+ expect(status).toBe(200);
186
+ expect(body).toHaveProperty('accessToken');
187
+ });
188
+ it('should fall back to normal password validation when customValidate returns null', async () => {
189
+ const { username, pass } = admin;
190
+ const { body, status } = await e2e_setup_1.server.post('/auth/login', { username, pass });
191
+ expect(status).toBe(200);
192
+ expect(body).toHaveProperty('accessToken');
193
+ });
194
+ it('should return 401 when customValidate returns null and password is wrong', async () => {
195
+ const { body, status } = await e2e_setup_1.server.post('/auth/login', {
196
+ username: admin.username,
197
+ pass: 'wrong-password',
198
+ });
199
+ expect(status).toBe(401);
200
+ expect(body).toEqual({
201
+ error: 'Unauthorized',
202
+ message: 'Invalid credentials',
203
+ statusCode: 401,
204
+ });
205
+ });
206
+ });
207
+ describe('when customValidate is combined with abilityPredicate', () => {
208
+ beforeEach(async () => {
209
+ const bcryptService = new src_1.BcryptService();
210
+ const fixtures = async (_) => {
211
+ const model = await (0, utils_1.getModelFromEntity)(User);
212
+ await model.insertMany([
213
+ { ...admin, pass: await bcryptService.hashPassword(admin.pass) },
214
+ ]);
215
+ };
216
+ await (0, shared_1.initModule)({
217
+ useAuth: {
218
+ userEntity: User,
219
+ login: {
220
+ loginField: 'username',
221
+ passwordField: 'pass',
222
+ abilityPredicate: (u) => u.role === 'admin',
223
+ customValidate: async (req) => {
224
+ const deviceToken = req.body?.deviceToken;
225
+ if (deviceToken === 'client-device') {
226
+ return {
227
+ id: 'client-id',
228
+ username: 'client-device-user',
229
+ role: 'client',
230
+ isVerified: true,
231
+ };
232
+ }
233
+ return null;
234
+ },
235
+ },
236
+ },
237
+ }, fixtures);
238
+ });
239
+ it('should return 403 when customValidate user is rejected by abilityPredicate', async () => {
240
+ const { body, status } = await e2e_setup_1.server.post('/auth/login', {
241
+ username: 'any',
242
+ pass: 'any',
243
+ deviceToken: 'client-device',
244
+ });
245
+ expect(status).toBe(403);
246
+ expect(body).toEqual({
247
+ error: 'Forbidden',
248
+ message: 'Access denied',
249
+ statusCode: 403,
250
+ });
251
+ });
252
+ });
253
+ });
254
+ describe('DynamicApiModule forRoot - POST /auth/login with useStrategy (e2e)', () => {
255
+ const User = (0, shared_1.createLoginUserEntity)();
256
+ const admin = shared_1.LOGIN_ADMIN;
257
+ beforeEach(() => {
258
+ src_1.DynamicApiModule.state['resetState']();
259
+ });
260
+ afterEach(async () => {
261
+ await (0, e2e_setup_1.closeTestingApp)(mongoose_1.default.connections);
262
+ });
263
+ describe('when a custom Passport strategy is provided', () => {
264
+ beforeEach(async () => {
265
+ const bcryptService = new src_1.BcryptService();
266
+ const fixtures = async (_) => {
267
+ const model = await (0, utils_1.getModelFromEntity)(User);
268
+ await model.insertMany([
269
+ { ...admin, pass: await bcryptService.hashPassword(admin.pass) },
270
+ ]);
271
+ };
272
+ let CustomLocalStrategy = class CustomLocalStrategy extends (0, passport_1.PassportStrategy)(passport_local_1.Strategy, 'local') {
273
+ constructor(authService) {
274
+ super({ usernameField: 'username', passwordField: 'pass' });
275
+ this.authService = authService;
276
+ }
277
+ async validate(username, pass) {
278
+ const user = await this.authService.validateUser(username, pass);
279
+ if (!user) {
280
+ throw new common_1.UnauthorizedException('Custom strategy: invalid credentials');
281
+ }
282
+ if (user.role !== 'admin') {
283
+ throw new common_1.ForbiddenException('Custom strategy: admins only');
284
+ }
285
+ return user;
286
+ }
287
+ };
288
+ CustomLocalStrategy = __decorate([
289
+ (0, common_1.Injectable)(),
290
+ __param(0, (0, common_1.Inject)('DynamicApiAuthService')),
291
+ __metadata("design:paramtypes", [Object])
292
+ ], CustomLocalStrategy);
293
+ await (0, shared_1.initModule)({
294
+ useAuth: {
295
+ userEntity: User,
296
+ login: {
297
+ loginField: 'username',
298
+ passwordField: 'pass',
299
+ additionalFields: ['role', 'isVerified'],
300
+ useStrategy: CustomLocalStrategy,
301
+ },
302
+ },
303
+ }, fixtures);
304
+ });
305
+ it('should login successfully using the custom strategy', async () => {
306
+ const { username, pass } = admin;
307
+ const { body, status } = await e2e_setup_1.server.post('/auth/login', { username, pass });
308
+ expect(status).toBe(200);
309
+ expect(body).toHaveProperty('accessToken');
310
+ });
311
+ it('should return 401 when custom strategy rejects credentials', async () => {
312
+ const { body, status } = await e2e_setup_1.server.post('/auth/login', {
313
+ username: 'unknown',
314
+ pass: 'wrong',
315
+ });
316
+ expect(status).toBe(401);
317
+ expect(body).toEqual({
318
+ error: 'Unauthorized',
319
+ message: 'Custom strategy: invalid credentials',
320
+ statusCode: 401,
321
+ });
322
+ });
323
+ });
324
+ });
103
325
  //# sourceMappingURL=auth-api-login.e2e-spec.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"auth-api-login.e2e-spec.js","sourceRoot":"","sources":["../../../libs/dynamic-api/test/for-root/auth-api-login.e2e-spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auth-api-login.e2e-spec.js","sourceRoot":"","sources":["../../../libs/dynamic-api/test/for-root/auth-api-login.e2e-spec.ts"],"names":[],"mappings":"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"}