@evara-group/guard 3.0.10 → 3.0.12

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 (57) hide show
  1. package/dist/core/utils/throttler-exception-filter.d.ts +7 -0
  2. package/dist/core/utils/throttler-exception-filter.js +48 -0
  3. package/dist/core/utils/throttler-exception-filter.js.map +1 -0
  4. package/dist/database/seeders/permissions.seeder.js +3 -3
  5. package/dist/database/seeders/permissions.seeder.js.map +1 -1
  6. package/dist/dev-server.d.ts +1 -0
  7. package/dist/dev-server.js +72 -0
  8. package/dist/dev-server.js.map +1 -0
  9. package/dist/modules/app.module.d.ts +8 -0
  10. package/dist/modules/app.module.js +31 -0
  11. package/dist/modules/app.module.js.map +1 -1
  12. package/dist/modules/auth/auth.controller.d.ts +5 -0
  13. package/dist/modules/auth/auth.controller.js +46 -0
  14. package/dist/modules/auth/auth.controller.js.map +1 -1
  15. package/dist/modules/auth/auth.service.d.ts +9 -1
  16. package/dist/modules/auth/auth.service.js +66 -2
  17. package/dist/modules/auth/auth.service.js.map +1 -1
  18. package/dist/modules/auth/dto/auth-forget-password.dto.d.ts +3 -0
  19. package/dist/modules/auth/dto/auth-forget-password.dto.js +29 -0
  20. package/dist/modules/auth/dto/auth-forget-password.dto.js.map +1 -0
  21. package/dist/modules/auth/dto/reset-password.dto.d.ts +4 -0
  22. package/dist/modules/auth/dto/reset-password.dto.js +32 -0
  23. package/dist/modules/auth/dto/reset-password.dto.js.map +1 -0
  24. package/dist/modules/mail/dto/mail-metadata.dto.d.ts +6 -0
  25. package/dist/modules/mail/dto/mail-metadata.dto.js +38 -0
  26. package/dist/modules/mail/dto/mail-metadata.dto.js.map +1 -0
  27. package/dist/modules/mail/mail.module.d.ts +12 -0
  28. package/dist/modules/mail/mail.module.js +57 -0
  29. package/dist/modules/mail/mail.module.js.map +1 -0
  30. package/dist/modules/mail/mail.service.d.ts +10 -0
  31. package/dist/modules/mail/mail.service.js +60 -0
  32. package/dist/modules/mail/mail.service.js.map +1 -0
  33. package/dist/modules/mail/templates/ar/reset-password.ejs +36 -0
  34. package/dist/modules/mail/templates/en/reset-password.ejs +38 -0
  35. package/dist/modules/module/dtos/create-module.dto.d.ts +1 -1
  36. package/dist/modules/module/dtos/update-module.dto.d.ts +1 -1
  37. package/dist/modules/role/dtos/create-role.dto.d.ts +1 -1
  38. package/dist/modules/role/role.controller.js +3 -0
  39. package/dist/modules/role/role.controller.js.map +1 -1
  40. package/dist/modules/user/dtos/create-user.dto.d.ts +1 -1
  41. package/dist/modules/user/user.controller.d.ts +3 -1
  42. package/dist/modules/user/user.controller.js +13 -2
  43. package/dist/modules/user/user.controller.js.map +1 -1
  44. package/dist/security/guards/language.guard.d.ts +4 -0
  45. package/dist/security/guards/language.guard.js +25 -0
  46. package/dist/security/guards/language.guard.js.map +1 -0
  47. package/dist/security/transformers/lower-case.transformer.d.ts +3 -0
  48. package/dist/security/transformers/lower-case.transformer.js +6 -0
  49. package/dist/security/transformers/lower-case.transformer.js.map +1 -0
  50. package/dist/security/transformers/remove-spaces.transformer.d.ts +3 -0
  51. package/dist/security/transformers/remove-spaces.transformer.js +6 -0
  52. package/dist/security/transformers/remove-spaces.transformer.js.map +1 -0
  53. package/dist/security/validators/strong-password.validator.d.ts +1 -0
  54. package/dist/security/validators/strong-password.validator.js +10 -0
  55. package/dist/security/validators/strong-password.validator.js.map +1 -0
  56. package/dist/tsconfig.tsbuildinfo +1 -1
  57. package/package.json +7 -3
@@ -0,0 +1,7 @@
1
+ import { ExceptionFilter, ArgumentsHost } from "@nestjs/common";
2
+ import { ThrottlerException } from "@nestjs/throttler";
3
+ export declare class CustomThrottlerExceptionFilter implements ExceptionFilter {
4
+ catch(exception: ThrottlerException, host: ArgumentsHost): void;
5
+ private getThrottlerName;
6
+ private getCustomMessage;
7
+ }
@@ -0,0 +1,48 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.CustomThrottlerExceptionFilter = void 0;
10
+ const common_1 = require("@nestjs/common");
11
+ const throttler_1 = require("@nestjs/throttler");
12
+ let CustomThrottlerExceptionFilter = class CustomThrottlerExceptionFilter {
13
+ catch(exception, host) {
14
+ const ctx = host.switchToHttp();
15
+ const response = ctx.getResponse();
16
+ const request = ctx.getRequest();
17
+ const throttlerName = this.getThrottlerName(request);
18
+ const customMessage = this.getCustomMessage(throttlerName);
19
+ response.status(common_1.HttpStatus.TOO_MANY_REQUESTS).json({
20
+ statusCode: common_1.HttpStatus.TOO_MANY_REQUESTS,
21
+ message: customMessage,
22
+ });
23
+ }
24
+ getThrottlerName(request) {
25
+ const path = request.url;
26
+ if (path.includes("/auth/login") || path.includes("/login")) {
27
+ return "login";
28
+ }
29
+ if (path.includes("/auth/forget-password") ||
30
+ path.includes("/forget-password")) {
31
+ return "forgetPassword";
32
+ }
33
+ return "default";
34
+ }
35
+ getCustomMessage(throttlerName) {
36
+ const messages = {
37
+ login: "Too many login attempts. Please wait 15 minutes before trying again.",
38
+ forgetPassword: "Too many reset requests. Please wait an hour before trying again.",
39
+ default: "ThrottlerException: Too Many Requests",
40
+ };
41
+ return messages[throttlerName] || messages.default;
42
+ }
43
+ };
44
+ exports.CustomThrottlerExceptionFilter = CustomThrottlerExceptionFilter;
45
+ exports.CustomThrottlerExceptionFilter = CustomThrottlerExceptionFilter = __decorate([
46
+ (0, common_1.Catch)(throttler_1.ThrottlerException)
47
+ ], CustomThrottlerExceptionFilter);
48
+ //# sourceMappingURL=throttler-exception-filter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"throttler-exception-filter.js","sourceRoot":"","sources":["../../../src/core/utils/throttler-exception-filter.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAKwB;AACxB,iDAAuD;AAIhD,IAAM,8BAA8B,GAApC,MAAM,8BAA8B;IACzC,KAAK,CAAC,SAA6B,EAAE,IAAmB;QACtD,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QAChC,MAAM,QAAQ,GAAG,GAAG,CAAC,WAAW,EAAY,CAAC;QAC7C,MAAM,OAAO,GAAG,GAAG,CAAC,UAAU,EAAW,CAAC;QAG1C,MAAM,aAAa,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAGrD,MAAM,aAAa,GAAG,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;QAG3D,QAAQ,CAAC,MAAM,CAAC,mBAAU,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC;YACjD,UAAU,EAAE,mBAAU,CAAC,iBAAiB;YACxC,OAAO,EAAE,aAAa;SACvB,CAAC,CAAC;IACL,CAAC;IAGO,gBAAgB,CAAC,OAAgB;QACvC,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC;QAEzB,IAAI,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5D,OAAO,OAAO,CAAC;QACjB,CAAC;QAED,IACE,IAAI,CAAC,QAAQ,CAAC,uBAAuB,CAAC;YACtC,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EACjC,CAAC;YACD,OAAO,gBAAgB,CAAC;QAC1B,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAEO,gBAAgB,CAAC,aAAqB;QAC5C,MAAM,QAAQ,GAA2B;YACvC,KAAK,EACH,sEAAsE;YACxE,cAAc,EACZ,mEAAmE;YACrE,OAAO,EAAE,uCAAuC;SACjD,CAAC;QAEF,OAAO,QAAQ,CAAC,aAAa,CAAC,IAAI,QAAQ,CAAC,OAAO,CAAC;IACrD,CAAC;CACF,CAAA;AAhDY,wEAA8B;yCAA9B,8BAA8B;IAD1C,IAAA,cAAK,EAAC,8BAAkB,CAAC;GACb,8BAA8B,CAgD1C"}
@@ -16,9 +16,9 @@ class PermissionsSeeder {
16
16
  let perms = [];
17
17
  if ((m.code || "") === "ORGANIZATION_SETTINGS") {
18
18
  const entities = [
19
- { en: "MINISTRIES", ar: "الوزارات" },
20
- { en: "DEPARTMENTS", ar: "الإدارات" },
21
- { en: "AGENCIES", ar: "الهيئات" },
19
+ { en: "MINISTRY", ar: "الوزارة" },
20
+ { en: "DEPARTMENT", ar: "الادارة" },
21
+ { en: "AGENCY", ar: "الوكالة" },
22
22
  { en: "USER", ar: "مستخدم" },
23
23
  { en: "ROLE", ar: "دور" },
24
24
  { en: "PERMISSION", ar: "صلاحية" },
@@ -1 +1 @@
1
- {"version":3,"file":"permissions.seeder.js","sourceRoot":"","sources":["../../../src/database/seeders/permissions.seeder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"permissions.seeder.js","sourceRoot":"","sources":["../../../src/database/seeders/permissions.seeder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ import "reflect-metadata";
@@ -0,0 +1,72 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ require("reflect-metadata");
10
+ const core_1 = require("@nestjs/core");
11
+ const common_1 = require("@nestjs/common");
12
+ const config_1 = require("@nestjs/config");
13
+ const throttler_1 = require("@nestjs/throttler");
14
+ const app_module_1 = require("./modules/app.module");
15
+ let DevAppModule = class DevAppModule {
16
+ };
17
+ DevAppModule = __decorate([
18
+ (0, common_1.Module)({
19
+ imports: [
20
+ config_1.ConfigModule.forRoot({ isGlobal: true }),
21
+ throttler_1.ThrottlerModule.forRoot([
22
+ {
23
+ name: "login",
24
+ ttl: 10 * 60 * 1000,
25
+ limit: 1000,
26
+ blockDuration: 15 * 60 * 1000,
27
+ },
28
+ {
29
+ name: "forgetPassword",
30
+ ttl: 15 * 60 * 1000,
31
+ limit: 1000,
32
+ blockDuration: 60 * 60 * 1000,
33
+ },
34
+ ]),
35
+ app_module_1.AuthorizationGuardModule.forRoot({
36
+ database: {
37
+ name: process.env.AUTH_DATABASE_NAME || "auth_db",
38
+ host: process.env.AUTH_DATABASE_HOST || "localhost",
39
+ port: Number(process.env.AUTH_DATABASE_PORT || 5432),
40
+ user: process.env.AUTH_DATABASE_USER || "postgres",
41
+ password: process.env.AUTH_DATABASE_PASSWORD || "postgres",
42
+ ssl: process.env.AUTH_DATABASE_SSL === "true" ||
43
+ process.env.DATABASE_SSL === "true" ||
44
+ false,
45
+ },
46
+ jwtSecret: process.env.JWT_SECRET ||
47
+ process.env.APP_SECRET_KEY ||
48
+ "default_jwt_secret",
49
+ expiresIn: process.env.JWT_EXPIRES_IN || "7d",
50
+ mail: {
51
+ host: process.env.EMAIL_HOST || "localhost",
52
+ port: Number(process.env.EMAIL_PORT || 587),
53
+ secure: process.env.SMTP_SECURE === "true",
54
+ user: process.env.EMAIL_USER || "user",
55
+ password: process.env.EMAIL_PASSWORD || "pass",
56
+ },
57
+ }),
58
+ ],
59
+ })
60
+ ], DevAppModule);
61
+ async function bootstrap() {
62
+ const app = await core_1.NestFactory.create(DevAppModule, {
63
+ logger: ["log", "error", "warn", "debug"],
64
+ });
65
+ const port = Number(process.env.AUTH_DEV_PORT || 4000);
66
+ await app.listen(port);
67
+ console.log(`Auth dev server running on http://localhost:${port}`);
68
+ }
69
+ bootstrap().catch((err) => {
70
+ console.error("Failed to start dev auth server", err);
71
+ });
72
+ //# sourceMappingURL=dev-server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dev-server.js","sourceRoot":"","sources":["../src/dev-server.ts"],"names":[],"mappings":";;;;;;;;AAAA,4BAA0B;AAC1B,uCAA2C;AAC3C,2CAAwC;AACxC,2CAA8C;AAC9C,iDAAoD;AACpD,qDAAgE;AA8ChE,IAAM,YAAY,GAAlB,MAAM,YAAY;CAAG,CAAA;AAAf,YAAY;IA5CjB,IAAA,eAAM,EAAC;QACN,OAAO,EAAE;YACP,qBAAY,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;YACxC,2BAAe,CAAC,OAAO,CAAC;gBACtB;oBACE,IAAI,EAAE,OAAO;oBACb,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI;oBACnB,KAAK,EAAE,IAAI;oBACX,aAAa,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI;iBAC9B;gBACD;oBACE,IAAI,EAAE,gBAAgB;oBACtB,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI;oBACnB,KAAK,EAAE,IAAI;oBACX,aAAa,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI;iBAC9B;aACF,CAAC;YACF,qCAAwB,CAAC,OAAO,CAAC;gBAC/B,QAAQ,EAAE;oBACR,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,SAAS;oBACjD,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,WAAW;oBACnD,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,IAAI,CAAC;oBACpD,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,UAAU;oBAClD,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,sBAAsB,IAAI,UAAU;oBAC1D,GAAG,EACD,OAAO,CAAC,GAAG,CAAC,iBAAiB,KAAK,MAAM;wBACxC,OAAO,CAAC,GAAG,CAAC,YAAY,KAAK,MAAM;wBACnC,KAAK;iBACR;gBACD,SAAS,EACP,OAAO,CAAC,GAAG,CAAC,UAAU;oBACtB,OAAO,CAAC,GAAG,CAAC,cAAc;oBAC1B,oBAAoB;gBACtB,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,IAAI;gBAC7C,IAAI,EAAE;oBACJ,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,WAAW;oBAC3C,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC;oBAC3C,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,WAAW,KAAK,MAAM;oBAC1C,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,MAAM;oBACtC,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,MAAM;iBAC/C;aACF,CAAC;SACH;KACF,CAAC;GACI,YAAY,CAAG;AAErB,KAAK,UAAU,SAAS;IACtB,MAAM,GAAG,GAAG,MAAM,kBAAW,CAAC,MAAM,CAAC,YAAY,EAAE;QACjD,MAAM,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC;KAC1C,CAAC,CAAC;IAEH,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,IAAI,CAAC,CAAC;IACvD,MAAM,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAEvB,OAAO,CAAC,GAAG,CAAC,+CAA+C,IAAI,EAAE,CAAC,CAAC;AACrE,CAAC;AAED,SAAS,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IAExB,OAAO,CAAC,KAAK,CAAC,iCAAiC,EAAE,GAAG,CAAC,CAAC;AACxD,CAAC,CAAC,CAAC"}
@@ -10,6 +10,14 @@ export interface GuardModuleOptions {
10
10
  };
11
11
  jwtSecret: string;
12
12
  expiresIn?: string;
13
+ mail?: {
14
+ host?: string;
15
+ port?: number;
16
+ secure?: boolean;
17
+ user?: string;
18
+ password?: string;
19
+ clientUrl?: string;
20
+ };
13
21
  }
14
22
  export declare class AuthorizationGuardModule {
15
23
  static forRoot(options: GuardModuleOptions): DynamicModule;
@@ -24,6 +24,11 @@ const role_module_1 = require("./role/role.module");
24
24
  const permission_module_1 = require("./permission/permission.module");
25
25
  const user_permission_module_1 = require("./user-permission/user-permission.module");
26
26
  const role_permission_module_1 = require("./role-permission/role-permission.module");
27
+ const core_1 = require("@nestjs/core");
28
+ const throttler_exception_filter_1 = require("../core/utils/throttler-exception-filter");
29
+ const throttler_1 = require("@nestjs/throttler");
30
+ const language_guard_1 = require("../security/guards/language.guard");
31
+ const mail_module_1 = require("./mail/mail.module");
27
32
  let AuthorizationGuardModule = AuthorizationGuardModule_1 = class AuthorizationGuardModule {
28
33
  static forRoot(options) {
29
34
  const typeOrmConfig = {
@@ -65,6 +70,31 @@ let AuthorizationGuardModule = AuthorizationGuardModule_1 = class AuthorizationG
65
70
  permission_module_1.PermissionModule,
66
71
  user_permission_module_1.UserPermissionModule,
67
72
  role_permission_module_1.RolePermissionModule,
73
+ mail_module_1.MailModule.forRoot(options.mail ?? {}),
74
+ throttler_1.ThrottlerModule.forRoot([
75
+ {
76
+ name: "login",
77
+ ttl: (0, throttler_1.minutes)(10),
78
+ limit: 1000,
79
+ blockDuration: (0, throttler_1.minutes)(15),
80
+ },
81
+ {
82
+ name: "forgetPassword",
83
+ ttl: (0, throttler_1.minutes)(15),
84
+ limit: 1000,
85
+ blockDuration: (0, throttler_1.hours)(1),
86
+ },
87
+ ]),
88
+ ],
89
+ providers: [
90
+ {
91
+ provide: core_1.APP_FILTER,
92
+ useClass: throttler_exception_filter_1.CustomThrottlerExceptionFilter,
93
+ },
94
+ {
95
+ provide: core_1.APP_GUARD,
96
+ useClass: language_guard_1.LanguageGuard,
97
+ },
68
98
  ],
69
99
  exports: [
70
100
  typeorm_1.TypeOrmModule,
@@ -75,6 +105,7 @@ let AuthorizationGuardModule = AuthorizationGuardModule_1 = class AuthorizationG
75
105
  permission_module_1.PermissionModule,
76
106
  user_permission_module_1.UserPermissionModule,
77
107
  role_permission_module_1.RolePermissionModule,
108
+ mail_module_1.MailModule,
78
109
  ],
79
110
  };
80
111
  }
@@ -1 +1 @@
1
- {"version":3,"file":"app.module.js","sourceRoot":"","sources":["../../src/modules/app.module.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,2CAAuD;AACvD,6CAAsE;AACtE,oDAAgD;AAChD,sCAAqD;AACrD,oDAA0C;AAC1C,oDAAgD;AAChD,oDAA0C;AAC1C,sEAA4D;AAC5D,qFAA0E;AAC1E,qFAA0E;AAC1E,0DAAsD;AACtD,0DAAsD;AACtD,oDAAgD;AAChD,sEAAkE;AAClE,qFAAgF;AAChF,qFAAgF;AAiCzE,IAAM,wBAAwB,gCAA9B,MAAM,wBAAwB;IACnC,MAAM,CAAC,OAAO,CAAC,OAA2B;QAExC,MAAM,aAAa,GAAyB;YAC1C,IAAI,EAAE,iCAAwB;YAC9B,IAAI,EAAE,UAAU;YAChB,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,IAAI;YAC3B,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,IAAI;YAC3B,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,IAAI;YAC/B,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,QAAQ;YACnC,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,IAAI;YAC/B,QAAQ,EAAE;gBACR,kBAAI;gBACJ,4BAAY;gBACZ,kBAAI;gBACJ,8BAAU;gBACV,uCAAc;gBACd,uCAAc;aACf;YACD,WAAW,EAAE,KAAK;YAClB,GAAG,EAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,kBAAkB,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK;YACjE,OAAO,EAAE,KAAK;YACd,qBAAqB,EAAE,KAAK;SAC7B,CAAC;QAEF,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;YAC5B,OAAO,CAAC,GAAG,CAAC,UAAU,GAAG,OAAO,CAAC,SAAS,CAAC;QAC7C,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;YACrD,OAAO,CAAC,GAAG,CAAC,cAAc,GAAG,OAAO,CAAC,SAAS,CAAC;QACjD,CAAC;QAED,OAAO;YACL,MAAM,EAAE,0BAAwB;YAChC,MAAM,EAAE,IAAI;YACZ,OAAO,EAAE;gBACP,uBAAa,CAAC,OAAO,CAAC,aAAa,CAAC;gBACpC,wBAAU;gBACV,wBAAU;gBACV,4BAAY;gBACZ,wBAAU;gBACV,oCAAgB;gBAChB,6CAAoB;gBACpB,6CAAoB;aACrB;YACD,OAAO,EAAE;gBACP,uBAAa;gBACb,wBAAU;gBACV,wBAAU;gBACV,4BAAY;gBACZ,wBAAU;gBACV,oCAAgB;gBAChB,6CAAoB;gBACpB,6CAAoB;aACrB;SACF,CAAC;IACJ,CAAC;CACF,CAAA;AAzDY,4DAAwB;mCAAxB,wBAAwB;IADpC,IAAA,eAAM,EAAC,EAAE,CAAC;GACE,wBAAwB,CAyDpC"}
1
+ {"version":3,"file":"app.module.js","sourceRoot":"","sources":["../../src/modules/app.module.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,15 @@
1
1
  import { Logger } from "@nestjs/common";
2
2
  import type { Response } from "express";
3
+ import type { Request } from "../../core/utils/request";
3
4
  import { AuthLoginDTO } from "./dto/auth-login.dto";
4
5
  import { AuthService } from "./auth.service";
6
+ import { ForgetPasswordDTO } from "./dto/auth-forget-password.dto";
7
+ import { ResetPasswordDTO } from "./dto/reset-password.dto";
5
8
  export declare class AuthController {
6
9
  private readonly authService;
7
10
  logger: Logger;
8
11
  constructor(authService: AuthService);
9
12
  authorize(userDTO: AuthLoginDTO, res: Response): Promise<void>;
13
+ forgetPassword(data: ForgetPasswordDTO, req: Request, res: Response): Promise<void>;
14
+ resetPassword(resetPasswords: ResetPasswordDTO, res: Response): Promise<void>;
10
15
  }
@@ -17,6 +17,10 @@ const common_1 = require("@nestjs/common");
17
17
  const auth_login_dto_1 = require("./dto/auth-login.dto");
18
18
  const auth_service_1 = require("./auth.service");
19
19
  const user_mapper_1 = require("../user/user.mapper");
20
+ const throttler_1 = require("@nestjs/throttler");
21
+ const swagger_1 = require("@nestjs/swagger");
22
+ const auth_forget_password_dto_1 = require("./dto/auth-forget-password.dto");
23
+ const reset_password_dto_1 = require("./dto/reset-password.dto");
20
24
  let AuthController = class AuthController {
21
25
  constructor(authService) {
22
26
  this.authService = authService;
@@ -30,6 +34,19 @@ let AuthController = class AuthController {
30
34
  token,
31
35
  });
32
36
  }
37
+ async forgetPassword(data, req, res) {
38
+ const locale = req.locale;
39
+ await this.authService.forgetPassword(data, locale);
40
+ res.json({
41
+ message: "You should receive an email shortly to reset your password.",
42
+ });
43
+ }
44
+ async resetPassword(resetPasswords, res) {
45
+ const message = await this.authService.resetPassword(resetPasswords);
46
+ res.json({
47
+ message,
48
+ });
49
+ }
33
50
  };
34
51
  exports.AuthController = AuthController;
35
52
  __decorate([
@@ -40,6 +57,35 @@ __decorate([
40
57
  __metadata("design:paramtypes", [auth_login_dto_1.AuthLoginDTO, Object]),
41
58
  __metadata("design:returntype", Promise)
42
59
  ], AuthController.prototype, "authorize", null);
60
+ __decorate([
61
+ (0, common_1.Post)("/forget-password"),
62
+ (0, common_1.UseGuards)(throttler_1.ThrottlerGuard),
63
+ (0, throttler_1.SkipThrottle)({ login: true }),
64
+ (0, swagger_1.ApiOperation)({ summary: "Sends an reset password email to the user." }),
65
+ (0, swagger_1.ApiResponse)({
66
+ status: 200,
67
+ description: "Sends an email with reset password link.",
68
+ }),
69
+ __param(0, (0, common_1.Body)()),
70
+ __param(1, (0, common_1.Req)()),
71
+ __param(2, (0, common_1.Res)()),
72
+ __metadata("design:type", Function),
73
+ __metadata("design:paramtypes", [auth_forget_password_dto_1.ForgetPasswordDTO, Object, Object]),
74
+ __metadata("design:returntype", Promise)
75
+ ], AuthController.prototype, "forgetPassword", null);
76
+ __decorate([
77
+ (0, common_1.Patch)("/reset-password"),
78
+ (0, swagger_1.ApiOperation)({ summary: "Resets and changes the user password" }),
79
+ (0, swagger_1.ApiResponse)({
80
+ status: 200,
81
+ description: "Sends an email with reset password link.",
82
+ }),
83
+ __param(0, (0, common_1.Body)()),
84
+ __param(1, (0, common_1.Res)()),
85
+ __metadata("design:type", Function),
86
+ __metadata("design:paramtypes", [reset_password_dto_1.ResetPasswordDTO, Object]),
87
+ __metadata("design:returntype", Promise)
88
+ ], AuthController.prototype, "resetPassword", null);
43
89
  exports.AuthController = AuthController = __decorate([
44
90
  (0, common_1.Controller)("api/auth"),
45
91
  __metadata("design:paramtypes", [auth_service_1.AuthService])
@@ -1 +1 @@
1
- {"version":3,"file":"auth.controller.js","sourceRoot":"","sources":["../../../src/modules/auth/auth.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAAqE;AAErE,yDAAoD;AACpD,iDAA6C;AAE7C,qDAAkE;AAG3D,IAAM,cAAc,GAApB,MAAM,cAAc;IAGzB,YAA6B,WAAwB;QAAxB,gBAAW,GAAX,WAAW,CAAa;QAFrD,WAAM,GAAG,IAAI,eAAM,CAAC,gBAAgB,CAAC,CAAC;IAEkB,CAAC;IAGnD,AAAN,KAAK,CAAC,SAAS,CACL,OAAqB,EACtB,GAAa;QAEpB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACnD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QAEzD,GAAG,CAAC,IAAI,CAAC;YACP,IAAI,EAAE,IAAA,yCAA2B,EAAC,IAAI,CAAC;YACvC,KAAK;SACN,CAAC,CAAC;IACL,CAAC;CACF,CAAA;AAlBY,wCAAc;AAMnB;IADL,IAAA,aAAI,EAAC,QAAQ,CAAC;IAEZ,WAAA,IAAA,aAAI,GAAE,CAAA;IACN,WAAA,IAAA,YAAG,GAAE,CAAA;;qCADW,6BAAY;;+CAU9B;yBAjBU,cAAc;IAD1B,IAAA,mBAAU,EAAC,UAAU,CAAC;qCAIqB,0BAAW;GAH1C,cAAc,CAkB1B"}
1
+ {"version":3,"file":"auth.controller.js","sourceRoot":"","sources":["../../../src/modules/auth/auth.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CASwB;AAGxB,yDAAoD;AACpD,iDAA6C;AAC7C,qDAAkE;AAClE,iDAAiE;AACjE,6CAA4D;AAC5D,6EAAmE;AACnE,iEAA4D;AAGrD,IAAM,cAAc,GAApB,MAAM,cAAc;IAGzB,YAA6B,WAAwB;QAAxB,gBAAW,GAAX,WAAW,CAAa;QAFrD,WAAM,GAAG,IAAI,eAAM,CAAC,gBAAgB,CAAC,CAAC;IAEkB,CAAC;IAGnD,AAAN,KAAK,CAAC,SAAS,CACL,OAAqB,EACtB,GAAa;QAEpB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACnD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QAEzD,GAAG,CAAC,IAAI,CAAC;YACP,IAAI,EAAE,IAAA,yCAA2B,EAAC,IAAI,CAAC;YACvC,KAAK;SACN,CAAC,CAAC;IACL,CAAC;IASK,AAAN,KAAK,CAAC,cAAc,CACV,IAAuB,EACxB,GAAY,EACZ,GAAa;QAEpB,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;QAC1B,MAAM,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACpD,GAAG,CAAC,IAAI,CAAC;YACP,OAAO,EAAE,6DAA6D;SACvE,CAAC,CAAC;IACL,CAAC;IAQK,AAAN,KAAK,CAAC,aAAa,CACT,cAAgC,EACjC,GAAa;QAEpB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;QACrE,GAAG,CAAC,IAAI,CAAC;YACP,OAAO;SACR,CAAC,CAAC;IACL,CAAC;CACF,CAAA;AArDY,wCAAc;AAMnB;IADL,IAAA,aAAI,EAAC,QAAQ,CAAC;IAEZ,WAAA,IAAA,aAAI,GAAE,CAAA;IACN,WAAA,IAAA,YAAG,GAAE,CAAA;;qCADW,6BAAY;;+CAU9B;AASK;IARL,IAAA,aAAI,EAAC,kBAAkB,CAAC;IACxB,IAAA,kBAAS,EAAC,0BAAc,CAAC;IACzB,IAAA,wBAAY,EAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IAC7B,IAAA,sBAAY,EAAC,EAAE,OAAO,EAAE,4CAA4C,EAAE,CAAC;IACvE,IAAA,qBAAW,EAAC;QACX,MAAM,EAAE,GAAG;QACX,WAAW,EAAE,0CAA0C;KACxD,CAAC;IAEC,WAAA,IAAA,aAAI,GAAE,CAAA;IACN,WAAA,IAAA,YAAG,GAAE,CAAA;IACL,WAAA,IAAA,YAAG,GAAE,CAAA;;qCAFQ,4CAAiB;;oDAShC;AAQK;IANL,IAAA,cAAK,EAAC,iBAAiB,CAAC;IACxB,IAAA,sBAAY,EAAC,EAAE,OAAO,EAAE,sCAAsC,EAAE,CAAC;IACjE,IAAA,qBAAW,EAAC;QACX,MAAM,EAAE,GAAG;QACX,WAAW,EAAE,0CAA0C;KACxD,CAAC;IAEC,WAAA,IAAA,aAAI,GAAE,CAAA;IACN,WAAA,IAAA,YAAG,GAAE,CAAA;;qCADkB,qCAAgB;;mDAOzC;yBApDU,cAAc;IAD1B,IAAA,mBAAU,EAAC,UAAU,CAAC;qCAIqB,0BAAW;GAH1C,cAAc,CAqD1B"}
@@ -4,12 +4,20 @@ import { JwtPayload } from "../../security/interfaces/jwt-payload.interface";
4
4
  import { UserService } from "../user/user.service";
5
5
  import { UserDTO } from "../user/dtos/user.dto";
6
6
  import { AuthRegisterDTO } from "./dto/register.dto";
7
+ import { ForgetPasswordDTO } from "./dto/auth-forget-password.dto";
8
+ import { Locale } from "../../core/enums/locale";
9
+ import { MailService } from "../mail/mail.service";
10
+ import { ResetPasswordDTO } from "./dto/reset-password.dto";
7
11
  export declare class AuthService {
8
12
  private readonly userService;
9
13
  private readonly jwtService;
10
- constructor(userService: UserService, jwtService: JwtService);
14
+ private readonly mailService;
15
+ constructor(userService: UserService, jwtService: JwtService, mailService: MailService);
11
16
  login(userLogin: AuthLoginDTO): Promise<UserDTO>;
12
17
  registerNewUser(registerData: AuthRegisterDTO): Promise<UserDTO>;
13
18
  validateUser(payload: JwtPayload): Promise<UserDTO | undefined>;
14
19
  generateToken(user: UserDTO): Promise<string>;
20
+ generateForgetPasswordToken(user: UserDTO): string;
21
+ forgetPassword(userData: ForgetPasswordDTO, locale: Locale): Promise<void>;
22
+ resetPassword(resetPasswords: ResetPasswordDTO): Promise<string>;
15
23
  }
@@ -49,10 +49,12 @@ const bcrypt = __importStar(require("bcrypt"));
49
49
  const typeorm_1 = require("typeorm");
50
50
  const user_service_1 = require("../user/user.service");
51
51
  const user_role_1 = require("../../core/enums/user-role");
52
+ const mail_service_1 = require("../mail/mail.service");
52
53
  let AuthService = class AuthService {
53
- constructor(userService, jwtService) {
54
+ constructor(userService, jwtService, mailService) {
54
55
  this.userService = userService;
55
56
  this.jwtService = jwtService;
57
+ this.mailService = mailService;
56
58
  }
57
59
  async login(userLogin) {
58
60
  const lowercaseLoginEmail = userLogin.email.toLowerCase();
@@ -123,11 +125,73 @@ let AuthService = class AuthService {
123
125
  }
124
126
  return this.jwtService.sign(payload);
125
127
  }
128
+ generateForgetPasswordToken(user) {
129
+ const payload = {
130
+ id: user.id || 0,
131
+ email: user.email || "",
132
+ };
133
+ return this.jwtService.sign(payload, {
134
+ expiresIn: "10m",
135
+ });
136
+ }
137
+ async forgetPassword(userData, locale) {
138
+ const foundUser = await this.userService.findByFields({
139
+ where: {
140
+ email: (0, typeorm_1.Equal)(userData.email),
141
+ },
142
+ });
143
+ if (!foundUser) {
144
+ throw new common_1.NotFoundException("User email is incorrect.");
145
+ }
146
+ if (!foundUser.email) {
147
+ throw new common_1.NotFoundException("User email is not available.");
148
+ }
149
+ const token = this.generateForgetPasswordToken(foundUser);
150
+ await this.mailService.sendForgetPasswordMail({
151
+ to: foundUser.email,
152
+ token,
153
+ locale,
154
+ });
155
+ await this.userService.update({
156
+ id: foundUser.id,
157
+ resetPasswordRequest: true,
158
+ });
159
+ }
160
+ async resetPassword(resetPasswords) {
161
+ let payload;
162
+ try {
163
+ payload = this.jwtService.verify(resetPasswords.token);
164
+ }
165
+ catch (error) {
166
+ console.error(error);
167
+ throw new common_1.UnauthorizedException("Invalid reset link");
168
+ }
169
+ const foundUser = await this.userService.findByFields({
170
+ where: {
171
+ id: (0, typeorm_1.Equal)(payload.id),
172
+ email: (0, typeorm_1.Equal)(payload.email),
173
+ },
174
+ });
175
+ if (!foundUser) {
176
+ throw new common_1.NotFoundException("User not found.");
177
+ }
178
+ if (!foundUser.resetPasswordRequest) {
179
+ throw new common_1.UnauthorizedException("This link can be used only once.");
180
+ }
181
+ const newPassword = resetPasswords.newPassword;
182
+ await this.userService.update({
183
+ id: foundUser.id,
184
+ password: newPassword,
185
+ resetPasswordRequest: false,
186
+ });
187
+ return "Password has been reset successfully.";
188
+ }
126
189
  };
127
190
  exports.AuthService = AuthService;
128
191
  exports.AuthService = AuthService = __decorate([
129
192
  (0, common_1.Injectable)(),
130
193
  __metadata("design:paramtypes", [user_service_1.UserService,
131
- jwt_1.JwtService])
194
+ jwt_1.JwtService,
195
+ mail_service_1.MailService])
132
196
  ], AuthService);
133
197
  //# sourceMappingURL=auth.service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"auth.service.js","sourceRoot":"","sources":["../../../src/modules/auth/auth.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auth.service.js","sourceRoot":"","sources":["../../../src/modules/auth/auth.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export declare class ForgetPasswordDTO {
2
+ readonly email: string;
3
+ }
@@ -0,0 +1,29 @@
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.ForgetPasswordDTO = void 0;
13
+ const swagger_1 = require("@nestjs/swagger");
14
+ const class_transformer_1 = require("class-transformer");
15
+ const class_validator_1 = require("class-validator");
16
+ const lower_case_transformer_1 = require("../../../security/transformers/lower-case.transformer");
17
+ const remove_spaces_transformer_1 = require("../../../security/transformers/remove-spaces.transformer");
18
+ class ForgetPasswordDTO {
19
+ }
20
+ exports.ForgetPasswordDTO = ForgetPasswordDTO;
21
+ __decorate([
22
+ (0, swagger_1.ApiProperty)({ description: "User email" }),
23
+ (0, class_validator_1.IsString)(),
24
+ (0, class_validator_1.IsEmail)(),
25
+ (0, class_transformer_1.Transform)(lower_case_transformer_1.toLowerCase),
26
+ (0, class_transformer_1.Transform)(remove_spaces_transformer_1.removeSpaces),
27
+ __metadata("design:type", String)
28
+ ], ForgetPasswordDTO.prototype, "email", void 0);
29
+ //# sourceMappingURL=auth-forget-password.dto.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-forget-password.dto.js","sourceRoot":"","sources":["../../../../src/modules/auth/dto/auth-forget-password.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6CAA8C;AAC9C,yDAA8C;AAC9C,qDAAoD;AACpD,kGAAoF;AACpF,wGAAwF;AAExF,MAAa,iBAAiB;CAO7B;AAPD,8CAOC;AADU;IALR,IAAA,qBAAW,EAAC,EAAE,WAAW,EAAE,YAAY,EAAE,CAAC;IAC1C,IAAA,0BAAQ,GAAE;IACV,IAAA,yBAAO,GAAE;IACT,IAAA,6BAAS,EAAC,oCAAW,CAAC;IACtB,IAAA,6BAAS,EAAC,wCAAY,CAAC;;gDACA"}
@@ -0,0 +1,4 @@
1
+ export declare class ResetPasswordDTO {
2
+ readonly newPassword: string;
3
+ readonly token: string;
4
+ }
@@ -0,0 +1,32 @@
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.ResetPasswordDTO = void 0;
13
+ const swagger_1 = require("@nestjs/swagger");
14
+ const class_validator_1 = require("class-validator");
15
+ const strong_password_validator_1 = require("../../../security/validators/strong-password.validator");
16
+ class ResetPasswordDTO {
17
+ }
18
+ exports.ResetPasswordDTO = ResetPasswordDTO;
19
+ __decorate([
20
+ (0, swagger_1.ApiProperty)({ description: "New user password" }),
21
+ (0, class_validator_1.IsString)(),
22
+ (0, class_validator_1.Length)(8, 128),
23
+ (0, strong_password_validator_1.IsStrongPassword)(),
24
+ __metadata("design:type", String)
25
+ ], ResetPasswordDTO.prototype, "newPassword", void 0);
26
+ __decorate([
27
+ (0, swagger_1.ApiProperty)({ description: "reset password token." }),
28
+ (0, class_validator_1.IsString)(),
29
+ (0, class_validator_1.IsNotEmpty)(),
30
+ __metadata("design:type", String)
31
+ ], ResetPasswordDTO.prototype, "token", void 0);
32
+ //# sourceMappingURL=reset-password.dto.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reset-password.dto.js","sourceRoot":"","sources":["../../../../src/modules/auth/dto/reset-password.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6CAA8C;AAC9C,qDAA+D;AAC/D,sGAA0F;AAE1F,MAAa,gBAAgB;CAW5B;AAXD,4CAWC;AANU;IAJR,IAAA,qBAAW,EAAC,EAAE,WAAW,EAAE,mBAAmB,EAAE,CAAC;IACjD,IAAA,0BAAQ,GAAE;IACV,IAAA,wBAAM,EAAC,CAAC,EAAE,GAAG,CAAC;IACd,IAAA,4CAAgB,GAAE;;qDACW;AAKrB;IAHR,IAAA,qBAAW,EAAC,EAAE,WAAW,EAAE,uBAAuB,EAAE,CAAC;IACrD,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,GAAE;;+CACW"}
@@ -0,0 +1,6 @@
1
+ import { Locale } from "../../../core/enums/locale";
2
+ export declare class MailMetaDataDTO {
3
+ readonly to: string;
4
+ readonly token: string;
5
+ readonly locale: Locale;
6
+ }
@@ -0,0 +1,38 @@
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.MailMetaDataDTO = void 0;
13
+ const swagger_1 = require("@nestjs/swagger");
14
+ const class_validator_1 = require("class-validator");
15
+ const locale_1 = require("../../../core/enums/locale");
16
+ class MailMetaDataDTO {
17
+ }
18
+ exports.MailMetaDataDTO = MailMetaDataDTO;
19
+ __decorate([
20
+ (0, swagger_1.ApiProperty)({ description: "User email" }),
21
+ (0, class_validator_1.IsString)(),
22
+ (0, class_validator_1.IsEmail)(),
23
+ (0, class_validator_1.IsNotEmpty)(),
24
+ __metadata("design:type", String)
25
+ ], MailMetaDataDTO.prototype, "to", void 0);
26
+ __decorate([
27
+ (0, swagger_1.ApiProperty)({ description: "Reset token" }),
28
+ (0, class_validator_1.IsString)(),
29
+ (0, class_validator_1.IsNotEmpty)(),
30
+ __metadata("design:type", String)
31
+ ], MailMetaDataDTO.prototype, "token", void 0);
32
+ __decorate([
33
+ (0, swagger_1.ApiProperty)({ description: "URL link language." }),
34
+ (0, class_validator_1.IsString)(),
35
+ (0, class_validator_1.IsNotEmpty)(),
36
+ __metadata("design:type", String)
37
+ ], MailMetaDataDTO.prototype, "locale", void 0);
38
+ //# sourceMappingURL=mail-metadata.dto.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mail-metadata.dto.js","sourceRoot":"","sources":["../../../../src/modules/mail/dto/mail-metadata.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6CAA8C;AAC9C,qDAAgE;AAChE,uDAAoD;AAEpD,MAAa,eAAe;CAgB3B;AAhBD,0CAgBC;AAXU;IAJR,IAAA,qBAAW,EAAC,EAAE,WAAW,EAAE,YAAY,EAAE,CAAC;IAC1C,IAAA,0BAAQ,GAAE;IACV,IAAA,yBAAO,GAAE;IACT,IAAA,4BAAU,GAAE;;2CACQ;AAKZ;IAHR,IAAA,qBAAW,EAAC,EAAE,WAAW,EAAE,aAAa,EAAE,CAAC;IAC3C,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,GAAE;;8CACW;AAKf;IAHR,IAAA,qBAAW,EAAC,EAAE,WAAW,EAAE,oBAAoB,EAAE,CAAC;IAClD,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,GAAE;;+CACY"}
@@ -0,0 +1,12 @@
1
+ import { DynamicModule } from "@nestjs/common";
2
+ export interface MailModuleOptions {
3
+ host?: string;
4
+ port?: number;
5
+ secure?: boolean;
6
+ user?: string;
7
+ password?: string;
8
+ clientUrl?: string;
9
+ }
10
+ export declare class MailModule {
11
+ static forRoot(options?: MailModuleOptions): DynamicModule;
12
+ }