@hedhog/admin 0.46.43 → 0.46.45
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.controller.d.ts +9 -0
- package/dist/auth/auth.controller.d.ts.map +1 -1
- package/dist/auth/auth.controller.js +23 -0
- package/dist/auth/auth.controller.js.map +1 -1
- package/dist/auth/auth.service.d.ts +9 -0
- package/dist/auth/auth.service.d.ts.map +1 -1
- package/dist/auth/auth.service.js +46 -0
- package/dist/auth/auth.service.js.map +1 -1
- package/dist/auth/dto/create-user.dto.d.ts +5 -0
- package/dist/auth/dto/create-user.dto.d.ts.map +1 -0
- package/dist/auth/dto/create-user.dto.js +34 -0
- package/dist/auth/dto/create-user.dto.js.map +1 -0
- package/dist/emails/lib.d.ts +2 -0
- package/dist/emails/lib.d.ts.map +1 -1
- package/dist/emails/lib.js +36 -6
- package/dist/emails/lib.js.map +1 -1
- package/dist/emails/templates.d.ts +4 -0
- package/dist/emails/templates.d.ts.map +1 -1
- package/dist/emails/templates.js +7 -0
- package/dist/emails/templates.js.map +1 -1
- package/package.json +1 -1
- package/src/auth/auth.controller.ts +14 -0
- package/src/auth/auth.service.ts +59 -0
- package/src/auth/dto/create-user.dto.ts +22 -0
- package/src/emails/lib.ts +43 -13
- package/src/emails/templates.ts +11 -0
@@ -1,5 +1,6 @@
|
|
1
1
|
import { AuthService } from './auth.service';
|
2
2
|
import { ChangeDTO } from './dto/change.dto';
|
3
|
+
import { CreateUserDTO } from './dto/create-user.dto';
|
3
4
|
import { EmailDTO } from './dto/email.dto';
|
4
5
|
import { ForgetDTO } from './dto/forget.dto';
|
5
6
|
import { LoginDTO } from './dto/login.dto';
|
@@ -9,6 +10,14 @@ import { User as UserType } from './types/user.type';
|
|
9
10
|
export declare class AuthController {
|
10
11
|
private readonly service;
|
11
12
|
constructor(service: AuthService);
|
13
|
+
createUserCheck(code: string): Promise<{
|
14
|
+
name: string;
|
15
|
+
id: number;
|
16
|
+
email: string;
|
17
|
+
}>;
|
18
|
+
createUser(data: CreateUserDTO): Promise<{
|
19
|
+
token: string;
|
20
|
+
}>;
|
12
21
|
verify({ id }: UserType): Promise<{
|
13
22
|
code: string | null;
|
14
23
|
name: string;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"auth.controller.d.ts","sourceRoot":"","sources":["../../src/auth/auth.controller.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"auth.controller.d.ts","sourceRoot":"","sources":["../../src/auth/auth.controller.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,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;AAC3C,OAAO,EAAE,IAAI,IAAI,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAErD,qBACa,cAAc;IAGvB,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,WAAW;IAKjC,eAAe,CAAgB,IAAI,EAAE,MAAM;;;;;IAM3C,UAAU,CAAS,IAAI,EAAE,aAAa;;;IAMtC,MAAM,CAAS,EAAE,EAAE,EAAE,EAAE,QAAQ;;;;;;;;;;IAM/B,KAAK,CAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,QAAQ;;;;;;;;IAM3C,GAAG,CAAS,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,MAAM;;;IAMnC,MAAM,CAEV,EACE,KAAK,GACN,EAAE,SAAS,GAAG;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;KACd;;;IASG,KAAK,CAAS,EAAE,WAAW,EAAE,kBAAkB,EAAE,IAAI,EAAE,EAAE,QAAQ;;;IAUjE,cAAc,CAElB,EAAE,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,kBAAkB,EAAE,EAAE,SAAS;;;IAWlE,WAAW,CAAS,EAAE,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,QAAQ;;;CAGzE"}
|
@@ -17,6 +17,7 @@ const core_1 = require("@hedhog/core");
|
|
17
17
|
const common_1 = require("@nestjs/common");
|
18
18
|
const auth_service_1 = require("./auth.service");
|
19
19
|
const change_dto_1 = require("./dto/change.dto");
|
20
|
+
const create_user_dto_1 = require("./dto/create-user.dto");
|
20
21
|
const email_dto_1 = require("./dto/email.dto");
|
21
22
|
const login_dto_1 = require("./dto/login.dto");
|
22
23
|
const otp_dto_1 = require("./dto/otp.dto");
|
@@ -25,6 +26,12 @@ let AuthController = class AuthController {
|
|
25
26
|
constructor(service) {
|
26
27
|
this.service = service;
|
27
28
|
}
|
29
|
+
async createUserCheck(code) {
|
30
|
+
return this.service.createUserCheck(code);
|
31
|
+
}
|
32
|
+
async createUser(data) {
|
33
|
+
return this.service.createUser(data);
|
34
|
+
}
|
28
35
|
async verify({ id }) {
|
29
36
|
return this.service.verify(id);
|
30
37
|
}
|
@@ -59,6 +66,22 @@ let AuthController = class AuthController {
|
|
59
66
|
}
|
60
67
|
};
|
61
68
|
exports.AuthController = AuthController;
|
69
|
+
__decorate([
|
70
|
+
(0, core_1.Public)(),
|
71
|
+
(0, common_1.Get)('create-user'),
|
72
|
+
__param(0, (0, common_1.Query)('code')),
|
73
|
+
__metadata("design:type", Function),
|
74
|
+
__metadata("design:paramtypes", [String]),
|
75
|
+
__metadata("design:returntype", Promise)
|
76
|
+
], AuthController.prototype, "createUserCheck", null);
|
77
|
+
__decorate([
|
78
|
+
(0, core_1.Public)(),
|
79
|
+
(0, common_1.Post)('create-user'),
|
80
|
+
__param(0, (0, common_1.Body)()),
|
81
|
+
__metadata("design:type", Function),
|
82
|
+
__metadata("design:paramtypes", [create_user_dto_1.CreateUserDTO]),
|
83
|
+
__metadata("design:returntype", Promise)
|
84
|
+
], AuthController.prototype, "createUser", null);
|
62
85
|
__decorate([
|
63
86
|
(0, core_1.Role)(),
|
64
87
|
(0, common_1.Get)('verify'),
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"auth.controller.js","sourceRoot":"","sources":["../../src/auth/auth.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,uCAAkD;AAClD,
|
1
|
+
{"version":3,"file":"auth.controller.js","sourceRoot":"","sources":["../../src/auth/auth.controller.ts"],"names":[],"mappings":"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"}
|
@@ -3,6 +3,7 @@ import { PrismaService } from '@hedhog/prisma';
|
|
3
3
|
import { ConfigService } from '@nestjs/config';
|
4
4
|
import { JwtService } from '@nestjs/jwt';
|
5
5
|
import { ChangeDTO } from './dto/change.dto';
|
6
|
+
import { CreateUserDTO } from './dto/create-user.dto';
|
6
7
|
import { EmailDTO } from './dto/email.dto';
|
7
8
|
import { ForgetDTO } from './dto/forget.dto';
|
8
9
|
import { LoginDTO } from './dto/login.dto';
|
@@ -14,6 +15,14 @@ export declare class AuthService {
|
|
14
15
|
private readonly jwt;
|
15
16
|
private readonly mail;
|
16
17
|
constructor(configService: ConfigService, prisma: PrismaService, jwt: JwtService, mail: MailService);
|
18
|
+
createUserCheck(code: string): Promise<{
|
19
|
+
name: string;
|
20
|
+
id: number;
|
21
|
+
email: string;
|
22
|
+
}>;
|
23
|
+
createUser({ code, password }: CreateUserDTO): Promise<{
|
24
|
+
token: string;
|
25
|
+
}>;
|
17
26
|
verifyToken(token: string): Promise<any>;
|
18
27
|
generateRandomString(length: number): string;
|
19
28
|
generateRandomNumber(): number;
|
@@ -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;AASzC,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,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,eAAe,CAAC,IAAI,EAAE,MAAM;;;;;IAyB5B,UAAU,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,aAAa;;;IA4B5C,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;;;;;;;;IAsDzD,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"}
|
@@ -28,6 +28,50 @@ let AuthService = class AuthService {
|
|
28
28
|
this.jwt = jwt;
|
29
29
|
this.mail = mail;
|
30
30
|
}
|
31
|
+
async createUserCheck(code) {
|
32
|
+
try {
|
33
|
+
await this.verifyToken(code);
|
34
|
+
}
|
35
|
+
catch (error) {
|
36
|
+
throw new common_1.BadRequestException('Invalid code');
|
37
|
+
}
|
38
|
+
const user = await this.prisma.user.findFirst({
|
39
|
+
where: {
|
40
|
+
code,
|
41
|
+
},
|
42
|
+
select: {
|
43
|
+
id: true,
|
44
|
+
name: true,
|
45
|
+
email: true,
|
46
|
+
},
|
47
|
+
});
|
48
|
+
if (!user) {
|
49
|
+
throw new common_1.NotFoundException('Invalid code or user not found');
|
50
|
+
}
|
51
|
+
return user;
|
52
|
+
}
|
53
|
+
async createUser({ code, password }) {
|
54
|
+
const user = await this.createUserCheck(code);
|
55
|
+
const salt = await (0, bcrypt_1.genSalt)();
|
56
|
+
password = await (0, bcrypt_1.hash)(password, salt);
|
57
|
+
await this.prisma.user.update({
|
58
|
+
where: {
|
59
|
+
id: user.id,
|
60
|
+
},
|
61
|
+
data: {
|
62
|
+
password,
|
63
|
+
code: null,
|
64
|
+
},
|
65
|
+
});
|
66
|
+
await this.mail.send({
|
67
|
+
to: user.email,
|
68
|
+
subject: 'Conta criada',
|
69
|
+
body: (0, emails_1.getCreateUserEmail)({
|
70
|
+
name: user.name,
|
71
|
+
}),
|
72
|
+
});
|
73
|
+
return this.getToken(user);
|
74
|
+
}
|
31
75
|
async verifyToken(token) {
|
32
76
|
return this.jwt.verifyAsync(token, {
|
33
77
|
secret: String(process.env.JWT_SECRET),
|
@@ -53,6 +97,7 @@ let AuthService = class AuthService {
|
|
53
97
|
email,
|
54
98
|
},
|
55
99
|
});
|
100
|
+
console.log('user found', user);
|
56
101
|
if (!user) {
|
57
102
|
throw new common_1.BadRequestException('Acesso negado');
|
58
103
|
}
|
@@ -60,6 +105,7 @@ let AuthService = class AuthService {
|
|
60
105
|
if (!isPasswordValid) {
|
61
106
|
throw new common_1.BadRequestException('Acesso negado');
|
62
107
|
}
|
108
|
+
console.log('Password is valid');
|
63
109
|
if (!user.multifactor_id) {
|
64
110
|
return this.getToken(user);
|
65
111
|
}
|
@@ -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":"create-user.dto.d.ts","sourceRoot":"","sources":["../../../src/auth/dto/create-user.dto.ts"],"names":[],"mappings":"AAEA,qBAAa,aAAa;IAGxB,IAAI,EAAE,MAAM,CAAC;IAeb,QAAQ,EAAE,MAAM,CAAC;CAClB"}
|
@@ -0,0 +1,34 @@
|
|
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.CreateUserDTO = void 0;
|
13
|
+
const class_validator_1 = require("class-validator");
|
14
|
+
class CreateUserDTO {
|
15
|
+
}
|
16
|
+
exports.CreateUserDTO = CreateUserDTO;
|
17
|
+
__decorate([
|
18
|
+
(0, class_validator_1.IsString)(),
|
19
|
+
(0, class_validator_1.IsNotEmpty)(),
|
20
|
+
__metadata("design:type", String)
|
21
|
+
], CreateUserDTO.prototype, "code", void 0);
|
22
|
+
__decorate([
|
23
|
+
(0, class_validator_1.IsStrongPassword)({
|
24
|
+
minLength: 6,
|
25
|
+
minLowercase: 1,
|
26
|
+
minUppercase: 0,
|
27
|
+
minNumbers: 0,
|
28
|
+
minSymbols: 0,
|
29
|
+
}, {
|
30
|
+
message: 'A senha deve ter pelo menos 6 caracteres e conter pelo menos 1 letra minúscula.',
|
31
|
+
}),
|
32
|
+
__metadata("design:type", String)
|
33
|
+
], CreateUserDTO.prototype, "password", void 0);
|
34
|
+
//# sourceMappingURL=create-user.dto.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"create-user.dto.js","sourceRoot":"","sources":["../../../src/auth/dto/create-user.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qDAAyE;AAEzE,MAAa,aAAa;CAmBzB;AAnBD,sCAmBC;AAhBC;IAFC,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,GAAE;;2CACA;AAeb;IAbC,IAAA,kCAAgB,EACf;QACE,SAAS,EAAE,CAAC;QACZ,YAAY,EAAE,CAAC;QACf,YAAY,EAAE,CAAC;QACf,UAAU,EAAE,CAAC;QACb,UAAU,EAAE,CAAC;KACd,EACD;QACE,OAAO,EACL,iFAAiF;KACpF,CACF;;+CACgB"}
|
package/dist/emails/lib.d.ts
CHANGED
@@ -1,6 +1,8 @@
|
|
1
|
+
import { UserCreateEmailType } from './templates';
|
1
2
|
export declare const getUserLoginEmail: () => string;
|
2
3
|
export declare const getForgetPasswordEmail: (url: string) => string;
|
3
4
|
export declare const getChangePasswordEmail: () => string;
|
4
5
|
export declare const getChangeEmailEmail: () => string;
|
5
6
|
export declare const getResetPasswordEmail: () => string;
|
7
|
+
export declare const getCreateUserEmail: (data: UserCreateEmailType) => string;
|
6
8
|
//# sourceMappingURL=lib.d.ts.map
|
package/dist/emails/lib.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"lib.d.ts","sourceRoot":"","sources":["../../src/emails/lib.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"lib.d.ts","sourceRoot":"","sources":["../../src/emails/lib.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAOpE,eAAO,MAAM,iBAAiB,cAQ7B,CAAC;AAGF,eAAO,MAAM,sBAAsB,QAAS,MAAM,WAQjD,CAAC;AAGF,eAAO,MAAM,sBAAsB,cAQlC,CAAC;AAGF,eAAO,MAAM,mBAAmB,cAQ/B,CAAC;AAGF,eAAO,MAAM,qBAAqB,cAQjC,CAAC;AAEF,eAAO,MAAM,kBAAkB,SAAU,mBAAmB,WAQ3D,CAAC"}
|
package/dist/emails/lib.js
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.getResetPasswordEmail = exports.getChangeEmailEmail = exports.getChangePasswordEmail = exports.getForgetPasswordEmail = exports.getUserLoginEmail = void 0;
|
3
|
+
exports.getCreateUserEmail = exports.getResetPasswordEmail = exports.getChangeEmailEmail = exports.getChangePasswordEmail = exports.getForgetPasswordEmail = exports.getUserLoginEmail = void 0;
|
4
4
|
const templates_1 = require("./templates");
|
5
5
|
const getBodyWrapper = (content) => {
|
6
6
|
return templates_1.defaults.default_body(content);
|
@@ -8,36 +8,66 @@ const getBodyWrapper = (content) => {
|
|
8
8
|
// auth/login
|
9
9
|
const getUserLoginEmail = () => {
|
10
10
|
const body = templates_1.bodies['user_login'];
|
11
|
-
const content = [
|
11
|
+
const content = [
|
12
|
+
templates_1.defaults.header('Novo login no CoinBitClub'),
|
13
|
+
body(),
|
14
|
+
templates_1.defaults.footer(),
|
15
|
+
];
|
12
16
|
return getBodyWrapper(content);
|
13
17
|
};
|
14
18
|
exports.getUserLoginEmail = getUserLoginEmail;
|
15
19
|
// auth/forget
|
16
20
|
const getForgetPasswordEmail = (url) => {
|
17
21
|
const body = templates_1.bodies['user_forget_password'];
|
18
|
-
const content = [
|
22
|
+
const content = [
|
23
|
+
templates_1.defaults.header('Recuperação de senha'),
|
24
|
+
body(url),
|
25
|
+
templates_1.defaults.footer(),
|
26
|
+
];
|
19
27
|
return getBodyWrapper(content);
|
20
28
|
};
|
21
29
|
exports.getForgetPasswordEmail = getForgetPasswordEmail;
|
22
30
|
// auth/change-password
|
23
31
|
const getChangePasswordEmail = () => {
|
24
32
|
const body = templates_1.bodies['user_change_password'];
|
25
|
-
const content = [
|
33
|
+
const content = [
|
34
|
+
templates_1.defaults.header('Senha alterada'),
|
35
|
+
body(),
|
36
|
+
templates_1.defaults.footer(),
|
37
|
+
];
|
26
38
|
return getBodyWrapper(content);
|
27
39
|
};
|
28
40
|
exports.getChangePasswordEmail = getChangePasswordEmail;
|
29
41
|
// auth/change-email
|
30
42
|
const getChangeEmailEmail = () => {
|
31
43
|
const body = templates_1.bodies['user_change_email'];
|
32
|
-
const content = [
|
44
|
+
const content = [
|
45
|
+
templates_1.defaults.header('Email alterado'),
|
46
|
+
body(),
|
47
|
+
templates_1.defaults.footer(),
|
48
|
+
];
|
33
49
|
return getBodyWrapper(content);
|
34
50
|
};
|
35
51
|
exports.getChangeEmailEmail = getChangeEmailEmail;
|
36
52
|
// auth/reset
|
37
53
|
const getResetPasswordEmail = () => {
|
38
54
|
const body = templates_1.bodies['user_reset_password'];
|
39
|
-
const content = [
|
55
|
+
const content = [
|
56
|
+
templates_1.defaults.header('Senha recuperada'),
|
57
|
+
body(),
|
58
|
+
templates_1.defaults.footer(),
|
59
|
+
];
|
40
60
|
return getBodyWrapper(content);
|
41
61
|
};
|
42
62
|
exports.getResetPasswordEmail = getResetPasswordEmail;
|
63
|
+
const getCreateUserEmail = (data) => {
|
64
|
+
const body = templates_1.bodies['user_create'];
|
65
|
+
const content = [
|
66
|
+
templates_1.defaults.header('Conta criada'),
|
67
|
+
body(data),
|
68
|
+
templates_1.defaults.footer(),
|
69
|
+
];
|
70
|
+
return getBodyWrapper(content);
|
71
|
+
};
|
72
|
+
exports.getCreateUserEmail = getCreateUserEmail;
|
43
73
|
//# sourceMappingURL=lib.js.map
|
package/dist/emails/lib.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"lib.js","sourceRoot":"","sources":["../../src/emails/lib.ts"],"names":[],"mappings":";;;AAAA,
|
1
|
+
{"version":3,"file":"lib.js","sourceRoot":"","sources":["../../src/emails/lib.ts"],"names":[],"mappings":";;;AAAA,2CAAoE;AAEpE,MAAM,cAAc,GAAG,CAAC,OAAiB,EAAE,EAAE;IAC3C,OAAO,oBAAQ,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;AACxC,CAAC,CAAC;AAEF,aAAa;AACN,MAAM,iBAAiB,GAAG,GAAG,EAAE;IACpC,MAAM,IAAI,GAAG,kBAAM,CAAC,YAAY,CAAC,CAAC;IAClC,MAAM,OAAO,GAAG;QACd,oBAAQ,CAAC,MAAM,CAAC,2BAA2B,CAAC;QAC5C,IAAI,EAAE;QACN,oBAAQ,CAAC,MAAM,EAAE;KAClB,CAAC;IACF,OAAO,cAAc,CAAC,OAAO,CAAC,CAAC;AACjC,CAAC,CAAC;AARW,QAAA,iBAAiB,qBAQ5B;AAEF,cAAc;AACP,MAAM,sBAAsB,GAAG,CAAC,GAAW,EAAE,EAAE;IACpD,MAAM,IAAI,GAAG,kBAAM,CAAC,sBAAsB,CAAC,CAAC;IAC5C,MAAM,OAAO,GAAG;QACd,oBAAQ,CAAC,MAAM,CAAC,sBAAsB,CAAC;QACvC,IAAI,CAAC,GAAG,CAAC;QACT,oBAAQ,CAAC,MAAM,EAAE;KAClB,CAAC;IACF,OAAO,cAAc,CAAC,OAAO,CAAC,CAAC;AACjC,CAAC,CAAC;AARW,QAAA,sBAAsB,0BAQjC;AAEF,uBAAuB;AAChB,MAAM,sBAAsB,GAAG,GAAG,EAAE;IACzC,MAAM,IAAI,GAAG,kBAAM,CAAC,sBAAsB,CAAC,CAAC;IAC5C,MAAM,OAAO,GAAG;QACd,oBAAQ,CAAC,MAAM,CAAC,gBAAgB,CAAC;QACjC,IAAI,EAAE;QACN,oBAAQ,CAAC,MAAM,EAAE;KAClB,CAAC;IACF,OAAO,cAAc,CAAC,OAAO,CAAC,CAAC;AACjC,CAAC,CAAC;AARW,QAAA,sBAAsB,0BAQjC;AAEF,oBAAoB;AACb,MAAM,mBAAmB,GAAG,GAAG,EAAE;IACtC,MAAM,IAAI,GAAG,kBAAM,CAAC,mBAAmB,CAAC,CAAC;IACzC,MAAM,OAAO,GAAG;QACd,oBAAQ,CAAC,MAAM,CAAC,gBAAgB,CAAC;QACjC,IAAI,EAAE;QACN,oBAAQ,CAAC,MAAM,EAAE;KAClB,CAAC;IACF,OAAO,cAAc,CAAC,OAAO,CAAC,CAAC;AACjC,CAAC,CAAC;AARW,QAAA,mBAAmB,uBAQ9B;AAEF,aAAa;AACN,MAAM,qBAAqB,GAAG,GAAG,EAAE;IACxC,MAAM,IAAI,GAAG,kBAAM,CAAC,qBAAqB,CAAC,CAAC;IAC3C,MAAM,OAAO,GAAG;QACd,oBAAQ,CAAC,MAAM,CAAC,kBAAkB,CAAC;QACnC,IAAI,EAAE;QACN,oBAAQ,CAAC,MAAM,EAAE;KAClB,CAAC;IACF,OAAO,cAAc,CAAC,OAAO,CAAC,CAAC;AACjC,CAAC,CAAC;AARW,QAAA,qBAAqB,yBAQhC;AAEK,MAAM,kBAAkB,GAAG,CAAC,IAAyB,EAAE,EAAE;IAC9D,MAAM,IAAI,GAAG,kBAAM,CAAC,aAAa,CAAC,CAAC;IACnC,MAAM,OAAO,GAAG;QACd,oBAAQ,CAAC,MAAM,CAAC,cAAc,CAAC;QAC/B,IAAI,CAAC,IAAI,CAAC;QACV,oBAAQ,CAAC,MAAM,EAAE;KAClB,CAAC;IACF,OAAO,cAAc,CAAC,OAAO,CAAC,CAAC;AACjC,CAAC,CAAC;AARW,QAAA,kBAAkB,sBAQ7B"}
|
@@ -3,7 +3,11 @@ export declare const defaults: {
|
|
3
3
|
default_body: (content: string[]) => string;
|
4
4
|
footer: () => string;
|
5
5
|
};
|
6
|
+
export type UserCreateEmailType = {
|
7
|
+
name: string;
|
8
|
+
};
|
6
9
|
export declare const bodies: {
|
10
|
+
user_create: ({ name }: UserCreateEmailType) => string;
|
7
11
|
user_forget_password: (url: string) => string;
|
8
12
|
user_change_password: () => string;
|
9
13
|
user_change_email: () => string;
|
@@ -1 +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;
|
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,MAAM,MAAM,mBAAmB,GAAG;IAChC,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,eAAO,MAAM,MAAM;4BACO,mBAAmB;gCAOf,MAAM;;;;;CAuCnC,CAAC"}
|
package/dist/emails/templates.js
CHANGED
@@ -20,6 +20,13 @@ exports.defaults = {
|
|
20
20
|
`,
|
21
21
|
};
|
22
22
|
exports.bodies = {
|
23
|
+
user_create: ({ name }) => `
|
24
|
+
<div style="line-height: 1.8; font-size: 16px; color: #555; text-align: justify;">
|
25
|
+
<p>Olá ${name},</p>
|
26
|
+
<p>Obrigado por se cadastrar em nosso sistema!</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
|
+
</div>
|
29
|
+
`,
|
23
30
|
user_forget_password: (url) => `
|
24
31
|
<div style="line-height: 1.8; font-size: 16px; color: #555; text-align: justify;">
|
25
32
|
<p>Olá,</p>
|
@@ -1 +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;
|
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;AAMW,QAAA,MAAM,GAAG;IACpB,WAAW,EAAE,CAAC,EAAE,IAAI,EAAuB,EAAE,EAAE,CAAC;;aAErC,IAAI;;;;GAId;IACD,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
@@ -6,9 +6,11 @@ import {
|
|
6
6
|
Get,
|
7
7
|
Inject,
|
8
8
|
Post,
|
9
|
+
Query,
|
9
10
|
} from '@nestjs/common';
|
10
11
|
import { AuthService } from './auth.service';
|
11
12
|
import { ChangeDTO } from './dto/change.dto';
|
13
|
+
import { CreateUserDTO } from './dto/create-user.dto';
|
12
14
|
import { EmailDTO } from './dto/email.dto';
|
13
15
|
import { ForgetDTO } from './dto/forget.dto';
|
14
16
|
import { LoginDTO } from './dto/login.dto';
|
@@ -23,6 +25,18 @@ export class AuthController {
|
|
23
25
|
private readonly service: AuthService,
|
24
26
|
) {}
|
25
27
|
|
28
|
+
@Public()
|
29
|
+
@Get('create-user')
|
30
|
+
async createUserCheck(@Query('code') code: string) {
|
31
|
+
return this.service.createUserCheck(code);
|
32
|
+
}
|
33
|
+
|
34
|
+
@Public()
|
35
|
+
@Post('create-user')
|
36
|
+
async createUser(@Body() data: CreateUserDTO) {
|
37
|
+
return this.service.createUser(data);
|
38
|
+
}
|
39
|
+
|
26
40
|
@Role()
|
27
41
|
@Get('verify')
|
28
42
|
async verify(@User() { id }: UserType) {
|
package/src/auth/auth.service.ts
CHANGED
@@ -14,10 +14,12 @@ import { compare, genSalt, hash } from 'bcrypt';
|
|
14
14
|
import {
|
15
15
|
getChangeEmailEmail,
|
16
16
|
getChangePasswordEmail,
|
17
|
+
getCreateUserEmail,
|
17
18
|
getForgetPasswordEmail,
|
18
19
|
getResetPasswordEmail,
|
19
20
|
} from '../emails';
|
20
21
|
import { ChangeDTO } from './dto/change.dto';
|
22
|
+
import { CreateUserDTO } from './dto/create-user.dto';
|
21
23
|
import { EmailDTO } from './dto/email.dto';
|
22
24
|
import { ForgetDTO } from './dto/forget.dto';
|
23
25
|
import { LoginDTO } from './dto/login.dto';
|
@@ -37,6 +39,59 @@ export class AuthService {
|
|
37
39
|
private readonly mail: MailService,
|
38
40
|
) {}
|
39
41
|
|
42
|
+
async createUserCheck(code: string) {
|
43
|
+
try {
|
44
|
+
await this.verifyToken(code);
|
45
|
+
} catch (error) {
|
46
|
+
throw new BadRequestException('Invalid code');
|
47
|
+
}
|
48
|
+
|
49
|
+
const user = await this.prisma.user.findFirst({
|
50
|
+
where: {
|
51
|
+
code,
|
52
|
+
},
|
53
|
+
select: {
|
54
|
+
id: true,
|
55
|
+
name: true,
|
56
|
+
email: true,
|
57
|
+
},
|
58
|
+
});
|
59
|
+
|
60
|
+
if (!user) {
|
61
|
+
throw new NotFoundException('Invalid code or user not found');
|
62
|
+
}
|
63
|
+
|
64
|
+
return user;
|
65
|
+
}
|
66
|
+
|
67
|
+
async createUser({ code, password }: CreateUserDTO) {
|
68
|
+
const user = await this.createUserCheck(code);
|
69
|
+
|
70
|
+
const salt = await genSalt();
|
71
|
+
|
72
|
+
password = await hash(password, salt);
|
73
|
+
|
74
|
+
await this.prisma.user.update({
|
75
|
+
where: {
|
76
|
+
id: user.id,
|
77
|
+
},
|
78
|
+
data: {
|
79
|
+
password,
|
80
|
+
code: null,
|
81
|
+
},
|
82
|
+
});
|
83
|
+
|
84
|
+
await this.mail.send({
|
85
|
+
to: user.email,
|
86
|
+
subject: 'Conta criada',
|
87
|
+
body: getCreateUserEmail({
|
88
|
+
name: user.name,
|
89
|
+
}),
|
90
|
+
});
|
91
|
+
|
92
|
+
return this.getToken(user);
|
93
|
+
}
|
94
|
+
|
40
95
|
async verifyToken(token: string) {
|
41
96
|
return this.jwt.verifyAsync(token, {
|
42
97
|
secret: String(process.env.JWT_SECRET),
|
@@ -67,6 +122,8 @@ export class AuthService {
|
|
67
122
|
},
|
68
123
|
});
|
69
124
|
|
125
|
+
console.log('user found', user);
|
126
|
+
|
70
127
|
if (!user) {
|
71
128
|
throw new BadRequestException('Acesso negado');
|
72
129
|
}
|
@@ -76,6 +133,8 @@ export class AuthService {
|
|
76
133
|
throw new BadRequestException('Acesso negado');
|
77
134
|
}
|
78
135
|
|
136
|
+
console.log('Password is valid');
|
137
|
+
|
79
138
|
if (!user.multifactor_id) {
|
80
139
|
return this.getToken(user);
|
81
140
|
} else {
|
@@ -0,0 +1,22 @@
|
|
1
|
+
import { IsNotEmpty, IsString, IsStrongPassword } from 'class-validator';
|
2
|
+
|
3
|
+
export class CreateUserDTO {
|
4
|
+
@IsString()
|
5
|
+
@IsNotEmpty()
|
6
|
+
code: string;
|
7
|
+
|
8
|
+
@IsStrongPassword(
|
9
|
+
{
|
10
|
+
minLength: 6,
|
11
|
+
minLowercase: 1,
|
12
|
+
minUppercase: 0,
|
13
|
+
minNumbers: 0,
|
14
|
+
minSymbols: 0,
|
15
|
+
},
|
16
|
+
{
|
17
|
+
message:
|
18
|
+
'A senha deve ter pelo menos 6 caracteres e conter pelo menos 1 letra minúscula.',
|
19
|
+
},
|
20
|
+
)
|
21
|
+
password: string;
|
22
|
+
}
|
package/src/emails/lib.ts
CHANGED
@@ -1,40 +1,70 @@
|
|
1
|
-
import { bodies, defaults } from
|
1
|
+
import { bodies, defaults, UserCreateEmailType } from './templates';
|
2
2
|
|
3
3
|
const getBodyWrapper = (content: string[]) => {
|
4
|
-
return defaults.default_body(content)
|
5
|
-
}
|
4
|
+
return defaults.default_body(content);
|
5
|
+
};
|
6
6
|
|
7
7
|
// auth/login
|
8
8
|
export const getUserLoginEmail = () => {
|
9
9
|
const body = bodies['user_login'];
|
10
|
-
const content = [
|
10
|
+
const content = [
|
11
|
+
defaults.header('Novo login no CoinBitClub'),
|
12
|
+
body(),
|
13
|
+
defaults.footer(),
|
14
|
+
];
|
11
15
|
return getBodyWrapper(content);
|
12
|
-
}
|
16
|
+
};
|
13
17
|
|
14
18
|
// auth/forget
|
15
19
|
export const getForgetPasswordEmail = (url: string) => {
|
16
20
|
const body = bodies['user_forget_password'];
|
17
|
-
const content = [
|
21
|
+
const content = [
|
22
|
+
defaults.header('Recuperação de senha'),
|
23
|
+
body(url),
|
24
|
+
defaults.footer(),
|
25
|
+
];
|
18
26
|
return getBodyWrapper(content);
|
19
|
-
}
|
27
|
+
};
|
20
28
|
|
21
29
|
// auth/change-password
|
22
30
|
export const getChangePasswordEmail = () => {
|
23
31
|
const body = bodies['user_change_password'];
|
24
|
-
const content = [
|
32
|
+
const content = [
|
33
|
+
defaults.header('Senha alterada'),
|
34
|
+
body(),
|
35
|
+
defaults.footer(),
|
36
|
+
];
|
25
37
|
return getBodyWrapper(content);
|
26
|
-
}
|
38
|
+
};
|
27
39
|
|
28
40
|
// auth/change-email
|
29
41
|
export const getChangeEmailEmail = () => {
|
30
42
|
const body = bodies['user_change_email'];
|
31
|
-
const content = [
|
43
|
+
const content = [
|
44
|
+
defaults.header('Email alterado'),
|
45
|
+
body(),
|
46
|
+
defaults.footer(),
|
47
|
+
];
|
32
48
|
return getBodyWrapper(content);
|
33
|
-
}
|
49
|
+
};
|
34
50
|
|
35
51
|
// auth/reset
|
36
52
|
export const getResetPasswordEmail = () => {
|
37
53
|
const body = bodies['user_reset_password'];
|
38
|
-
const content = [
|
54
|
+
const content = [
|
55
|
+
defaults.header('Senha recuperada'),
|
56
|
+
body(),
|
57
|
+
defaults.footer(),
|
58
|
+
];
|
39
59
|
return getBodyWrapper(content);
|
40
|
-
}
|
60
|
+
};
|
61
|
+
|
62
|
+
export const getCreateUserEmail = (data: UserCreateEmailType) => {
|
63
|
+
const body = bodies['user_create'];
|
64
|
+
const content = [
|
65
|
+
defaults.header('Conta criada'),
|
66
|
+
body(data),
|
67
|
+
defaults.footer(),
|
68
|
+
];
|
69
|
+
return getBodyWrapper(content);
|
70
|
+
};
|
package/src/emails/templates.ts
CHANGED
@@ -19,7 +19,18 @@ export const defaults = {
|
|
19
19
|
`,
|
20
20
|
};
|
21
21
|
|
22
|
+
export type UserCreateEmailType = {
|
23
|
+
name: string;
|
24
|
+
};
|
25
|
+
|
22
26
|
export const bodies = {
|
27
|
+
user_create: ({ name }: UserCreateEmailType) => `
|
28
|
+
<div style="line-height: 1.8; font-size: 16px; color: #555; text-align: justify;">
|
29
|
+
<p>Olá ${name},</p>
|
30
|
+
<p>Obrigado por se cadastrar em nosso sistema!</p>
|
31
|
+
<p>Se você não fez essa solicitação, entre em contato conosco imediatamente para garantir a segurança de sua conta.</p>
|
32
|
+
</div>
|
33
|
+
`,
|
23
34
|
user_forget_password: (url: string) => `
|
24
35
|
<div style="line-height: 1.8; font-size: 16px; color: #555; text-align: justify;">
|
25
36
|
<p>Olá,</p>
|