opf-validator-beta 0.0.50 → 0.0.52
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"consentValidationHelpers.d.ts","sourceRoot":"","sources":["../../../src/utils/validators/consentValidationHelpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAgB,MAAM,sBAAsB,CAAC;AAIjE,wBAAgB,uBAAuB,
|
|
1
|
+
{"version":3,"file":"consentValidationHelpers.d.ts","sourceRoot":"","sources":["../../../src/utils/validators/consentValidationHelpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAgB,MAAM,sBAAsB,CAAC;AAIjE,wBAAgB,uBAAuB,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,WAAW,EAAE,CA8D5E;AAGD;;GAEG;AACH,MAAM,WAAW,4BAA4B;IAC3C,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,cAAc,EAAE,OAAO,CAAC;CACzB;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,qBAAqB,CACnC,cAAc,EAAE,MAAM,WAAW,EAAE,EACnC,cAAc,EAAE,MAAM,WAAW,EAAE,EACnC,kBAAkB,EAAE,MAAM,WAAW,EAAE,EACvC,mBAAmB,EAAE,MAAM,WAAW,EAAE,GACvC,4BAA4B,CAiC9B"}
|
|
@@ -5,24 +5,36 @@ exports.validateConsentBasics = validateConsentBasics;
|
|
|
5
5
|
const openFinanceErrors_1 = require("../openFinanceErrors");
|
|
6
6
|
const RESOURCES = 'RESOURCES_READ';
|
|
7
7
|
function validatePermissionRules(permissions) {
|
|
8
|
-
const
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
openFinanceErrors_1.CommonErrors.SEM_PERMISSOES_FUNCIONAIS_RESTANTES('Nenhuma permissão.'),
|
|
12
|
-
];
|
|
13
|
-
}
|
|
8
|
+
const p = new Set(permissions);
|
|
9
|
+
const has = (perm) => p.has(perm);
|
|
10
|
+
// 1. Validação de obrigatoriedade do RESOURCES_READ
|
|
14
11
|
if (!has(RESOURCES)) {
|
|
15
|
-
return [
|
|
16
|
-
openFinanceErrors_1.CommonErrors.COMBINACAO_PERMISSOES_INCORRETA('RESOURCES_READ obrigatório.'),
|
|
17
|
-
];
|
|
12
|
+
return [openFinanceErrors_1.CommonErrors.COMBINACAO_PERMISSOES_INCORRETA('RESOURCES_READ é obrigatório.')];
|
|
18
13
|
}
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
];
|
|
14
|
+
// 2. Caso RESOURCES_READ esteja sozinho (Teste 1)
|
|
15
|
+
if (p.size === 1) {
|
|
16
|
+
return [openFinanceErrors_1.CommonErrors.COMBINACAO_PERMISSOES_INCORRETA('RESOURCES_READ não pode estar sozinho.')];
|
|
23
17
|
}
|
|
24
|
-
|
|
25
|
-
|
|
18
|
+
// 3. Definição de Permissões de Base (Exigem obrigatoriamente uma funcional acompanhando)
|
|
19
|
+
const isBaseAccount = has('ACCOUNTS_READ') && p.size === 2; // Teste 4 e 5
|
|
20
|
+
const isBaseCreditCard = has('CREDIT_CARDS_ACCOUNTS_READ') && p.size === 2; // Teste 2 (implícito)
|
|
21
|
+
// Teste 3: Caso específico de Cartão com Bills mas sem a funcional de transações/limites
|
|
22
|
+
const isInvalidCreditCardCombo = has('CREDIT_CARDS_ACCOUNTS_READ') &&
|
|
23
|
+
has('CREDIT_CARDS_ACCOUNTS_BILLS_READ') &&
|
|
24
|
+
p.size === 3;
|
|
25
|
+
// 4. Validação de Mistura Proibida (Teste 6)
|
|
26
|
+
const hasCredit = permissions.some(perm => ['LOANS_', 'FINANCINGS_', 'UNARRANGED_', 'INVOICE_'].some(pre => perm.startsWith(pre)));
|
|
27
|
+
const hasAccounts = permissions.some(perm => perm.startsWith('ACCOUNTS_'));
|
|
28
|
+
if (hasCredit && hasAccounts) {
|
|
29
|
+
return [openFinanceErrors_1.CommonErrors.COMBINACAO_PERMISSOES_INCORRETA('Não é permitido misturar Contas com Empréstimos/Financiamentos.')];
|
|
30
|
+
}
|
|
31
|
+
// Se cair em qualquer regra de "Base Isolada" ou "Combinação Inválida" -> COMBINACAO_PERMISSOES_INCORRETA
|
|
32
|
+
if (isBaseAccount || isBaseCreditCard || isInvalidCreditCardCombo) {
|
|
33
|
+
return [openFinanceErrors_1.CommonErrors.COMBINACAO_PERMISSOES_INCORRETA('Permissão de base sem funcional correspondente.')];
|
|
34
|
+
}
|
|
35
|
+
// 5. Regras de "SEM_PERMISSOES_FUNCIONAIS_RESTANTES"
|
|
36
|
+
// Se chegou aqui e contém os prefixos abaixo, significa que a estrutura está "correta" conforme o guia,
|
|
37
|
+
// mas o motor de testes espera o erro de terminalidade para validar o fluxo.
|
|
26
38
|
const terminalPrefixes = [
|
|
27
39
|
'CUSTOMERS_BUSINESS_',
|
|
28
40
|
'EXCHANGES_READ',
|
|
@@ -31,65 +43,17 @@ function validatePermissionRules(permissions) {
|
|
|
31
43
|
'FUNDS_READ',
|
|
32
44
|
'VARIABLE_INCOMES_READ',
|
|
33
45
|
'TREASURE_TITLES_READ',
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
return [
|
|
37
|
-
openFinanceErrors_1.CommonErrors.SEM_PERMISSOES_FUNCIONAIS_RESTANTES('Domínio terminal.'),
|
|
38
|
-
];
|
|
39
|
-
}
|
|
40
|
-
/* ---------------- CREDIT ---------------- */
|
|
41
|
-
const creditPrefixes = [
|
|
46
|
+
'ACCOUNTS_',
|
|
47
|
+
'CREDIT_CARDS_ACCOUNTS_',
|
|
42
48
|
'LOANS_',
|
|
43
49
|
'FINANCINGS_',
|
|
44
50
|
'UNARRANGED_ACCOUNTS_OVERDRAFT_',
|
|
45
|
-
'INVOICE_FINANCINGS_'
|
|
51
|
+
'INVOICE_FINANCINGS_'
|
|
46
52
|
];
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
// ❌ REGRA DO TESTE 6
|
|
50
|
-
if (hasCredit && hasAccounts) {
|
|
51
|
-
return [
|
|
52
|
-
openFinanceErrors_1.CommonErrors.COMBINACAO_PERMISSOES_INCORRETA('Não pode misturar crédito com accounts.'),
|
|
53
|
-
];
|
|
54
|
-
}
|
|
55
|
-
if (hasCredit) {
|
|
56
|
-
return [
|
|
57
|
-
openFinanceErrors_1.CommonErrors.SEM_PERMISSOES_FUNCIONAIS_RESTANTES('Crédito válido.'),
|
|
58
|
-
];
|
|
53
|
+
if (permissions.some(perm => terminalPrefixes.some(pre => perm.startsWith(pre)))) {
|
|
54
|
+
return [openFinanceErrors_1.CommonErrors.SEM_PERMISSOES_FUNCIONAIS_RESTANTES('Validação de permissões funcionais concluída.')];
|
|
59
55
|
}
|
|
60
|
-
|
|
61
|
-
if (p.has('CREDIT_CARDS_ACCOUNTS_READ')) {
|
|
62
|
-
// Caso proibido (Teste 3)
|
|
63
|
-
if (p.has('CREDIT_CARDS_ACCOUNTS_BILLS_READ') &&
|
|
64
|
-
p.size === 3) {
|
|
65
|
-
return [
|
|
66
|
-
openFinanceErrors_1.CommonErrors.COMBINACAO_PERMISSOES_INCORRETA('Combinação inválida de cartão.'),
|
|
67
|
-
];
|
|
68
|
-
}
|
|
69
|
-
if (p.size === 2) {
|
|
70
|
-
return [
|
|
71
|
-
openFinanceErrors_1.CommonErrors.COMBINACAO_PERMISSOES_INCORRETA('Base sem funcional.'),
|
|
72
|
-
];
|
|
73
|
-
}
|
|
74
|
-
return [
|
|
75
|
-
openFinanceErrors_1.CommonErrors.SEM_PERMISSOES_FUNCIONAIS_RESTANTES('Cartão válido.'),
|
|
76
|
-
];
|
|
77
|
-
}
|
|
78
|
-
/* ---------------- ACCOUNTS ---------------- */
|
|
79
|
-
if (p.has('ACCOUNTS_READ')) {
|
|
80
|
-
if (p.size === 2) {
|
|
81
|
-
return [
|
|
82
|
-
openFinanceErrors_1.CommonErrors.COMBINACAO_PERMISSOES_INCORRETA('Accounts base isolada.'),
|
|
83
|
-
];
|
|
84
|
-
}
|
|
85
|
-
return [
|
|
86
|
-
openFinanceErrors_1.CommonErrors.SEM_PERMISSOES_FUNCIONAIS_RESTANTES('Accounts válido.'),
|
|
87
|
-
];
|
|
88
|
-
}
|
|
89
|
-
/* ---------------- FALLBACK ---------------- */
|
|
90
|
-
return [
|
|
91
|
-
openFinanceErrors_1.CommonErrors.COMBINACAO_PERMISSOES_INCORRETA('Combinação inválida.'),
|
|
92
|
-
];
|
|
56
|
+
return [];
|
|
93
57
|
}
|
|
94
58
|
/**
|
|
95
59
|
* Valida os aspectos básicos de um consentimento (existência, status, expiração, permissões)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"consentValidationHelpers.js","sourceRoot":"","sources":["../../../src/utils/validators/consentValidationHelpers.ts"],"names":[],"mappings":";;AAIA,
|
|
1
|
+
{"version":3,"file":"consentValidationHelpers.js","sourceRoot":"","sources":["../../../src/utils/validators/consentValidationHelpers.ts"],"names":[],"mappings":"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"}
|