@evara-group/guard 3.0.11 → 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.
- package/dist/core/utils/throttler-exception-filter.d.ts +7 -0
- package/dist/core/utils/throttler-exception-filter.js +48 -0
- package/dist/core/utils/throttler-exception-filter.js.map +1 -0
- package/dist/database/seeders/permissions.seeder.js +3 -3
- package/dist/database/seeders/permissions.seeder.js.map +1 -1
- package/dist/dev-server.d.ts +1 -0
- package/dist/dev-server.js +72 -0
- package/dist/dev-server.js.map +1 -0
- package/dist/modules/app.module.d.ts +8 -0
- package/dist/modules/app.module.js +31 -0
- package/dist/modules/app.module.js.map +1 -1
- package/dist/modules/auth/auth.controller.d.ts +5 -0
- package/dist/modules/auth/auth.controller.js +46 -0
- package/dist/modules/auth/auth.controller.js.map +1 -1
- package/dist/modules/auth/auth.service.d.ts +9 -1
- package/dist/modules/auth/auth.service.js +66 -2
- package/dist/modules/auth/auth.service.js.map +1 -1
- package/dist/modules/auth/dto/auth-forget-password.dto.d.ts +3 -0
- package/dist/modules/auth/dto/auth-forget-password.dto.js +29 -0
- package/dist/modules/auth/dto/auth-forget-password.dto.js.map +1 -0
- package/dist/modules/auth/dto/reset-password.dto.d.ts +4 -0
- package/dist/modules/auth/dto/reset-password.dto.js +32 -0
- package/dist/modules/auth/dto/reset-password.dto.js.map +1 -0
- package/dist/modules/mail/dto/mail-metadata.dto.d.ts +6 -0
- package/dist/modules/mail/dto/mail-metadata.dto.js +38 -0
- package/dist/modules/mail/dto/mail-metadata.dto.js.map +1 -0
- package/dist/modules/mail/mail.module.d.ts +12 -0
- package/dist/modules/mail/mail.module.js +57 -0
- package/dist/modules/mail/mail.module.js.map +1 -0
- package/dist/modules/mail/mail.service.d.ts +10 -0
- package/dist/modules/mail/mail.service.js +60 -0
- package/dist/modules/mail/mail.service.js.map +1 -0
- package/dist/modules/mail/templates/ar/reset-password.ejs +36 -0
- package/dist/modules/mail/templates/en/reset-password.ejs +38 -0
- package/dist/modules/module/dtos/create-module.dto.d.ts +1 -1
- package/dist/modules/module/dtos/update-module.dto.d.ts +1 -1
- package/dist/modules/role/dtos/create-role.dto.d.ts +1 -1
- package/dist/modules/role/role.controller.js +3 -0
- package/dist/modules/role/role.controller.js.map +1 -1
- package/dist/modules/user/dtos/create-user.dto.d.ts +1 -1
- package/dist/modules/user/user.controller.d.ts +3 -1
- package/dist/modules/user/user.controller.js +13 -2
- package/dist/modules/user/user.controller.js.map +1 -1
- package/dist/security/guards/language.guard.d.ts +4 -0
- package/dist/security/guards/language.guard.js +25 -0
- package/dist/security/guards/language.guard.js.map +1 -0
- package/dist/security/transformers/lower-case.transformer.d.ts +3 -0
- package/dist/security/transformers/lower-case.transformer.js +6 -0
- package/dist/security/transformers/lower-case.transformer.js.map +1 -0
- package/dist/security/transformers/remove-spaces.transformer.d.ts +3 -0
- package/dist/security/transformers/remove-spaces.transformer.js +6 -0
- package/dist/security/transformers/remove-spaces.transformer.js.map +1 -0
- package/dist/security/validators/strong-password.validator.d.ts +1 -0
- package/dist/security/validators/strong-password.validator.js +10 -0
- package/dist/security/validators/strong-password.validator.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- 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: "
|
|
20
|
-
{ en: "
|
|
21
|
-
{ en: "
|
|
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":";;;AACA,kFAAwE;AACxE,sEAAkE;AAElE,MAAa,iBAAiB;IAC5B,YAA6B,UAAsB;QAAtB,eAAU,GAAV,UAAU,CAAY;IAAG,CAAC;IAEvD,KAAK,CAAC,GAAG;QACP,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,8BAAU,CAAC,CAAC;QACvD,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,4BAAY,CAAC,CAAC;QAChE,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,IAAI,EAAE,CAAC;QACzC,MAAM,SAAS,GAAU,EAAE,CAAC;QAE5B,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;YACxB,IAAI,KAAK,GAKH,EAAE,CAAC;YAET,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,KAAK,uBAAuB,EAAE,CAAC;gBAC/C,MAAM,QAAQ,GAAG;oBACf,EAAE,EAAE,EAAE,
|
|
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;
|
|
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,
|
|
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
|
-
|
|
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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"auth.service.js","sourceRoot":"","sources":["../../../src/modules/auth/auth.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -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,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,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
|
+
}
|