@skyapp-labs/blueprint-backend-core 1.6.0 → 1.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +16 -10
- package/dist/common/decorators/otp-length-aware.decorator.d.ts +3 -0
- package/dist/common/decorators/otp-length-aware.decorator.d.ts.map +1 -0
- package/dist/common/decorators/otp-length-aware.decorator.js +8 -0
- package/dist/common/decorators/otp-length-aware.decorator.js.map +1 -0
- package/dist/common/decorators/pin-length-aware.decorator.d.ts +3 -0
- package/dist/common/decorators/pin-length-aware.decorator.d.ts.map +1 -0
- package/dist/common/decorators/pin-length-aware.decorator.js +8 -0
- package/dist/common/decorators/pin-length-aware.decorator.js.map +1 -0
- package/dist/common/pipes/config-aware-validation.pipe.d.ts.map +1 -1
- package/dist/common/pipes/config-aware-validation.pipe.js +13 -4
- package/dist/common/pipes/config-aware-validation.pipe.js.map +1 -1
- package/dist/common/validators/is-configured-otp-length.validator.d.ts +9 -0
- package/dist/common/validators/is-configured-otp-length.validator.d.ts.map +1 -0
- package/dist/common/validators/is-configured-otp-length.validator.js +40 -0
- package/dist/common/validators/is-configured-otp-length.validator.js.map +1 -0
- package/dist/common/validators/is-configured-pin-length.validator.d.ts +7 -0
- package/dist/common/validators/is-configured-pin-length.validator.d.ts.map +1 -0
- package/dist/common/validators/is-configured-pin-length.validator.js +43 -0
- package/dist/common/validators/is-configured-pin-length.validator.js.map +1 -0
- package/dist/database/seeds/settings.seed.d.ts.map +1 -1
- package/dist/database/seeds/settings.seed.js +16 -0
- package/dist/database/seeds/settings.seed.js.map +1 -1
- package/dist/modules/auth/controllers/pin.controller.d.ts +1 -0
- package/dist/modules/auth/controllers/pin.controller.d.ts.map +1 -1
- package/dist/modules/auth/controllers/pin.controller.js +35 -0
- package/dist/modules/auth/controllers/pin.controller.js.map +1 -1
- package/dist/modules/auth/dto/login-phone.dto.d.ts +2 -1
- package/dist/modules/auth/dto/login-phone.dto.d.ts.map +1 -1
- package/dist/modules/auth/dto/login-phone.dto.js +9 -3
- package/dist/modules/auth/dto/login-phone.dto.js.map +1 -1
- package/dist/modules/auth/dto/otp.dto.d.ts.map +1 -1
- package/dist/modules/auth/dto/otp.dto.js +6 -2
- package/dist/modules/auth/dto/otp.dto.js.map +1 -1
- package/dist/modules/auth/dto/pin.dto.d.ts +7 -4
- package/dist/modules/auth/dto/pin.dto.d.ts.map +1 -1
- package/dist/modules/auth/dto/pin.dto.js +45 -20
- package/dist/modules/auth/dto/pin.dto.js.map +1 -1
- package/dist/modules/auth/dto/register-phone.dto.d.ts +2 -1
- package/dist/modules/auth/dto/register-phone.dto.d.ts.map +1 -1
- package/dist/modules/auth/dto/register-phone.dto.js +9 -5
- package/dist/modules/auth/dto/register-phone.dto.js.map +1 -1
- package/dist/modules/auth/services/pin-auth.service.d.ts +2 -0
- package/dist/modules/auth/services/pin-auth.service.d.ts.map +1 -1
- package/dist/modules/auth/services/pin-auth.service.js +27 -0
- package/dist/modules/auth/services/pin-auth.service.js.map +1 -1
- package/dist/modules/otp/constants/otp.constants.d.ts +4 -1
- package/dist/modules/otp/constants/otp.constants.d.ts.map +1 -1
- package/dist/modules/otp/constants/otp.constants.js +14 -2
- package/dist/modules/otp/constants/otp.constants.js.map +1 -1
- package/dist/modules/otp/dto/verify-email.dto.d.ts.map +1 -1
- package/dist/modules/otp/dto/verify-email.dto.js +2 -1
- package/dist/modules/otp/dto/verify-email.dto.js.map +1 -1
- package/dist/modules/otp/dto/verify-otp.dto.d.ts.map +1 -1
- package/dist/modules/otp/dto/verify-otp.dto.js +2 -1
- package/dist/modules/otp/dto/verify-otp.dto.js.map +1 -1
- package/dist/modules/otp/services/otp.session.store.d.ts.map +1 -1
- package/dist/modules/otp/services/otp.session.store.js +5 -1
- package/dist/modules/otp/services/otp.session.store.js.map +1 -1
- package/dist/modules/otp/utils/otp.utils.d.ts.map +1 -1
- package/dist/modules/otp/utils/otp.utils.js +4 -2
- package/dist/modules/otp/utils/otp.utils.js.map +1 -1
- package/dist/modules/settings/constants/settings.defaults.d.ts +2 -0
- package/dist/modules/settings/constants/settings.defaults.d.ts.map +1 -1
- package/dist/modules/settings/constants/settings.defaults.js +2 -0
- package/dist/modules/settings/constants/settings.defaults.js.map +1 -1
- package/dist/modules/settings/constants/settings.keys.d.ts +2 -0
- package/dist/modules/settings/constants/settings.keys.d.ts.map +1 -1
- package/dist/modules/settings/constants/settings.keys.js +2 -0
- package/dist/modules/settings/constants/settings.keys.js.map +1 -1
- package/dist/modules/settings/controllers/settings.controller.d.ts.map +1 -1
- package/dist/modules/settings/controllers/settings.controller.js +8 -0
- package/dist/modules/settings/controllers/settings.controller.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
|
@@ -9,13 +9,20 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
|
|
9
9
|
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
10
|
};
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.PinStatusDto = exports.RemovePinDto = exports.VerifyPinDto = exports.ChangePinDto = exports.SetPinDto = void 0;
|
|
12
|
+
exports.PinStatusDto = exports.RemovePinDto = exports.VerifyPinDto = exports.ChangePinDto = exports.SetPinDto = exports.PinLengthAwareDto = void 0;
|
|
13
13
|
const swagger_1 = require("@nestjs/swagger");
|
|
14
14
|
const class_validator_1 = require("class-validator");
|
|
15
|
-
const
|
|
16
|
-
const
|
|
17
|
-
class
|
|
15
|
+
const pin_length_aware_decorator_1 = require("../../../common/decorators/pin-length-aware.decorator");
|
|
16
|
+
const is_configured_pin_length_validator_1 = require("../../../common/validators/is-configured-pin-length.validator");
|
|
17
|
+
class PinLengthAwareDto {
|
|
18
18
|
}
|
|
19
|
+
exports.PinLengthAwareDto = PinLengthAwareDto;
|
|
20
|
+
__decorate([
|
|
21
|
+
(0, class_validator_1.IsOptional)(),
|
|
22
|
+
__metadata("design:type", Number)
|
|
23
|
+
], PinLengthAwareDto.prototype, "_pinLength", void 0);
|
|
24
|
+
let SetPinDto = class SetPinDto extends PinLengthAwareDto {
|
|
25
|
+
};
|
|
19
26
|
exports.SetPinDto = SetPinDto;
|
|
20
27
|
__decorate([
|
|
21
28
|
(0, swagger_1.ApiProperty)({
|
|
@@ -27,13 +34,19 @@ __decorate([
|
|
|
27
34
|
__metadata("design:type", String)
|
|
28
35
|
], SetPinDto.prototype, "type", void 0);
|
|
29
36
|
__decorate([
|
|
30
|
-
(0, swagger_1.ApiProperty)({
|
|
37
|
+
(0, swagger_1.ApiProperty)({
|
|
38
|
+
description: 'Numeric PIN (length configured via pin.length setting)',
|
|
39
|
+
example: '123456',
|
|
40
|
+
}),
|
|
31
41
|
(0, class_validator_1.IsString)(),
|
|
32
|
-
(0,
|
|
42
|
+
(0, is_configured_pin_length_validator_1.IsConfiguredPinLength)(),
|
|
33
43
|
__metadata("design:type", String)
|
|
34
44
|
], SetPinDto.prototype, "pin", void 0);
|
|
35
|
-
|
|
36
|
-
|
|
45
|
+
exports.SetPinDto = SetPinDto = __decorate([
|
|
46
|
+
(0, pin_length_aware_decorator_1.PinLengthAware)()
|
|
47
|
+
], SetPinDto);
|
|
48
|
+
let ChangePinDto = class ChangePinDto extends PinLengthAwareDto {
|
|
49
|
+
};
|
|
37
50
|
exports.ChangePinDto = ChangePinDto;
|
|
38
51
|
__decorate([
|
|
39
52
|
(0, swagger_1.ApiProperty)({
|
|
@@ -45,19 +58,22 @@ __decorate([
|
|
|
45
58
|
__metadata("design:type", String)
|
|
46
59
|
], ChangePinDto.prototype, "type", void 0);
|
|
47
60
|
__decorate([
|
|
48
|
-
(0, swagger_1.ApiProperty)({ description: 'Current PIN
|
|
61
|
+
(0, swagger_1.ApiProperty)({ description: 'Current PIN', example: '123456' }),
|
|
49
62
|
(0, class_validator_1.IsString)(),
|
|
50
|
-
(0,
|
|
63
|
+
(0, is_configured_pin_length_validator_1.IsConfiguredPinLength)(),
|
|
51
64
|
__metadata("design:type", String)
|
|
52
65
|
], ChangePinDto.prototype, "currentPin", void 0);
|
|
53
66
|
__decorate([
|
|
54
|
-
(0, swagger_1.ApiProperty)({ description: 'New PIN
|
|
67
|
+
(0, swagger_1.ApiProperty)({ description: 'New PIN', example: '654321' }),
|
|
55
68
|
(0, class_validator_1.IsString)(),
|
|
56
|
-
(0,
|
|
69
|
+
(0, is_configured_pin_length_validator_1.IsConfiguredPinLength)(),
|
|
57
70
|
__metadata("design:type", String)
|
|
58
71
|
], ChangePinDto.prototype, "newPin", void 0);
|
|
59
|
-
|
|
60
|
-
|
|
72
|
+
exports.ChangePinDto = ChangePinDto = __decorate([
|
|
73
|
+
(0, pin_length_aware_decorator_1.PinLengthAware)()
|
|
74
|
+
], ChangePinDto);
|
|
75
|
+
let VerifyPinDto = class VerifyPinDto extends PinLengthAwareDto {
|
|
76
|
+
};
|
|
61
77
|
exports.VerifyPinDto = VerifyPinDto;
|
|
62
78
|
__decorate([
|
|
63
79
|
(0, swagger_1.ApiProperty)({
|
|
@@ -69,13 +85,19 @@ __decorate([
|
|
|
69
85
|
__metadata("design:type", String)
|
|
70
86
|
], VerifyPinDto.prototype, "type", void 0);
|
|
71
87
|
__decorate([
|
|
72
|
-
(0, swagger_1.ApiProperty)({
|
|
88
|
+
(0, swagger_1.ApiProperty)({
|
|
89
|
+
description: 'Numeric PIN (length configured via pin.length setting)',
|
|
90
|
+
example: '123456',
|
|
91
|
+
}),
|
|
73
92
|
(0, class_validator_1.IsString)(),
|
|
74
|
-
(0,
|
|
93
|
+
(0, is_configured_pin_length_validator_1.IsConfiguredPinLength)(),
|
|
75
94
|
__metadata("design:type", String)
|
|
76
95
|
], VerifyPinDto.prototype, "pin", void 0);
|
|
77
|
-
|
|
78
|
-
|
|
96
|
+
exports.VerifyPinDto = VerifyPinDto = __decorate([
|
|
97
|
+
(0, pin_length_aware_decorator_1.PinLengthAware)()
|
|
98
|
+
], VerifyPinDto);
|
|
99
|
+
let RemovePinDto = class RemovePinDto extends PinLengthAwareDto {
|
|
100
|
+
};
|
|
79
101
|
exports.RemovePinDto = RemovePinDto;
|
|
80
102
|
__decorate([
|
|
81
103
|
(0, swagger_1.ApiProperty)({
|
|
@@ -87,11 +109,14 @@ __decorate([
|
|
|
87
109
|
__metadata("design:type", String)
|
|
88
110
|
], RemovePinDto.prototype, "type", void 0);
|
|
89
111
|
__decorate([
|
|
90
|
-
(0, swagger_1.ApiProperty)({ description: 'Current PIN — required to confirm removal', example: '
|
|
112
|
+
(0, swagger_1.ApiProperty)({ description: 'Current PIN — required to confirm removal', example: '123456' }),
|
|
91
113
|
(0, class_validator_1.IsString)(),
|
|
92
|
-
(0,
|
|
114
|
+
(0, is_configured_pin_length_validator_1.IsConfiguredPinLength)(),
|
|
93
115
|
__metadata("design:type", String)
|
|
94
116
|
], RemovePinDto.prototype, "currentPin", void 0);
|
|
117
|
+
exports.RemovePinDto = RemovePinDto = __decorate([
|
|
118
|
+
(0, pin_length_aware_decorator_1.PinLengthAware)()
|
|
119
|
+
], RemovePinDto);
|
|
95
120
|
class PinStatusDto {
|
|
96
121
|
}
|
|
97
122
|
exports.PinStatusDto = PinStatusDto;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pin.dto.js","sourceRoot":"","sources":["../../../../src/modules/auth/dto/pin.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6CAAmE;AACnE,
|
|
1
|
+
{"version":3,"file":"pin.dto.js","sourceRoot":"","sources":["../../../../src/modules/auth/dto/pin.dto.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { CreateUserProfileDto } from '../../profile/dto/create-user-profile.dto';
|
|
2
|
-
|
|
2
|
+
import { PinLengthAwareDto } from './pin.dto';
|
|
3
|
+
export declare class RegisterPhoneDto extends PinLengthAwareDto {
|
|
3
4
|
verificationToken: string;
|
|
4
5
|
pin?: string;
|
|
5
6
|
password?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register-phone.dto.d.ts","sourceRoot":"","sources":["../../../../src/modules/auth/dto/register-phone.dto.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;
|
|
1
|
+
{"version":3,"file":"register-phone.dto.d.ts","sourceRoot":"","sources":["../../../../src/modules/auth/dto/register-phone.dto.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AAGjF,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAE9C,qBACa,gBAAiB,SAAQ,iBAAiB;IAEtD,iBAAiB,EAAG,MAAM,CAAC;IAI3B,GAAG,CAAC,EAAE,MAAM,CAAC;IAKb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAKlB,OAAO,CAAC,EAAE,oBAAoB,CAAC;CAC/B"}
|
|
@@ -13,8 +13,11 @@ exports.RegisterPhoneDto = void 0;
|
|
|
13
13
|
const class_validator_1 = require("class-validator");
|
|
14
14
|
const class_transformer_1 = require("class-transformer");
|
|
15
15
|
const create_user_profile_dto_1 = require("../../profile/dto/create-user-profile.dto");
|
|
16
|
-
|
|
17
|
-
|
|
16
|
+
const pin_length_aware_decorator_1 = require("../../../common/decorators/pin-length-aware.decorator");
|
|
17
|
+
const is_configured_pin_length_validator_1 = require("../../../common/validators/is-configured-pin-length.validator");
|
|
18
|
+
const pin_dto_1 = require("./pin.dto");
|
|
19
|
+
let RegisterPhoneDto = class RegisterPhoneDto extends pin_dto_1.PinLengthAwareDto {
|
|
20
|
+
};
|
|
18
21
|
exports.RegisterPhoneDto = RegisterPhoneDto;
|
|
19
22
|
__decorate([
|
|
20
23
|
(0, class_validator_1.IsString)(),
|
|
@@ -22,9 +25,7 @@ __decorate([
|
|
|
22
25
|
], RegisterPhoneDto.prototype, "verificationToken", void 0);
|
|
23
26
|
__decorate([
|
|
24
27
|
(0, class_validator_1.IsOptional)(),
|
|
25
|
-
(0,
|
|
26
|
-
message: 'PIN must be between 4 and 8 digits',
|
|
27
|
-
}),
|
|
28
|
+
(0, is_configured_pin_length_validator_1.IsConfiguredPinLength)(),
|
|
28
29
|
__metadata("design:type", String)
|
|
29
30
|
], RegisterPhoneDto.prototype, "pin", void 0);
|
|
30
31
|
__decorate([
|
|
@@ -39,4 +40,7 @@ __decorate([
|
|
|
39
40
|
(0, class_transformer_1.Type)(() => create_user_profile_dto_1.CreateUserProfileDto),
|
|
40
41
|
__metadata("design:type", create_user_profile_dto_1.CreateUserProfileDto)
|
|
41
42
|
], RegisterPhoneDto.prototype, "profile", void 0);
|
|
43
|
+
exports.RegisterPhoneDto = RegisterPhoneDto = __decorate([
|
|
44
|
+
(0, pin_length_aware_decorator_1.PinLengthAware)()
|
|
45
|
+
], RegisterPhoneDto);
|
|
42
46
|
//# sourceMappingURL=register-phone.dto.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register-phone.dto.js","sourceRoot":"","sources":["../../../../src/modules/auth/dto/register-phone.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAEA,
|
|
1
|
+
{"version":3,"file":"register-phone.dto.js","sourceRoot":"","sources":["../../../../src/modules/auth/dto/register-phone.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAEA,qDAAkF;AAElF,yDAAyC;AAEzC,uFAAiF;AACjF,sGAAuF;AACvF,sHAAsG;AACtG,uCAA8C;AAGvC,IAAM,gBAAgB,GAAtB,MAAM,gBAAiB,SAAQ,2BAAiB;CAiBtD,CAAA;AAjBY,4CAAgB;AAE5B;IADC,IAAA,0BAAQ,GAAE;;2DACgB;AAI3B;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,0DAAqB,GAAE;;6CACX;AAKb;IAHC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;IACV,IAAA,2BAAS,EAAC,CAAC,CAAC;;kDACK;AAKlB;IAHC,IAAA,4BAAU,GAAE;IACZ,IAAA,gCAAc,GAAE;IAChB,IAAA,wBAAI,EAAC,GAAG,EAAE,CAAC,8CAAoB,CAAC;8BACvB,8CAAoB;iDAAC;2BAhBnB,gBAAgB;IAD5B,IAAA,2CAAc,GAAE;GACJ,gBAAgB,CAiB5B"}
|
|
@@ -19,10 +19,12 @@ export declare class PinAuthService {
|
|
|
19
19
|
removePin(userId: string, dto: RemovePinDto): Promise<{
|
|
20
20
|
message: string;
|
|
21
21
|
}>;
|
|
22
|
+
getPinStatusForType(userId: string, type: string): Promise<PinStatusDto>;
|
|
22
23
|
getPinStatus(userId: string): Promise<PinStatusDto[]>;
|
|
23
24
|
private loadPinRecord;
|
|
24
25
|
private assertPinCorrect;
|
|
25
26
|
private getAllowedTypes;
|
|
26
27
|
private assertAllowedType;
|
|
28
|
+
private assertPinLength;
|
|
27
29
|
}
|
|
28
30
|
//# sourceMappingURL=pin-auth.service.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pin-auth.service.d.ts","sourceRoot":"","sources":["../../../../src/modules/auth/services/pin-auth.service.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAErC,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,0CAA0C,CAAC;AAE3E,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAEnG,qBACa,cAAc;IAKzB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,eAAe;IALjC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmC;gBAIxC,OAAO,EAAE,UAAU,CAAC,OAAO,CAAC,EAC5B,eAAe,EAAE,eAAe;IAU5C,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"pin-auth.service.d.ts","sourceRoot":"","sources":["../../../../src/modules/auth/services/pin-auth.service.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAErC,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,0CAA0C,CAAC;AAE3E,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAEnG,qBACa,cAAc;IAKzB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,eAAe;IALjC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmC;gBAIxC,OAAO,EAAE,UAAU,CAAC,OAAO,CAAC,EAC5B,eAAe,EAAE,eAAe;IAU5C,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IA8BpE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAyB1E,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAmB1E,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAkB1E,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAwBxE,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;YA4B7C,aAAa;YAmBb,gBAAgB;IAwD9B,OAAO,CAAC,eAAe;IAQvB,OAAO,CAAC,iBAAiB;IASzB,OAAO,CAAC,eAAe;CAMvB"}
|
|
@@ -62,6 +62,7 @@ let PinAuthService = PinAuthService_1 = class PinAuthService {
|
|
|
62
62
|
}
|
|
63
63
|
async setPin(userId, dto) {
|
|
64
64
|
this.assertAllowedType(dto.type);
|
|
65
|
+
this.assertPinLength(dto.pin);
|
|
65
66
|
const existing = await this.pinRepo.findOne({ where: { userId, type: dto.type } });
|
|
66
67
|
if (existing) {
|
|
67
68
|
throw new common_1.ConflictException(`A ${dto.type} PIN is already set. Use the change-pin endpoint to update it.`);
|
|
@@ -78,6 +79,8 @@ let PinAuthService = PinAuthService_1 = class PinAuthService {
|
|
|
78
79
|
}
|
|
79
80
|
async changePin(userId, dto) {
|
|
80
81
|
this.assertAllowedType(dto.type);
|
|
82
|
+
this.assertPinLength(dto.currentPin);
|
|
83
|
+
this.assertPinLength(dto.newPin);
|
|
81
84
|
const record = await this.loadPinRecord(userId, dto.type);
|
|
82
85
|
await this.assertPinCorrect(record, dto.currentPin);
|
|
83
86
|
record.pinHash = await argon2.hash(dto.newPin);
|
|
@@ -90,6 +93,7 @@ let PinAuthService = PinAuthService_1 = class PinAuthService {
|
|
|
90
93
|
}
|
|
91
94
|
async verifyPin(userId, dto) {
|
|
92
95
|
this.assertAllowedType(dto.type);
|
|
96
|
+
this.assertPinLength(dto.pin);
|
|
93
97
|
const record = await this.loadPinRecord(userId, dto.type);
|
|
94
98
|
await this.assertPinCorrect(record, dto.pin);
|
|
95
99
|
record.lastVerifiedAt = new Date();
|
|
@@ -99,12 +103,29 @@ let PinAuthService = PinAuthService_1 = class PinAuthService {
|
|
|
99
103
|
}
|
|
100
104
|
async removePin(userId, dto) {
|
|
101
105
|
this.assertAllowedType(dto.type);
|
|
106
|
+
this.assertPinLength(dto.currentPin);
|
|
102
107
|
const record = await this.loadPinRecord(userId, dto.type);
|
|
103
108
|
await this.assertPinCorrect(record, dto.currentPin);
|
|
104
109
|
await this.pinRepo.remove(record);
|
|
105
110
|
this.logger.log({ event: 'PIN_REMOVED', userId, type: dto.type });
|
|
106
111
|
return { message: `${dto.type} PIN removed successfully.` };
|
|
107
112
|
}
|
|
113
|
+
async getPinStatusForType(userId, type) {
|
|
114
|
+
this.assertAllowedType(type);
|
|
115
|
+
const record = await this.pinRepo.findOne({ where: { userId, type } });
|
|
116
|
+
const now = new Date();
|
|
117
|
+
if (!record) {
|
|
118
|
+
return { type, isSet: false, isLocked: false };
|
|
119
|
+
}
|
|
120
|
+
return {
|
|
121
|
+
type,
|
|
122
|
+
isSet: true,
|
|
123
|
+
pinUpdatedAt: record.pinUpdatedAt,
|
|
124
|
+
lastVerifiedAt: record.lastVerifiedAt,
|
|
125
|
+
isLocked: !!(record.lockedUntil && record.lockedUntil > now),
|
|
126
|
+
lockedUntil: record.lockedUntil,
|
|
127
|
+
};
|
|
128
|
+
}
|
|
108
129
|
async getPinStatus(userId) {
|
|
109
130
|
const allowedTypes = this.getAllowedTypes();
|
|
110
131
|
const records = await this.pinRepo.find({ where: { userId } });
|
|
@@ -182,6 +203,12 @@ let PinAuthService = PinAuthService_1 = class PinAuthService {
|
|
|
182
203
|
throw new common_1.BadRequestException(`Unknown PIN type "${type}". Allowed types: ${allowed.join(', ')}.`);
|
|
183
204
|
}
|
|
184
205
|
}
|
|
206
|
+
assertPinLength(pin) {
|
|
207
|
+
const length = this.settingsService.get(settings_keys_1.SETTING_KEYS.PIN_LENGTH);
|
|
208
|
+
if (!new RegExp(`^\\d{${length}}$`).test(pin)) {
|
|
209
|
+
throw new common_1.BadRequestException(`PIN must be exactly ${length} digits.`);
|
|
210
|
+
}
|
|
211
|
+
}
|
|
185
212
|
};
|
|
186
213
|
exports.PinAuthService = PinAuthService;
|
|
187
214
|
exports.PinAuthService = PinAuthService = PinAuthService_1 = __decorate([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pin-auth.service.js","sourceRoot":"","sources":["../../../../src/modules/auth/services/pin-auth.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2CAQwB;AACxB,6CAAmD;AACnD,qCAAqC;AACrC,+CAAiC;AACjC,iEAAsD;AACtD,+EAA2E;AAC3E,0EAAsE;AAI/D,IAAM,cAAc,sBAApB,MAAM,cAAc;IAG1B,YAEC,OAA6C,EAC5B,eAAgC;QADhC,YAAO,GAAP,OAAO,CAAqB;QAC5B,oBAAe,GAAf,eAAe,CAAiB;QALjC,WAAM,GAAG,IAAI,eAAM,CAAC,gBAAc,CAAC,IAAI,CAAC,CAAC;IAMvD,CAAC;IASJ,KAAK,CAAC,MAAM,CAAC,MAAc,EAAE,GAAc;QAC1C,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"pin-auth.service.js","sourceRoot":"","sources":["../../../../src/modules/auth/services/pin-auth.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
export declare const
|
|
1
|
+
export declare const OTP_MIN_LENGTH = 4;
|
|
2
|
+
export declare const OTP_MAX_LENGTH = 6;
|
|
3
|
+
export declare function clampOtpCodeLength(length: number): number;
|
|
4
|
+
export declare function isValidOtpCode(value: string): boolean;
|
|
2
5
|
export declare const OTP_CORRELATION_TTL_SECONDS = 120;
|
|
3
6
|
export declare function renderOtpTemplate(template: string, code: string): string;
|
|
4
7
|
//# sourceMappingURL=otp.constants.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"otp.constants.d.ts","sourceRoot":"","sources":["../../../../src/modules/otp/constants/otp.constants.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"otp.constants.d.ts","sourceRoot":"","sources":["../../../../src/modules/otp/constants/otp.constants.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,cAAc,IAAI,CAAC;AAGhC,eAAO,MAAM,cAAc,IAAI,CAAC;AAGhC,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAIzD;AAGD,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAErD;AAOD,eAAO,MAAM,2BAA2B,MAAM,CAAC;AAQ/C,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAExE"}
|
|
@@ -1,8 +1,20 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.OTP_CORRELATION_TTL_SECONDS = exports.
|
|
3
|
+
exports.OTP_CORRELATION_TTL_SECONDS = exports.OTP_MAX_LENGTH = exports.OTP_MIN_LENGTH = void 0;
|
|
4
|
+
exports.clampOtpCodeLength = clampOtpCodeLength;
|
|
5
|
+
exports.isValidOtpCode = isValidOtpCode;
|
|
4
6
|
exports.renderOtpTemplate = renderOtpTemplate;
|
|
5
|
-
exports.
|
|
7
|
+
exports.OTP_MIN_LENGTH = 4;
|
|
8
|
+
exports.OTP_MAX_LENGTH = 6;
|
|
9
|
+
function clampOtpCodeLength(length) {
|
|
10
|
+
const n = Math.trunc(Number(length));
|
|
11
|
+
if (!Number.isFinite(n) || n < exports.OTP_MIN_LENGTH)
|
|
12
|
+
return exports.OTP_MIN_LENGTH;
|
|
13
|
+
return Math.min(n, exports.OTP_MAX_LENGTH);
|
|
14
|
+
}
|
|
15
|
+
function isValidOtpCode(value) {
|
|
16
|
+
return /^\d+$/.test(value) && value.length >= exports.OTP_MIN_LENGTH && value.length <= exports.OTP_MAX_LENGTH;
|
|
17
|
+
}
|
|
6
18
|
exports.OTP_CORRELATION_TTL_SECONDS = 120;
|
|
7
19
|
function renderOtpTemplate(template, code) {
|
|
8
20
|
return template.replace(/\{code\}/g, code);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"otp.constants.js","sourceRoot":"","sources":["../../../../src/modules/otp/constants/otp.constants.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"otp.constants.js","sourceRoot":"","sources":["../../../../src/modules/otp/constants/otp.constants.ts"],"names":[],"mappings":";;;AAWA,gDAIC;AAGD,wCAEC;AAeD,8CAEC;AAhCY,QAAA,cAAc,GAAG,CAAC,CAAC;AAGnB,QAAA,cAAc,GAAG,CAAC,CAAC;AAGhC,SAAgB,kBAAkB,CAAC,MAAc;IAChD,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;IACrC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,sBAAc;QAAE,OAAO,sBAAc,CAAC;IACrE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,sBAAc,CAAC,CAAC;AACpC,CAAC;AAGD,SAAgB,cAAc,CAAC,KAAa;IAC3C,OAAO,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,IAAI,sBAAc,IAAI,KAAK,CAAC,MAAM,IAAI,sBAAc,CAAC;AAChG,CAAC;AAOY,QAAA,2BAA2B,GAAG,GAAG,CAAC;AAQ/C,SAAgB,iBAAiB,CAAC,QAAgB,EAAE,IAAY;IAC/D,OAAO,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;AAC5C,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verify-email.dto.d.ts","sourceRoot":"","sources":["../../../../src/modules/otp/dto/verify-email.dto.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"verify-email.dto.d.ts","sourceRoot":"","sources":["../../../../src/modules/otp/dto/verify-email.dto.ts"],"names":[],"mappings":"AAKA,qBAAa,cAAc;IAE1B,KAAK,EAAG,MAAM,CAAC;IAIf,GAAG,EAAG,MAAM,CAAC;CACb"}
|
|
@@ -11,6 +11,7 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
12
|
exports.VerifyEmailDto = void 0;
|
|
13
13
|
const class_validator_1 = require("class-validator");
|
|
14
|
+
const is_configured_otp_length_validator_1 = require("../../../common/validators/is-configured-otp-length.validator");
|
|
14
15
|
class VerifyEmailDto {
|
|
15
16
|
}
|
|
16
17
|
exports.VerifyEmailDto = VerifyEmailDto;
|
|
@@ -20,7 +21,7 @@ __decorate([
|
|
|
20
21
|
], VerifyEmailDto.prototype, "email", void 0);
|
|
21
22
|
__decorate([
|
|
22
23
|
(0, class_validator_1.IsString)(),
|
|
23
|
-
(0,
|
|
24
|
+
(0, is_configured_otp_length_validator_1.IsConfiguredOtpLength)(),
|
|
24
25
|
__metadata("design:type", String)
|
|
25
26
|
], VerifyEmailDto.prototype, "otp", void 0);
|
|
26
27
|
//# sourceMappingURL=verify-email.dto.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verify-email.dto.js","sourceRoot":"","sources":["../../../../src/modules/otp/dto/verify-email.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAEA,
|
|
1
|
+
{"version":3,"file":"verify-email.dto.js","sourceRoot":"","sources":["../../../../src/modules/otp/dto/verify-email.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAEA,qDAAoD;AACpD,sHAAsG;AAEtG,MAAa,cAAc;CAO1B;AAPD,wCAOC;AALA;IADC,IAAA,yBAAO,GAAE;;6CACK;AAIf;IAFC,IAAA,0BAAQ,GAAE;IACV,IAAA,0DAAqB,GAAE;;2CACX"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verify-otp.dto.d.ts","sourceRoot":"","sources":["../../../../src/modules/otp/dto/verify-otp.dto.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"verify-otp.dto.d.ts","sourceRoot":"","sources":["../../../../src/modules/otp/dto/verify-otp.dto.ts"],"names":[],"mappings":"AAKA,qBAAa,YAAY;IAGxB,WAAW,EAAG,MAAM,CAAC;IAIrB,GAAG,EAAG,MAAM,CAAC;CACb"}
|
|
@@ -11,6 +11,7 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
12
|
exports.VerifyOtpDto = void 0;
|
|
13
13
|
const class_validator_1 = require("class-validator");
|
|
14
|
+
const is_configured_otp_length_validator_1 = require("../../../common/validators/is-configured-otp-length.validator");
|
|
14
15
|
class VerifyOtpDto {
|
|
15
16
|
}
|
|
16
17
|
exports.VerifyOtpDto = VerifyOtpDto;
|
|
@@ -21,7 +22,7 @@ __decorate([
|
|
|
21
22
|
], VerifyOtpDto.prototype, "phoneNumber", void 0);
|
|
22
23
|
__decorate([
|
|
23
24
|
(0, class_validator_1.IsString)(),
|
|
24
|
-
(0,
|
|
25
|
+
(0, is_configured_otp_length_validator_1.IsConfiguredOtpLength)(),
|
|
25
26
|
__metadata("design:type", String)
|
|
26
27
|
], VerifyOtpDto.prototype, "otp", void 0);
|
|
27
28
|
//# sourceMappingURL=verify-otp.dto.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verify-otp.dto.js","sourceRoot":"","sources":["../../../../src/modules/otp/dto/verify-otp.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAEA,
|
|
1
|
+
{"version":3,"file":"verify-otp.dto.js","sourceRoot":"","sources":["../../../../src/modules/otp/dto/verify-otp.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAEA,qDAAoD;AACpD,sHAAsG;AAEtG,MAAa,YAAY;CAQxB;AARD,oCAQC;AALA;IAFC,IAAA,0BAAQ,GAAE;IACV,IAAA,yBAAO,EAAC,oBAAoB,CAAC;;iDACT;AAIrB;IAFC,IAAA,0BAAQ,GAAE;IACV,IAAA,0DAAqB,GAAE;;yCACX"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"otp.session.store.d.ts","sourceRoot":"","sources":["../../../../src/modules/otp/services/otp.session.store.ts"],"names":[],"mappings":"AAUA,OAAO,OAAO,MAAM,SAAS,CAAC;AAE9B,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AACxE,OAAO,EAAE,cAAc,EAAgC,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"otp.session.store.d.ts","sourceRoot":"","sources":["../../../../src/modules/otp/services/otp.session.store.ts"],"names":[],"mappings":"AAUA,OAAO,OAAO,MAAM,SAAS,CAAC;AAE9B,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AACxE,OAAO,EAAE,cAAc,EAAgC,MAAM,oBAAoB,CAAC;AAQlF,OAAO,EAAE,eAAe,EAAE,MAAM,0CAA0C,CAAC;AAG3E,MAAM,WAAW,gBAAgB;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,KAAK,GAAG,OAAO,CAAC;CACzB;AAED,qBACa,eAAe;IAM1B,OAAO,CAAC,QAAQ,CAAC,KAAK;IAGtB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,eAAe;IATjC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoC;gBAKzC,KAAK,EAAE,OAAO,GAAG,IAAI,EAGrB,SAAS,EAAE,SAAS,GAAG,IAAI,EAC3B,eAAe,EAAE,eAAe;IAGlD,SAAS,IAAI,OAAO;IAgBd,aAAa,CAClB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,KAAK,GAAG,OAAO,EACxB,SAAS,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,iBAAiB,CAAC;IAyGvB,WAAW,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAuB1D,aAAa,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBlD,0BAA0B,CAC/B,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,cAAc,GACrB,OAAO,CAAC,gBAAgB,CAAC;IA+D5B,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,cAAc;IAItB,OAAO,KAAK,MAAM,GAEjB;CACD"}
|
|
@@ -69,7 +69,11 @@ let OtpSessionStore = OtpSessionStore_1 = class OtpSessionStore {
|
|
|
69
69
|
async createSession(identifier, channel, fixedCode) {
|
|
70
70
|
const ttl = this.settingsService.get(settings_keys_1.SETTING_KEYS.OTP_TTL_SECONDS);
|
|
71
71
|
const resendIn = this.settingsService.get(settings_keys_1.SETTING_KEYS.OTP_RESEND_COOLDOWN_SECONDS);
|
|
72
|
-
const
|
|
72
|
+
const codeLength = (0, otp_constants_1.clampOtpCodeLength)(this.settingsService.get(settings_keys_1.SETTING_KEYS.OTP_CODE_LENGTH));
|
|
73
|
+
const code = fixedCode ?? (0, otp_utils_1.generateCode)(codeLength);
|
|
74
|
+
if (!(0, otp_constants_1.isValidOtpCode)(code)) {
|
|
75
|
+
throw new common_1.BadRequestException(`OTP code must be ${otp_constants_1.OTP_MIN_LENGTH}–${otp_constants_1.OTP_MAX_LENGTH} digits.`);
|
|
76
|
+
}
|
|
73
77
|
const sessionToken = (0, crypto_1.randomUUID)();
|
|
74
78
|
const otpCodeHash = await argon2.hash(code);
|
|
75
79
|
const now = Date.now();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"otp.session.store.js","sourceRoot":"","sources":["../../../../src/modules/otp/services/otp.session.store.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2CAOwB;AACxB,mCAAoC;AACpC,+CAAiC;AAEjC,+DAA4D;AAC5D,qCAAuC;AAEvC,kDAAkF;AAClF,
|
|
1
|
+
{"version":3,"file":"otp.session.store.js","sourceRoot":"","sources":["../../../../src/modules/otp/services/otp.session.store.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"otp.utils.d.ts","sourceRoot":"","sources":["../../../../src/modules/otp/utils/otp.utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"otp.utils.d.ts","sourceRoot":"","sources":["../../../../src/modules/otp/utils/otp.utils.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,OAAO,QAA2E,CAAC;AAEhG,MAAM,WAAW,cAAc;IAE9B,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,KAAK,GAAG,OAAO,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACnB;AAOD,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAItD;AAOD,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,GAAG,OAAO,GAAG,MAAM,CAgBnF;AAOD,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAgBlD;AAGD,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAMlD"}
|
|
@@ -8,10 +8,12 @@ exports.normalizeEmail = normalizeEmail;
|
|
|
8
8
|
const common_1 = require("@nestjs/common");
|
|
9
9
|
const crypto_1 = require("crypto");
|
|
10
10
|
const libphonenumber_js_1 = require("libphonenumber-js");
|
|
11
|
+
const otp_constants_1 = require("../constants/otp.constants");
|
|
11
12
|
exports.UUID_RE = /^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;
|
|
12
13
|
function generateCode(otpLength) {
|
|
13
|
-
const
|
|
14
|
-
|
|
14
|
+
const length = (0, otp_constants_1.clampOtpCodeLength)(otpLength);
|
|
15
|
+
const max = Math.min(10 ** length, Number.MAX_SAFE_INTEGER);
|
|
16
|
+
return (0, crypto_1.randomInt)(0, max).toString().padStart(length, '0');
|
|
15
17
|
}
|
|
16
18
|
function maskIdentifier(identifier, channel) {
|
|
17
19
|
if (channel === 'email') {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"otp.utils.js","sourceRoot":"","sources":["../../../../src/modules/otp/utils/otp.utils.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"otp.utils.js","sourceRoot":"","sources":["../../../../src/modules/otp/utils/otp.utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,6 +5,7 @@ export interface TestOtpIdentifier {
|
|
|
5
5
|
}
|
|
6
6
|
export declare const SETTING_DEFAULTS: {
|
|
7
7
|
readonly 'otp.ttl_seconds': 300;
|
|
8
|
+
readonly 'otp.code_length': 6;
|
|
8
9
|
readonly 'otp.max_attempts': 5;
|
|
9
10
|
readonly 'otp.resend_cooldown_seconds': 60;
|
|
10
11
|
readonly 'otp.rate_limit_max': 3;
|
|
@@ -61,6 +62,7 @@ export declare const SETTING_DEFAULTS: {
|
|
|
61
62
|
readonly 'templates.account_suspended.subject': "Your account has been suspended";
|
|
62
63
|
readonly 'templates.account_reactivated.subject': "Your account has been reactivated";
|
|
63
64
|
readonly 'pin.allowed_types': string[];
|
|
65
|
+
readonly 'pin.length': 6;
|
|
64
66
|
readonly 'pin.max_attempts': 5;
|
|
65
67
|
readonly 'pin.lockout_duration_seconds': 300;
|
|
66
68
|
readonly 'firebase.project_id': "";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settings.defaults.d.ts","sourceRoot":"","sources":["../../../../src/modules/settings/constants/settings.defaults.ts"],"names":[],"mappings":"AAeA,MAAM,WAAW,iBAAiB;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,KAAK,GAAG,OAAO,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC;CACb;AA8BD,eAAO,MAAM,gBAAgB
|
|
1
|
+
{"version":3,"file":"settings.defaults.d.ts","sourceRoot":"","sources":["../../../../src/modules/settings/constants/settings.defaults.ts"],"names":[],"mappings":"AAeA,MAAM,WAAW,iBAAiB;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,KAAK,GAAG,OAAO,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC;CACb;AA8BD,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;qCA0BE,iBAAiB,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kCAyDN,MAAM,EAAE;;;;;;;;CAWR,CAAC"}
|
|
@@ -23,6 +23,7 @@ const OTP_EMAIL_HTML = `<!DOCTYPE html>
|
|
|
23
23
|
</html>`;
|
|
24
24
|
exports.SETTING_DEFAULTS = {
|
|
25
25
|
'otp.ttl_seconds': 300,
|
|
26
|
+
'otp.code_length': 6,
|
|
26
27
|
'otp.max_attempts': 5,
|
|
27
28
|
'otp.resend_cooldown_seconds': 60,
|
|
28
29
|
'otp.rate_limit_max': 3,
|
|
@@ -79,6 +80,7 @@ exports.SETTING_DEFAULTS = {
|
|
|
79
80
|
'templates.account_suspended.subject': 'Your account has been suspended',
|
|
80
81
|
'templates.account_reactivated.subject': 'Your account has been reactivated',
|
|
81
82
|
'pin.allowed_types': ['authentication'],
|
|
83
|
+
'pin.length': 6,
|
|
82
84
|
'pin.max_attempts': 5,
|
|
83
85
|
'pin.lockout_duration_seconds': 300,
|
|
84
86
|
'firebase.project_id': '',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settings.defaults.js","sourceRoot":"","sources":["../../../../src/modules/settings/constants/settings.defaults.ts"],"names":[],"mappings":";;;AA0BA,MAAM,cAAc,GAAG;;;;;;;;;;;;;;;;;;;QAmBf,CAAC;AAII,QAAA,gBAAgB,GAAG;IAE/B,iBAAiB,EAAE,GAAG;IACtB,kBAAkB,EAAE,CAAC;IACrB,6BAA6B,EAAE,EAAE;IACjC,oBAAoB,EAAE,CAAC;IACvB,+BAA+B,EAAE,GAAG;IACpC,uBAAuB,EAAE,EAAE;IAC3B,kCAAkC,EAAE,GAAG;IACvC,kBAAkB,EAAE,wEAAwE;IAC5F,mBAAmB,EAAE,wBAAwB;IAC7C,yBAAyB,EAAE,cAAc;IACzC,yBAAyB,EACxB,mGAAmG;IAGpG,yBAAyB,EAAE,CAAC;IAC5B,8BAA8B,EAAE,GAAG;IACnC,0BAA0B,EAAE,KAAK;IACjC,wBAAwB,EAAE,CAAC;IAC3B,mCAAmC,EAAE,IAAI;IAKzC,sBAAsB,EAAE,EAAyB;IAGjD,eAAe,EAAE,QAAQ;IACzB,aAAa,EAAE,OAAO;IACtB,wBAAwB,EAAE,MAAM;IAGhC,yBAAyB,EAAE,EAAE;IAC7B,oCAAoC,EAAE,GAAG;IACzC,4BAA4B,EAAE,EAAE;IAChC,gCAAgC,EAAE,GAAG;IAGrC,oBAAoB,EAAE,GAAG;IACzB,mBAAmB,EAAE,GAAG;IACxB,8BAA8B,EAAE,GAAG;IAGnC,qBAAqB,EAAE,QAAQ;IAC/B,wBAAwB,EAAE,EAAE;IAC5B,wBAAwB,EAAE,EAAE;IAC5B,uBAAuB,EAAE,EAAE;IAC3B,oBAAoB,EAAE,EAAE;IACxB,sBAAsB,EAAE,EAAE;IAC1B,qBAAqB,EAAE,EAAE;IACzB,uBAAuB,EAAE,EAAE;IAC3B,sBAAsB,EAAE,EAAE;IAC1B,oBAAoB,EAAE,EAAE;IACxB,wBAAwB,EAAE,EAAE;IAG5B,uBAAuB,EAAE,MAAM;IAC/B,oBAAoB,EAAE,wBAAwB;IAC9C,sBAAsB,EAAE,EAAE;IAC1B,wBAAwB,EAAE,EAAE;IAC5B,uBAAuB,EAAE,EAAE;IAC3B,sBAAsB,EAAE,EAAE;IAC1B,iBAAiB,EAAE,WAAW;IAC9B,iBAAiB,EAAE,IAAI;IACvB,iBAAiB,EAAE,EAAE;IACrB,iBAAiB,EAAE,EAAE;IAGrB,2BAA2B,EAAE,oBAAoB;IACjD,kCAAkC,EAAE,qBAAqB;IACzD,sCAAsC,EAAE,wBAAwB;IAChE,0BAA0B,EAAE,qBAAqB;IACjD,mCAAmC,EAAE,+BAA+B;IACpE,mCAAmC,EAAE,+BAA+B;IACpE,qCAAqC,EAAE,iCAAiC;IACxE,uCAAuC,EAAE,mCAAmC;IAM5E,mBAAmB,EAAE,CAAC,gBAAgB,CAAa;IACnD,kBAAkB,EAAE,CAAC;IACrB,8BAA8B,EAAE,GAAG;IAInC,qBAAqB,EAAE,EAAE;IACzB,uBAAuB,EAAE,EAAE;IAC3B,sBAAsB,EAAE,EAAE;IAC1B,kBAAkB,EAAE,EAAE;CACqB,CAAC"}
|
|
1
|
+
{"version":3,"file":"settings.defaults.js","sourceRoot":"","sources":["../../../../src/modules/settings/constants/settings.defaults.ts"],"names":[],"mappings":";;;AA0BA,MAAM,cAAc,GAAG;;;;;;;;;;;;;;;;;;;QAmBf,CAAC;AAII,QAAA,gBAAgB,GAAG;IAE/B,iBAAiB,EAAE,GAAG;IACtB,iBAAiB,EAAE,CAAC;IACpB,kBAAkB,EAAE,CAAC;IACrB,6BAA6B,EAAE,EAAE;IACjC,oBAAoB,EAAE,CAAC;IACvB,+BAA+B,EAAE,GAAG;IACpC,uBAAuB,EAAE,EAAE;IAC3B,kCAAkC,EAAE,GAAG;IACvC,kBAAkB,EAAE,wEAAwE;IAC5F,mBAAmB,EAAE,wBAAwB;IAC7C,yBAAyB,EAAE,cAAc;IACzC,yBAAyB,EACxB,mGAAmG;IAGpG,yBAAyB,EAAE,CAAC;IAC5B,8BAA8B,EAAE,GAAG;IACnC,0BAA0B,EAAE,KAAK;IACjC,wBAAwB,EAAE,CAAC;IAC3B,mCAAmC,EAAE,IAAI;IAKzC,sBAAsB,EAAE,EAAyB;IAGjD,eAAe,EAAE,QAAQ;IACzB,aAAa,EAAE,OAAO;IACtB,wBAAwB,EAAE,MAAM;IAGhC,yBAAyB,EAAE,EAAE;IAC7B,oCAAoC,EAAE,GAAG;IACzC,4BAA4B,EAAE,EAAE;IAChC,gCAAgC,EAAE,GAAG;IAGrC,oBAAoB,EAAE,GAAG;IACzB,mBAAmB,EAAE,GAAG;IACxB,8BAA8B,EAAE,GAAG;IAGnC,qBAAqB,EAAE,QAAQ;IAC/B,wBAAwB,EAAE,EAAE;IAC5B,wBAAwB,EAAE,EAAE;IAC5B,uBAAuB,EAAE,EAAE;IAC3B,oBAAoB,EAAE,EAAE;IACxB,sBAAsB,EAAE,EAAE;IAC1B,qBAAqB,EAAE,EAAE;IACzB,uBAAuB,EAAE,EAAE;IAC3B,sBAAsB,EAAE,EAAE;IAC1B,oBAAoB,EAAE,EAAE;IACxB,wBAAwB,EAAE,EAAE;IAG5B,uBAAuB,EAAE,MAAM;IAC/B,oBAAoB,EAAE,wBAAwB;IAC9C,sBAAsB,EAAE,EAAE;IAC1B,wBAAwB,EAAE,EAAE;IAC5B,uBAAuB,EAAE,EAAE;IAC3B,sBAAsB,EAAE,EAAE;IAC1B,iBAAiB,EAAE,WAAW;IAC9B,iBAAiB,EAAE,IAAI;IACvB,iBAAiB,EAAE,EAAE;IACrB,iBAAiB,EAAE,EAAE;IAGrB,2BAA2B,EAAE,oBAAoB;IACjD,kCAAkC,EAAE,qBAAqB;IACzD,sCAAsC,EAAE,wBAAwB;IAChE,0BAA0B,EAAE,qBAAqB;IACjD,mCAAmC,EAAE,+BAA+B;IACpE,mCAAmC,EAAE,+BAA+B;IACpE,qCAAqC,EAAE,iCAAiC;IACxE,uCAAuC,EAAE,mCAAmC;IAM5E,mBAAmB,EAAE,CAAC,gBAAgB,CAAa;IACnD,YAAY,EAAE,CAAC;IACf,kBAAkB,EAAE,CAAC;IACrB,8BAA8B,EAAE,GAAG;IAInC,qBAAqB,EAAE,EAAE;IACzB,uBAAuB,EAAE,EAAE;IAC3B,sBAAsB,EAAE,EAAE;IAC1B,kBAAkB,EAAE,EAAE;CACqB,CAAC"}
|
|
@@ -10,6 +10,7 @@ export declare const SETTING_KEYS: {
|
|
|
10
10
|
readonly OTP_EMAIL_SUBJECT: "otp.email_subject";
|
|
11
11
|
readonly OTP_EMAIL_HTML_TEMPLATE: "otp.email_html_template";
|
|
12
12
|
readonly OTP_EMAIL_TEXT_TEMPLATE: "otp.email_text_template";
|
|
13
|
+
readonly OTP_CODE_LENGTH: "otp.code_length";
|
|
13
14
|
readonly TOKENS_REFRESH_TTL_DAYS: "tokens.refresh_ttl_days";
|
|
14
15
|
readonly TOKENS_TEMPORARY_TTL_SECONDS: "tokens.temporary_ttl_seconds";
|
|
15
16
|
readonly TOKENS_ACCESS_EXPIRES_IN: "tokens.access_expires_in";
|
|
@@ -64,6 +65,7 @@ export declare const SETTING_KEYS: {
|
|
|
64
65
|
readonly TEMPLATES_ACCOUNT_REACTIVATED: "templates.account_reactivated";
|
|
65
66
|
readonly TEMPLATES_ACCOUNT_REACTIVATED_SUBJECT: "templates.account_reactivated.subject";
|
|
66
67
|
readonly PIN_ALLOWED_TYPES: "pin.allowed_types";
|
|
68
|
+
readonly PIN_LENGTH: "pin.length";
|
|
67
69
|
readonly PIN_MAX_ATTEMPTS: "pin.max_attempts";
|
|
68
70
|
readonly PIN_LOCKOUT_DURATION_SECONDS: "pin.lockout_duration_seconds";
|
|
69
71
|
readonly FIREBASE_PROJECT_ID: "firebase.project_id";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settings.keys.d.ts","sourceRoot":"","sources":["../../../../src/modules/settings/constants/settings.keys.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,YAAY
|
|
1
|
+
{"version":3,"file":"settings.keys.d.ts","sourceRoot":"","sources":["../../../../src/modules/settings/constants/settings.keys.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgLf,CAAC;AAEX,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,OAAO,YAAY,CAAC,CAAC"}
|
|
@@ -13,6 +13,7 @@ exports.SETTING_KEYS = {
|
|
|
13
13
|
OTP_EMAIL_SUBJECT: 'otp.email_subject',
|
|
14
14
|
OTP_EMAIL_HTML_TEMPLATE: 'otp.email_html_template',
|
|
15
15
|
OTP_EMAIL_TEXT_TEMPLATE: 'otp.email_text_template',
|
|
16
|
+
OTP_CODE_LENGTH: 'otp.code_length',
|
|
16
17
|
TOKENS_REFRESH_TTL_DAYS: 'tokens.refresh_ttl_days',
|
|
17
18
|
TOKENS_TEMPORARY_TTL_SECONDS: 'tokens.temporary_ttl_seconds',
|
|
18
19
|
TOKENS_ACCESS_EXPIRES_IN: 'tokens.access_expires_in',
|
|
@@ -67,6 +68,7 @@ exports.SETTING_KEYS = {
|
|
|
67
68
|
TEMPLATES_ACCOUNT_REACTIVATED: 'templates.account_reactivated',
|
|
68
69
|
TEMPLATES_ACCOUNT_REACTIVATED_SUBJECT: 'templates.account_reactivated.subject',
|
|
69
70
|
PIN_ALLOWED_TYPES: 'pin.allowed_types',
|
|
71
|
+
PIN_LENGTH: 'pin.length',
|
|
70
72
|
PIN_MAX_ATTEMPTS: 'pin.max_attempts',
|
|
71
73
|
PIN_LOCKOUT_DURATION_SECONDS: 'pin.lockout_duration_seconds',
|
|
72
74
|
FIREBASE_PROJECT_ID: 'firebase.project_id',
|