@hedhog/admin 0.46.36 → 0.46.40
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/auth/auth.service.d.ts.map +1 -1
- package/dist/auth/auth.service.js +24 -2
- package/dist/auth/auth.service.js.map +1 -1
- package/dist/emails/index.d.ts +3 -0
- package/dist/emails/index.d.ts.map +1 -0
- package/dist/emails/index.js +19 -0
- package/dist/emails/index.js.map +1 -0
- package/dist/emails/lib.d.ts +6 -0
- package/dist/emails/lib.d.ts.map +1 -0
- package/dist/emails/lib.js +43 -0
- package/dist/emails/lib.js.map +1 -0
- package/dist/emails/templates.d.ts +13 -0
- package/dist/emails/templates.d.ts.map +1 -0
- package/dist/emails/templates.js +63 -0
- package/dist/emails/templates.js.map +1 -0
- package/package.json +3 -1
- package/src/auth/auth.service.ts +34 -2
- package/src/emails/index.ts +2 -0
- package/src/emails/lib.ts +40 -0
- package/src/emails/templates.ts +62 -0
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"auth.service.d.ts","sourceRoot":"","sources":["../../src/auth/auth.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAS/C,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;
|
1
|
+
{"version":3,"file":"auth.service.d.ts","sourceRoot":"","sources":["../../src/auth/auth.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAS/C,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAQzC,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAG3C,qBACa,WAAW;IAEpB,OAAO,CAAC,QAAQ,CAAC,aAAa;IAE9B,OAAO,CAAC,QAAQ,CAAC,MAAM;IAEvB,OAAO,CAAC,QAAQ,CAAC,GAAG;IAEpB,OAAO,CAAC,QAAQ,CAAC,IAAI;gBANJ,aAAa,EAAE,aAAa,EAE5B,MAAM,EAAE,aAAa,EAErB,GAAG,EAAE,UAAU,EAEf,IAAI,EAAE,WAAW;IAG9B,WAAW,CAAC,KAAK,EAAE,MAAM;IAM/B,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAW5C,oBAAoB,IAAI,MAAM;IAMxB,yBAAyB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;;;;;;;;IAkDzD,QAAQ,CAAC,IAAI,KAAA;;;IAUb,MAAM,CAAC,EAAE,KAAK,EAAE,EAAE,SAAS;;;IA4C3B,cAAc,CAAC,EACnB,KAAK,EACL,eAAe,EACf,WAAW,EACX,kBAAkB,GACnB,EAAE,SAAS;;;IAkCN,WAAW,CAAC,EAAE,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,QAAQ;;;IAyD1D,aAAa,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,kBAAkB,EAAE,EAAE,QAAQ;;;IAkDjE,GAAG,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,MAAM;;;IA0B3B,KAAK,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,QAAQ;;;;;;;;IAWnC,MAAM,CAAC,EAAE,EAAE,MAAM;;;;;;;;;;CAKxB"}
|
@@ -19,7 +19,7 @@ const common_1 = require("@nestjs/common");
|
|
19
19
|
const config_1 = require("@nestjs/config");
|
20
20
|
const jwt_1 = require("@nestjs/jwt");
|
21
21
|
const bcrypt_1 = require("bcrypt");
|
22
|
-
const
|
22
|
+
const emails_1 = require("../emails");
|
23
23
|
const multifactor_type_enum_1 = require("./enums/multifactor-type.enum");
|
24
24
|
let AuthService = class AuthService {
|
25
25
|
constructor(configService, prisma, jwt, mail) {
|
@@ -123,7 +123,7 @@ let AuthService = class AuthService {
|
|
123
123
|
await this.mail.send({
|
124
124
|
to: email,
|
125
125
|
subject: `Recuperação de Senha`,
|
126
|
-
body: (0,
|
126
|
+
body: (0, emails_1.getForgetPasswordEmail)(`${appUrl}/login?mode=reset-password&code=${code}`),
|
127
127
|
});
|
128
128
|
}
|
129
129
|
return {
|
@@ -150,6 +150,11 @@ let AuthService = class AuthService {
|
|
150
150
|
password,
|
151
151
|
},
|
152
152
|
});
|
153
|
+
await this.mail.send({
|
154
|
+
to: email,
|
155
|
+
subject: `Senha alterada`,
|
156
|
+
body: (0, emails_1.getChangePasswordEmail)(),
|
157
|
+
});
|
153
158
|
return this.getToken(newUser);
|
154
159
|
}
|
155
160
|
async changeEmail({ currentEmail, password, newEmail }) {
|
@@ -189,6 +194,11 @@ let AuthService = class AuthService {
|
|
189
194
|
},
|
190
195
|
data: { value: newEmail },
|
191
196
|
});
|
197
|
+
await this.mail.send({
|
198
|
+
to: newEmail,
|
199
|
+
subject: `Email alterado`,
|
200
|
+
body: (0, emails_1.getChangeEmailEmail)(),
|
201
|
+
});
|
192
202
|
return this.getToken(newUser);
|
193
203
|
}
|
194
204
|
async resetPassword({ code, newPassword, confirmNewPassword }) {
|
@@ -218,6 +228,11 @@ let AuthService = class AuthService {
|
|
218
228
|
code: null,
|
219
229
|
},
|
220
230
|
});
|
231
|
+
await this.mail.send({
|
232
|
+
to: user.email,
|
233
|
+
subject: `Senha recuperada`,
|
234
|
+
body: (0, emails_1.getResetPasswordEmail)(),
|
235
|
+
});
|
221
236
|
return this.getToken(user);
|
222
237
|
}
|
223
238
|
return false;
|
@@ -248,6 +263,13 @@ let AuthService = class AuthService {
|
|
248
263
|
return this.getToken(user);
|
249
264
|
}
|
250
265
|
async login({ email, password }) {
|
266
|
+
/*
|
267
|
+
await this.mail.send({
|
268
|
+
to: email,
|
269
|
+
subject: `Novo login no CoinBitClub`,
|
270
|
+
body: getUserLoginEmail(),
|
271
|
+
});
|
272
|
+
*/
|
251
273
|
return this.loginWithEmailAndPassword(email, password);
|
252
274
|
}
|
253
275
|
async verify(id) {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"auth.service.js","sourceRoot":"","sources":["../../src/auth/auth.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,uCAA2C;AAC3C,2CAA+C;AAC/C,2CAOwB;AACxB,2CAA+C;AAC/C,qCAAyC;AACzC,mCAAgD;AAChD,
|
1
|
+
{"version":3,"file":"auth.service.js","sourceRoot":"","sources":["../../src/auth/auth.service.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/emails/index.ts"],"names":[],"mappings":"AAAA,cAAc,OAAO,CAAA;AACrB,cAAc,aAAa,CAAA"}
|
@@ -0,0 +1,19 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
3
|
+
if (k2 === undefined) k2 = k;
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
7
|
+
}
|
8
|
+
Object.defineProperty(o, k2, desc);
|
9
|
+
}) : (function(o, m, k, k2) {
|
10
|
+
if (k2 === undefined) k2 = k;
|
11
|
+
o[k2] = m[k];
|
12
|
+
}));
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
15
|
+
};
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
17
|
+
__exportStar(require("./lib"), exports);
|
18
|
+
__exportStar(require("./templates"), exports);
|
19
|
+
//# sourceMappingURL=index.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/emails/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,wCAAqB;AACrB,8CAA2B"}
|
@@ -0,0 +1,6 @@
|
|
1
|
+
export declare const getUserLoginEmail: () => string;
|
2
|
+
export declare const getForgetPasswordEmail: (url: string) => string;
|
3
|
+
export declare const getChangePasswordEmail: () => string;
|
4
|
+
export declare const getChangeEmailEmail: () => string;
|
5
|
+
export declare const getResetPasswordEmail: () => string;
|
6
|
+
//# sourceMappingURL=lib.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"lib.d.ts","sourceRoot":"","sources":["../../src/emails/lib.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,iBAAiB,cAI7B,CAAA;AAGD,eAAO,MAAM,sBAAsB,QAAS,MAAM,WAIjD,CAAA;AAGD,eAAO,MAAM,sBAAsB,cAIlC,CAAA;AAGD,eAAO,MAAM,mBAAmB,cAI/B,CAAA;AAGD,eAAO,MAAM,qBAAqB,cAIjC,CAAA"}
|
@@ -0,0 +1,43 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.getResetPasswordEmail = exports.getChangeEmailEmail = exports.getChangePasswordEmail = exports.getForgetPasswordEmail = exports.getUserLoginEmail = void 0;
|
4
|
+
const templates_1 = require("./templates");
|
5
|
+
const getBodyWrapper = (content) => {
|
6
|
+
return templates_1.defaults.default_body(content);
|
7
|
+
};
|
8
|
+
// auth/login
|
9
|
+
const getUserLoginEmail = () => {
|
10
|
+
const body = templates_1.bodies['user_login'];
|
11
|
+
const content = [templates_1.defaults.header('Novo login no CoinBitClub'), body(), templates_1.defaults.footer()];
|
12
|
+
return getBodyWrapper(content);
|
13
|
+
};
|
14
|
+
exports.getUserLoginEmail = getUserLoginEmail;
|
15
|
+
// auth/forget
|
16
|
+
const getForgetPasswordEmail = (url) => {
|
17
|
+
const body = templates_1.bodies['user_forget_password'];
|
18
|
+
const content = [templates_1.defaults.header('Recuperação de senha'), body(url), templates_1.defaults.footer()];
|
19
|
+
return getBodyWrapper(content);
|
20
|
+
};
|
21
|
+
exports.getForgetPasswordEmail = getForgetPasswordEmail;
|
22
|
+
// auth/change-password
|
23
|
+
const getChangePasswordEmail = () => {
|
24
|
+
const body = templates_1.bodies['user_change_password'];
|
25
|
+
const content = [templates_1.defaults.header('Senha alterada'), body(), templates_1.defaults.footer()];
|
26
|
+
return getBodyWrapper(content);
|
27
|
+
};
|
28
|
+
exports.getChangePasswordEmail = getChangePasswordEmail;
|
29
|
+
// auth/change-email
|
30
|
+
const getChangeEmailEmail = () => {
|
31
|
+
const body = templates_1.bodies['user_change_email'];
|
32
|
+
const content = [templates_1.defaults.header('Email alterado'), body(), templates_1.defaults.footer()];
|
33
|
+
return getBodyWrapper(content);
|
34
|
+
};
|
35
|
+
exports.getChangeEmailEmail = getChangeEmailEmail;
|
36
|
+
// auth/reset
|
37
|
+
const getResetPasswordEmail = () => {
|
38
|
+
const body = templates_1.bodies['user_reset_password'];
|
39
|
+
const content = [templates_1.defaults.header('Senha recuperada'), body(), templates_1.defaults.footer()];
|
40
|
+
return getBodyWrapper(content);
|
41
|
+
};
|
42
|
+
exports.getResetPasswordEmail = getResetPasswordEmail;
|
43
|
+
//# sourceMappingURL=lib.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"lib.js","sourceRoot":"","sources":["../../src/emails/lib.ts"],"names":[],"mappings":";;;AAAA,2CAA+C;AAE/C,MAAM,cAAc,GAAG,CAAC,OAAiB,EAAE,EAAE;IAC3C,OAAO,oBAAQ,CAAC,YAAY,CAAC,OAAO,CAAC,CAAA;AACvC,CAAC,CAAA;AAED,aAAa;AACN,MAAM,iBAAiB,GAAG,GAAG,EAAE;IACpC,MAAM,IAAI,GAAG,kBAAM,CAAC,YAAY,CAAC,CAAC;IAClC,MAAM,OAAO,GAAG,CAAC,oBAAQ,CAAC,MAAM,CAAC,2BAA2B,CAAC,EAAE,IAAI,EAAE,EAAE,oBAAQ,CAAC,MAAM,EAAE,CAAC,CAAA;IACzF,OAAO,cAAc,CAAC,OAAO,CAAC,CAAC;AACjC,CAAC,CAAA;AAJY,QAAA,iBAAiB,qBAI7B;AAED,cAAc;AACP,MAAM,sBAAsB,GAAG,CAAC,GAAW,EAAE,EAAE;IACpD,MAAM,IAAI,GAAG,kBAAM,CAAC,sBAAsB,CAAC,CAAC;IAC5C,MAAM,OAAO,GAAG,CAAC,oBAAQ,CAAC,MAAM,CAAC,sBAAsB,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,oBAAQ,CAAC,MAAM,EAAE,CAAC,CAAA;IACvF,OAAO,cAAc,CAAC,OAAO,CAAC,CAAC;AACjC,CAAC,CAAA;AAJY,QAAA,sBAAsB,0BAIlC;AAED,uBAAuB;AAChB,MAAM,sBAAsB,GAAG,GAAG,EAAE;IACzC,MAAM,IAAI,GAAG,kBAAM,CAAC,sBAAsB,CAAC,CAAC;IAC5C,MAAM,OAAO,GAAG,CAAC,oBAAQ,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,EAAE,oBAAQ,CAAC,MAAM,EAAE,CAAC,CAAA;IAC9E,OAAO,cAAc,CAAC,OAAO,CAAC,CAAC;AACjC,CAAC,CAAA;AAJY,QAAA,sBAAsB,0BAIlC;AAED,oBAAoB;AACb,MAAM,mBAAmB,GAAG,GAAG,EAAE;IACtC,MAAM,IAAI,GAAG,kBAAM,CAAC,mBAAmB,CAAC,CAAC;IACzC,MAAM,OAAO,GAAG,CAAC,oBAAQ,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,EAAE,oBAAQ,CAAC,MAAM,EAAE,CAAC,CAAA;IAC9E,OAAO,cAAc,CAAC,OAAO,CAAC,CAAC;AACjC,CAAC,CAAA;AAJY,QAAA,mBAAmB,uBAI/B;AAED,aAAa;AACN,MAAM,qBAAqB,GAAG,GAAG,EAAE;IACxC,MAAM,IAAI,GAAG,kBAAM,CAAC,qBAAqB,CAAC,CAAC;IAC3C,MAAM,OAAO,GAAG,CAAC,oBAAQ,CAAC,MAAM,CAAC,kBAAkB,CAAC,EAAE,IAAI,EAAE,EAAE,oBAAQ,CAAC,MAAM,EAAE,CAAC,CAAA;IAChF,OAAO,cAAc,CAAC,OAAO,CAAC,CAAC;AACjC,CAAC,CAAA;AAJY,QAAA,qBAAqB,yBAIjC"}
|
@@ -0,0 +1,13 @@
|
|
1
|
+
export declare const defaults: {
|
2
|
+
header: (title: string) => string;
|
3
|
+
default_body: (content: string[]) => string;
|
4
|
+
footer: () => string;
|
5
|
+
};
|
6
|
+
export declare const bodies: {
|
7
|
+
user_forget_password: (url: string) => string;
|
8
|
+
user_change_password: () => string;
|
9
|
+
user_change_email: () => string;
|
10
|
+
user_reset_password: () => string;
|
11
|
+
user_login: () => string;
|
12
|
+
};
|
13
|
+
//# sourceMappingURL=templates.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../../src/emails/templates.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,QAAQ;oBACH,MAAM;4BAOX,MAAM,EAAE;;CAWpB,CAAC;AAEF,eAAO,MAAM,MAAM;gCACW,MAAM;;;;;CAuCnC,CAAC"}
|
@@ -0,0 +1,63 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.bodies = exports.defaults = void 0;
|
4
|
+
exports.defaults = {
|
5
|
+
header: (title) => `
|
6
|
+
<div style="text-align: center; margin-bottom: 30px;">
|
7
|
+
<img style="margin-bottom: 16px" src="https://coinbitclub.vip/_next/image?url=%2F_next%2Fstatic%2Fmedia%2Fcoinbitclub-logo.b29de722.png&w=640&q=75" alt="Coinbitclub Logo" />
|
8
|
+
<h1 style="color: #2c3e50; font-size: 26px; margin: 0;">${title}</h1>
|
9
|
+
</div>
|
10
|
+
`,
|
11
|
+
default_body: (content) => `<body style="font-family: Arial, sans-serif; background-color: #eef2f7; color: #333; margin: 0; padding: 0;">
|
12
|
+
<div style="max-width: 600px; margin: 40px auto; background-color: #ffffff; border: 1px solid #dcdfe6; border-radius: 10px; padding: 40px; box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);">
|
13
|
+
${content.join('')}
|
14
|
+
</div>
|
15
|
+
</body>`,
|
16
|
+
footer: () => `
|
17
|
+
<div style="text-align: center; font-size: 13px; color: #95a5a6; margin-top: 40px; border-top: 1px solid #ecf0f1; padding-top: 20px;">
|
18
|
+
<p>Este email foi enviado automaticamente. Por favor, não responda.</p>
|
19
|
+
</div>
|
20
|
+
`,
|
21
|
+
};
|
22
|
+
exports.bodies = {
|
23
|
+
user_forget_password: (url) => `
|
24
|
+
<div style="line-height: 1.8; font-size: 16px; color: #555; text-align: justify;">
|
25
|
+
<p>Olá,</p>
|
26
|
+
<p>Recebemos uma solicitação para redefinir sua senha em nossa plataforma. Para garantir que você é o proprietário desta conta, criamos um link exclusivo para redefinir sua senha.</p>
|
27
|
+
<p>Se você não fez essa solicitação, entre em contato conosco imediatamente para garantir a segurança de sua conta.</p>
|
28
|
+
<p>Para redefinir sua senha, clique no botão abaixo:</p>
|
29
|
+
</div>
|
30
|
+
<div style="text-align: center; margin: 30px 0;">
|
31
|
+
<a href="${url}" style="display: inline-block; padding: 15px 30px; background-color: #3498db; color: #ffffff; text-decoration: none; font-size: 16px; font-weight: bold; border-radius: 8px; box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2);">Redefinir Senha</a>
|
32
|
+
</div>
|
33
|
+
<div style="font-size: 14px; line-height: 1.7; color: #666;">
|
34
|
+
<p>Por razões de segurança, evite compartilhar suas informações de login ou clicar em links suspeitos.</p>
|
35
|
+
<p>Agradecemos por escolher nossa plataforma!</p>
|
36
|
+
</div>
|
37
|
+
`,
|
38
|
+
user_change_password: () => `
|
39
|
+
<div style="line-height: 1.8; font-size: 16px; color: #555; text-align: justify;">
|
40
|
+
<p>Sua senha no CoinBitClub foi alterada recentemente.</p>
|
41
|
+
<p>Se você não fez essa solicitação, entre em contato conosco imediatamente para garantir a segurança de sua conta.</p>
|
42
|
+
</div>
|
43
|
+
`,
|
44
|
+
user_change_email: () => `
|
45
|
+
<div style="line-height: 1.8; font-size: 16px; color: #555; text-align: justify;">
|
46
|
+
<p>Seu endereço de e-mail foi alterado com sucesso. Se você realizou essa alteração, nenhuma ação adicional é necessária.</p>
|
47
|
+
<p>Se você não fez essa solicitação, entre em contato conosco imediatamente para garantir a segurança de sua conta.</p>
|
48
|
+
</div>
|
49
|
+
`,
|
50
|
+
user_reset_password: () => `
|
51
|
+
<div style="line-height: 1.8; font-size: 16px; color: #555; text-align: justify;">
|
52
|
+
<p>Sua senha foi redefinida com sucesso. Agora você já pode acessar sua conta normalmente utilizando a nova senha.</p>
|
53
|
+
<p>Se você não fez essa solicitação, entre em contato conosco imediatamente para garantir a segurança de sua conta.</p>
|
54
|
+
</div>
|
55
|
+
`,
|
56
|
+
user_login: () => `
|
57
|
+
<div style="line-height: 1.8; font-size: 16px; color: #555; text-align: justify;">
|
58
|
+
<p>Um novo login foi realizado recentemente na sua conta do CoinBitClub.</p>
|
59
|
+
<p>Se você não fez essa solicitação, entre em contato conosco imediatamente para garantir a segurança de sua conta.</p>
|
60
|
+
</div>
|
61
|
+
`,
|
62
|
+
};
|
63
|
+
//# sourceMappingURL=templates.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"templates.js","sourceRoot":"","sources":["../../src/emails/templates.ts"],"names":[],"mappings":";;;AAAa,QAAA,QAAQ,GAAG;IACtB,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC;;;gEAGmC,KAAK;;GAElE;IACD,YAAY,EAAE,CACZ,OAAiB,EACjB,EAAE,CAAC;;UAEG,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;;YAEd;IACV,MAAM,EAAE,GAAG,EAAE,CAAC;;;;GAIb;CACF,CAAC;AAEW,QAAA,MAAM,GAAG;IACpB,oBAAoB,EAAE,CAAC,GAAW,EAAE,EAAE,CAAC;;;;;;;;mBAQtB,GAAG;;;;;;GAMnB;IACD,oBAAoB,EAAE,GAAG,EAAE,CAAC;;;;;GAK3B;IACD,iBAAiB,EAAE,GAAG,EAAE,CAAC;;;;;GAKxB;IACD,mBAAmB,EAAE,GAAG,EAAE,CAAC;;;;;GAK1B;IACD,UAAU,EAAE,GAAG,EAAE,CAAC;;;;;GAKjB;CACF,CAAC"}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@hedhog/admin",
|
3
|
-
"version": "0.46.
|
3
|
+
"version": "0.46.40",
|
4
4
|
"private": false,
|
5
5
|
"main": "dist/index.js",
|
6
6
|
"scripts": {
|
@@ -13,6 +13,8 @@
|
|
13
13
|
"dist/**/*",
|
14
14
|
"src/entities/**/*.ts",
|
15
15
|
"src/migrations/**/*.ts",
|
16
|
+
"frontend/**/*.ts",
|
17
|
+
"emails/**/*.ts",
|
16
18
|
"src/**/*.ejs",
|
17
19
|
"hedhog.yaml"
|
18
20
|
],
|
package/src/auth/auth.service.ts
CHANGED
@@ -11,7 +11,12 @@ import {
|
|
11
11
|
import { ConfigService } from '@nestjs/config';
|
12
12
|
import { JwtService } from '@nestjs/jwt';
|
13
13
|
import { compare, genSalt, hash } from 'bcrypt';
|
14
|
-
import {
|
14
|
+
import {
|
15
|
+
getChangeEmailEmail,
|
16
|
+
getChangePasswordEmail,
|
17
|
+
getForgetPasswordEmail,
|
18
|
+
getResetPasswordEmail,
|
19
|
+
} from '../emails';
|
15
20
|
import { ChangeDTO } from './dto/change.dto';
|
16
21
|
import { EmailDTO } from './dto/email.dto';
|
17
22
|
import { ForgetDTO } from './dto/forget.dto';
|
@@ -147,7 +152,9 @@ export class AuthService {
|
|
147
152
|
await this.mail.send({
|
148
153
|
to: email,
|
149
154
|
subject: `Recuperação de Senha`,
|
150
|
-
body:
|
155
|
+
body: getForgetPasswordEmail(
|
156
|
+
`${appUrl}/login?mode=reset-password&code=${code}`,
|
157
|
+
),
|
151
158
|
});
|
152
159
|
}
|
153
160
|
|
@@ -187,6 +194,12 @@ export class AuthService {
|
|
187
194
|
},
|
188
195
|
});
|
189
196
|
|
197
|
+
await this.mail.send({
|
198
|
+
to: email,
|
199
|
+
subject: `Senha alterada`,
|
200
|
+
body: getChangePasswordEmail(),
|
201
|
+
});
|
202
|
+
|
190
203
|
return this.getToken(newUser);
|
191
204
|
}
|
192
205
|
|
@@ -238,6 +251,12 @@ export class AuthService {
|
|
238
251
|
data: { value: newEmail },
|
239
252
|
});
|
240
253
|
|
254
|
+
await this.mail.send({
|
255
|
+
to: newEmail,
|
256
|
+
subject: `Email alterado`,
|
257
|
+
body: getChangeEmailEmail(),
|
258
|
+
});
|
259
|
+
|
241
260
|
return this.getToken(newUser);
|
242
261
|
}
|
243
262
|
|
@@ -274,6 +293,12 @@ export class AuthService {
|
|
274
293
|
},
|
275
294
|
});
|
276
295
|
|
296
|
+
await this.mail.send({
|
297
|
+
to: user.email,
|
298
|
+
subject: `Senha recuperada`,
|
299
|
+
body: getResetPasswordEmail(),
|
300
|
+
});
|
301
|
+
|
277
302
|
return this.getToken(user);
|
278
303
|
}
|
279
304
|
|
@@ -312,6 +337,13 @@ export class AuthService {
|
|
312
337
|
}
|
313
338
|
|
314
339
|
async login({ email, password }: LoginDTO) {
|
340
|
+
/*
|
341
|
+
await this.mail.send({
|
342
|
+
to: email,
|
343
|
+
subject: `Novo login no CoinBitClub`,
|
344
|
+
body: getUserLoginEmail(),
|
345
|
+
});
|
346
|
+
*/
|
315
347
|
return this.loginWithEmailAndPassword(email, password);
|
316
348
|
}
|
317
349
|
|
@@ -0,0 +1,40 @@
|
|
1
|
+
import { bodies, defaults } from "./templates";
|
2
|
+
|
3
|
+
const getBodyWrapper = (content: string[]) => {
|
4
|
+
return defaults.default_body(content)
|
5
|
+
}
|
6
|
+
|
7
|
+
// auth/login
|
8
|
+
export const getUserLoginEmail = () => {
|
9
|
+
const body = bodies['user_login'];
|
10
|
+
const content = [defaults.header('Novo login no CoinBitClub'), body(), defaults.footer()]
|
11
|
+
return getBodyWrapper(content);
|
12
|
+
}
|
13
|
+
|
14
|
+
// auth/forget
|
15
|
+
export const getForgetPasswordEmail = (url: string) => {
|
16
|
+
const body = bodies['user_forget_password'];
|
17
|
+
const content = [defaults.header('Recuperação de senha'), body(url), defaults.footer()]
|
18
|
+
return getBodyWrapper(content);
|
19
|
+
}
|
20
|
+
|
21
|
+
// auth/change-password
|
22
|
+
export const getChangePasswordEmail = () => {
|
23
|
+
const body = bodies['user_change_password'];
|
24
|
+
const content = [defaults.header('Senha alterada'), body(), defaults.footer()]
|
25
|
+
return getBodyWrapper(content);
|
26
|
+
}
|
27
|
+
|
28
|
+
// auth/change-email
|
29
|
+
export const getChangeEmailEmail = () => {
|
30
|
+
const body = bodies['user_change_email'];
|
31
|
+
const content = [defaults.header('Email alterado'), body(), defaults.footer()]
|
32
|
+
return getBodyWrapper(content);
|
33
|
+
}
|
34
|
+
|
35
|
+
// auth/reset
|
36
|
+
export const getResetPasswordEmail = () => {
|
37
|
+
const body = bodies['user_reset_password'];
|
38
|
+
const content = [defaults.header('Senha recuperada'), body(), defaults.footer()]
|
39
|
+
return getBodyWrapper(content);
|
40
|
+
}
|
@@ -0,0 +1,62 @@
|
|
1
|
+
export const defaults = {
|
2
|
+
header: (title: string) => `
|
3
|
+
<div style="text-align: center; margin-bottom: 30px;">
|
4
|
+
<img style="margin-bottom: 16px" src="https://coinbitclub.vip/_next/image?url=%2F_next%2Fstatic%2Fmedia%2Fcoinbitclub-logo.b29de722.png&w=640&q=75" alt="Coinbitclub Logo" />
|
5
|
+
<h1 style="color: #2c3e50; font-size: 26px; margin: 0;">${title}</h1>
|
6
|
+
</div>
|
7
|
+
`,
|
8
|
+
default_body: (
|
9
|
+
content: string[],
|
10
|
+
) => `<body style="font-family: Arial, sans-serif; background-color: #eef2f7; color: #333; margin: 0; padding: 0;">
|
11
|
+
<div style="max-width: 600px; margin: 40px auto; background-color: #ffffff; border: 1px solid #dcdfe6; border-radius: 10px; padding: 40px; box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);">
|
12
|
+
${content.join('')}
|
13
|
+
</div>
|
14
|
+
</body>`,
|
15
|
+
footer: () => `
|
16
|
+
<div style="text-align: center; font-size: 13px; color: #95a5a6; margin-top: 40px; border-top: 1px solid #ecf0f1; padding-top: 20px;">
|
17
|
+
<p>Este email foi enviado automaticamente. Por favor, não responda.</p>
|
18
|
+
</div>
|
19
|
+
`,
|
20
|
+
};
|
21
|
+
|
22
|
+
export const bodies = {
|
23
|
+
user_forget_password: (url: string) => `
|
24
|
+
<div style="line-height: 1.8; font-size: 16px; color: #555; text-align: justify;">
|
25
|
+
<p>Olá,</p>
|
26
|
+
<p>Recebemos uma solicitação para redefinir sua senha em nossa plataforma. Para garantir que você é o proprietário desta conta, criamos um link exclusivo para redefinir sua senha.</p>
|
27
|
+
<p>Se você não fez essa solicitação, entre em contato conosco imediatamente para garantir a segurança de sua conta.</p>
|
28
|
+
<p>Para redefinir sua senha, clique no botão abaixo:</p>
|
29
|
+
</div>
|
30
|
+
<div style="text-align: center; margin: 30px 0;">
|
31
|
+
<a href="${url}" style="display: inline-block; padding: 15px 30px; background-color: #3498db; color: #ffffff; text-decoration: none; font-size: 16px; font-weight: bold; border-radius: 8px; box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2);">Redefinir Senha</a>
|
32
|
+
</div>
|
33
|
+
<div style="font-size: 14px; line-height: 1.7; color: #666;">
|
34
|
+
<p>Por razões de segurança, evite compartilhar suas informações de login ou clicar em links suspeitos.</p>
|
35
|
+
<p>Agradecemos por escolher nossa plataforma!</p>
|
36
|
+
</div>
|
37
|
+
`,
|
38
|
+
user_change_password: () => `
|
39
|
+
<div style="line-height: 1.8; font-size: 16px; color: #555; text-align: justify;">
|
40
|
+
<p>Sua senha no CoinBitClub foi alterada recentemente.</p>
|
41
|
+
<p>Se você não fez essa solicitação, entre em contato conosco imediatamente para garantir a segurança de sua conta.</p>
|
42
|
+
</div>
|
43
|
+
`,
|
44
|
+
user_change_email: () => `
|
45
|
+
<div style="line-height: 1.8; font-size: 16px; color: #555; text-align: justify;">
|
46
|
+
<p>Seu endereço de e-mail foi alterado com sucesso. Se você realizou essa alteração, nenhuma ação adicional é necessária.</p>
|
47
|
+
<p>Se você não fez essa solicitação, entre em contato conosco imediatamente para garantir a segurança de sua conta.</p>
|
48
|
+
</div>
|
49
|
+
`,
|
50
|
+
user_reset_password: () => `
|
51
|
+
<div style="line-height: 1.8; font-size: 16px; color: #555; text-align: justify;">
|
52
|
+
<p>Sua senha foi redefinida com sucesso. Agora você já pode acessar sua conta normalmente utilizando a nova senha.</p>
|
53
|
+
<p>Se você não fez essa solicitação, entre em contato conosco imediatamente para garantir a segurança de sua conta.</p>
|
54
|
+
</div>
|
55
|
+
`,
|
56
|
+
user_login: () => `
|
57
|
+
<div style="line-height: 1.8; font-size: 16px; color: #555; text-align: justify;">
|
58
|
+
<p>Um novo login foi realizado recentemente na sua conta do CoinBitClub.</p>
|
59
|
+
<p>Se você não fez essa solicitação, entre em contato conosco imediatamente para garantir a segurança de sua conta.</p>
|
60
|
+
</div>
|
61
|
+
`,
|
62
|
+
};
|