@umapi/contracts 1.0.22 → 1.0.23
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.
|
@@ -5,41 +5,6 @@ import { AuthMethod } from '../interfaces';
|
|
|
5
5
|
*/
|
|
6
6
|
export declare class OtpRequestDto {
|
|
7
7
|
method: AuthMethod;
|
|
8
|
-
|
|
9
|
-
get identifier(): string;
|
|
10
|
-
set identifier(value: string);
|
|
11
|
-
/**
|
|
12
|
-
* Возвращает телефон, если метод OTP_PHONE и номер валиден
|
|
13
|
-
*/
|
|
14
|
-
get phone(): string | null;
|
|
15
|
-
/**
|
|
16
|
-
* Возвращает email, если метод OTP_EMAIL и формат валиден
|
|
17
|
-
*/
|
|
18
|
-
get email(): string | null;
|
|
19
|
-
/**
|
|
20
|
-
* Нормализует телефонный номер к стандартному формату E.164
|
|
21
|
-
* @returns Нормализованный номер или null если невалидный
|
|
22
|
-
*/
|
|
23
|
-
normalizePhone(): string | null;
|
|
24
|
-
/**
|
|
25
|
-
* Проверяет валидность телефонного номера
|
|
26
|
-
* @returns boolean
|
|
27
|
-
*/
|
|
28
|
-
isPhoneValid(): boolean;
|
|
29
|
-
/**
|
|
30
|
-
* Форматирует телефон в национальный формат
|
|
31
|
-
* @returns Отформатированный номер или null
|
|
32
|
-
*/
|
|
33
|
-
formatPhoneNational(): string | null;
|
|
34
|
-
/**
|
|
35
|
-
* Форматирует телефон в RFC3966 (tel:+79991234567)
|
|
36
|
-
* @returns Отформатированный номер или null
|
|
37
|
-
*/
|
|
38
|
-
formatPhoneUrl(): string | null;
|
|
39
|
-
/**
|
|
40
|
-
* Проверяет валидность всего DTO
|
|
41
|
-
* @returns boolean
|
|
42
|
-
*/
|
|
43
|
-
isValid(): boolean;
|
|
8
|
+
identifier: string;
|
|
44
9
|
}
|
|
45
10
|
//# sourceMappingURL=otp-request.dto.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"otp-request.dto.d.ts","sourceRoot":"","sources":["../../src/dto/otp-request.dto.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"otp-request.dto.d.ts","sourceRoot":"","sources":["../../src/dto/otp-request.dto.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAI3C;;;GAGG;AACH,qBAAa,aAAa;IAGtB,MAAM,EAAG,UAAU,CAAC;IAoBpB,UAAU,EAAG,MAAM,CAAC;CAGvB"}
|
|
@@ -12,83 +12,15 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
12
12
|
exports.OtpRequestDto = void 0;
|
|
13
13
|
const swagger_1 = require("@nestjs/swagger");
|
|
14
14
|
const class_validator_1 = require("class-validator");
|
|
15
|
+
const class_transformer_1 = require("class-transformer");
|
|
15
16
|
const interfaces_1 = require("../interfaces");
|
|
16
17
|
const phone_helper_1 = require("../helpers/phone.helper");
|
|
18
|
+
const phone_validator_1 = require("../validators/phone.validator");
|
|
17
19
|
/**
|
|
18
20
|
* DTO для запроса OTP
|
|
19
21
|
* Требует указания либо phone, либо email
|
|
20
22
|
*/
|
|
21
23
|
class OtpRequestDto {
|
|
22
|
-
// Getter и Setter для автоматической обработки
|
|
23
|
-
get identifier() {
|
|
24
|
-
return this._identifier;
|
|
25
|
-
}
|
|
26
|
-
set identifier(value) {
|
|
27
|
-
this._identifier = value;
|
|
28
|
-
}
|
|
29
|
-
/**
|
|
30
|
-
* Возвращает телефон, если метод OTP_PHONE и номер валиден
|
|
31
|
-
*/
|
|
32
|
-
get phone() {
|
|
33
|
-
if (this.method === interfaces_1.AuthMethod.OTP_PHONE) {
|
|
34
|
-
const normalized = phone_helper_1.PhoneHelper.normalize(this._identifier);
|
|
35
|
-
return normalized || null;
|
|
36
|
-
}
|
|
37
|
-
return null;
|
|
38
|
-
}
|
|
39
|
-
/**
|
|
40
|
-
* Возвращает email, если метод OTP_EMAIL и формат валиден
|
|
41
|
-
*/
|
|
42
|
-
get email() {
|
|
43
|
-
if (this.method === interfaces_1.AuthMethod.OTP_EMAIL) {
|
|
44
|
-
// Простая проверка формата email
|
|
45
|
-
const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
|
|
46
|
-
return emailRegex.test(this._identifier) ? this._identifier : null;
|
|
47
|
-
}
|
|
48
|
-
return null;
|
|
49
|
-
}
|
|
50
|
-
/**
|
|
51
|
-
* Нормализует телефонный номер к стандартному формату E.164
|
|
52
|
-
* @returns Нормализованный номер или null если невалидный
|
|
53
|
-
*/
|
|
54
|
-
normalizePhone() {
|
|
55
|
-
return phone_helper_1.PhoneHelper.normalize(this.phone || '');
|
|
56
|
-
}
|
|
57
|
-
/**
|
|
58
|
-
* Проверяет валидность телефонного номера
|
|
59
|
-
* @returns boolean
|
|
60
|
-
*/
|
|
61
|
-
isPhoneValid() {
|
|
62
|
-
return phone_helper_1.PhoneHelper.isValid(this.phone || '');
|
|
63
|
-
}
|
|
64
|
-
/**
|
|
65
|
-
* Форматирует телефон в национальный формат
|
|
66
|
-
* @returns Отформатированный номер или null
|
|
67
|
-
*/
|
|
68
|
-
formatPhoneNational() {
|
|
69
|
-
return phone_helper_1.PhoneHelper.formatNational(this.phone || '');
|
|
70
|
-
}
|
|
71
|
-
/**
|
|
72
|
-
* Форматирует телефон в RFC3966 (tel:+79991234567)
|
|
73
|
-
* @returns Отформатированный номер или null
|
|
74
|
-
*/
|
|
75
|
-
formatPhoneUrl() {
|
|
76
|
-
return phone_helper_1.PhoneHelper.formatUrl(this.phone || '');
|
|
77
|
-
}
|
|
78
|
-
/**
|
|
79
|
-
* Проверяет валидность всего DTO
|
|
80
|
-
* @returns boolean
|
|
81
|
-
*/
|
|
82
|
-
isValid() {
|
|
83
|
-
// Проверяем обязательные поля в зависимости от метода
|
|
84
|
-
if (this.method === interfaces_1.AuthMethod.OTP_PHONE) {
|
|
85
|
-
return !!this.phone;
|
|
86
|
-
}
|
|
87
|
-
if (this.method === interfaces_1.AuthMethod.OTP_EMAIL) {
|
|
88
|
-
return !!this.email;
|
|
89
|
-
}
|
|
90
|
-
return false;
|
|
91
|
-
}
|
|
92
24
|
}
|
|
93
25
|
exports.OtpRequestDto = OtpRequestDto;
|
|
94
26
|
__decorate([
|
|
@@ -104,6 +36,17 @@ __decorate([
|
|
|
104
36
|
}),
|
|
105
37
|
(0, class_validator_1.IsNotEmpty)({ message: 'Идентификатор обязателен' }),
|
|
106
38
|
(0, class_validator_1.IsString)(),
|
|
39
|
+
(0, class_validator_1.ValidateIf)(o => o.method === interfaces_1.AuthMethod.OTP_PHONE),
|
|
40
|
+
(0, phone_validator_1.IsValidPhone)({ message: 'Неверный формат номера телефона' }),
|
|
41
|
+
(0, class_transformer_1.Transform)(({ value, obj }) => {
|
|
42
|
+
// Нормализуем телефон, если метод OTP_PHONE
|
|
43
|
+
if (obj.method === interfaces_1.AuthMethod.OTP_PHONE) {
|
|
44
|
+
return phone_helper_1.PhoneHelper.normalize(value) || value; // Если нормализация не удалась, возвращаем оригинал
|
|
45
|
+
}
|
|
46
|
+
return value;
|
|
47
|
+
}),
|
|
48
|
+
(0, class_validator_1.ValidateIf)(o => o.method === interfaces_1.AuthMethod.OTP_EMAIL),
|
|
49
|
+
(0, class_validator_1.IsEmail)({}, { message: 'Неверный формат email' }),
|
|
107
50
|
__metadata("design:type", String)
|
|
108
|
-
], OtpRequestDto.prototype, "
|
|
51
|
+
], OtpRequestDto.prototype, "identifier", void 0);
|
|
109
52
|
//# sourceMappingURL=otp-request.dto.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"otp-request.dto.js","sourceRoot":"","sources":["../../src/dto/otp-request.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6CAA8C;AAC9C,qDAAoF;AACpF,8CAA2C;AAC3C,0DAAsD;
|
|
1
|
+
{"version":3,"file":"otp-request.dto.js","sourceRoot":"","sources":["../../src/dto/otp-request.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6CAA8C;AAC9C,qDAAoF;AACpF,yDAA8C;AAC9C,8CAA2C;AAC3C,0DAAsD;AACtD,mEAA6D;AAE7D;;;GAGG;AACH,MAAa,aAAa;CA0BzB;AA1BD,sCA0BC;AAvBG;IAFC,IAAA,qBAAW,EAAC,EAAE,WAAW,EAAE,sBAAsB,EAAE,IAAI,EAAE,uBAAU,EAAE,OAAO,EAAE,uBAAU,CAAC,SAAS,EAAE,CAAC;IACrG,IAAA,wBAAM,EAAC,uBAAU,CAAC;;6CACC;AAoBpB;IAlBC,IAAA,qBAAW,EAAC;QACT,WAAW,EAAE,gDAAgD;QAC7D,QAAQ,EAAE,IAAI;QACd,OAAO,EAAE,cAAc;KAC1B,CAAC;IACD,IAAA,4BAAU,EAAC,EAAE,OAAO,EAAE,0BAA0B,EAAE,CAAC;IACnD,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,EAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,uBAAU,CAAC,SAAS,CAAC;IAClD,IAAA,8BAAY,EAAC,EAAE,OAAO,EAAE,iCAAiC,EAAE,CAAC;IAC5D,IAAA,6BAAS,EAAC,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE;QAC1B,4CAA4C;QAC5C,IAAI,GAAG,CAAC,MAAM,KAAK,uBAAU,CAAC,SAAS,EAAE,CAAC;YACtC,OAAO,0BAAW,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,oDAAoD;QACtG,CAAC;QACD,OAAO,KAAK,CAAC;IACjB,CAAC,CAAC;IACD,IAAA,4BAAU,EAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,uBAAU,CAAC,SAAS,CAAC;IAClD,IAAA,yBAAO,EAAC,EAAE,EAAE,EAAE,OAAO,EAAE,uBAAuB,EAAE,CAAC;;iDAC9B"}
|