opf-validator-beta 0.0.40 → 0.0.42
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;AAEjE;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"consentValidationHelpers.d.ts","sourceRoot":"","sources":["../../../src/utils/validators/consentValidationHelpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAgB,MAAM,sBAAsB,CAAC;AAEjE;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,WAAW,EAAE,CA8E5E;AAED;;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"}
|
|
@@ -9,53 +9,63 @@ const openFinanceErrors_1 = require("../openFinanceErrors");
|
|
|
9
9
|
function validatePermissionRules(permissions) {
|
|
10
10
|
const errors = [];
|
|
11
11
|
const has = (p) => permissions.includes(p);
|
|
12
|
-
const hasAll = (
|
|
13
|
-
// 1.
|
|
12
|
+
const hasAll = (reqs) => reqs.every(p => has(p));
|
|
13
|
+
// --- 1. DEFINIÇÃO DOS CLUSTERS (Baseado na v3.3.1) ---
|
|
14
|
+
const CLUSTERS = {
|
|
15
|
+
ACCOUNTS: ["ACCOUNTS_READ", "ACCOUNTS_BALANCES_READ", "ACCOUNTS_TRANSACTIONS_READ", "RESOURCES_READ"],
|
|
16
|
+
CREDIT_CARDS: ["CREDIT_CARDS_ACCOUNTS_READ", "CREDIT_CARDS_ACCOUNTS_BILLS_READ", "CREDIT_CARDS_ACCOUNTS_LIMITS_READ", "RESOURCES_READ"],
|
|
17
|
+
LOANS: ["LOANS_READ", "LOANS_WARRANTIES_READ", "LOANS_SCHEDULED_INSTALMENTS_READ", "LOANS_PAYMENTS_READ"],
|
|
18
|
+
FINANCINGS: ["FINANCINGS_READ", "FINANCINGS_WARRANTIES_READ", "FINANCINGS_SCHEDULED_INSTALMENTS_READ", "FINANCINGS_PAYMENTS_READ"],
|
|
19
|
+
INVOICE_FINANCINGS: ["INVOICE_FINANCINGS_READ", "INVOICE_FINANCINGS_WARRANTIES_READ", "INVOICE_FINANCINGS_SCHEDULED_INSTALMENTS_READ", "INVOICE_FINANCINGS_PAYMENTS_READ"],
|
|
20
|
+
UNARRANGED: ["UNARRANGED_ACCOUNTS_OVERDRAFT_READ", "UNARRANGED_ACCOUNTS_OVERDRAFT_WARRANTIES_READ", "UNARRANGED_ACCOUNTS_OVERDRAFT_SCHEDULED_INSTALMENTS_READ", "UNARRANGED_ACCOUNTS_OVERDRAFT_PAYMENTS_READ"]
|
|
21
|
+
};
|
|
14
22
|
const identificationPerms = [
|
|
15
23
|
"CUSTOMERS_PERSONAL_IDENTIFICATIONS_READ",
|
|
16
24
|
"CUSTOMERS_BUSINESS_IDENTIFICATIONS_READ"
|
|
17
25
|
];
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
const
|
|
21
|
-
|
|
22
|
-
|
|
26
|
+
// --- 2. VALIDAÇÃO DE PERMISSÕES FUNCIONAIS RESTANTES ---
|
|
27
|
+
// Verifica se o request tem APENAS permissões de base (identificação ou resources)
|
|
28
|
+
const functionalPrefixes = ["ACCOUNTS_", "CREDIT_CARDS_", "LOANS_", "FINANCINGS_", "UNARRANGED_", "INVOICE_", "INVESTMENTS_"];
|
|
29
|
+
const hasFunctional = permissions.some(p => functionalPrefixes.some(pre => p.startsWith(pre)));
|
|
30
|
+
if (!hasFunctional) {
|
|
31
|
+
// Se só tem Resources ou Identificação sem nada funcional
|
|
32
|
+
if (has("RESOURCES_READ") || identificationPerms.some(has)) {
|
|
33
|
+
errors.push(openFinanceErrors_1.CommonErrors.SEM_PERMISSOES_FUNCIONAIS_RESTANTES("A solicitação deve conter ao menos um grupo funcional completo (Contas, Cartões ou Crédito)."));
|
|
34
|
+
return errors; // Retorna cedo pois o resto depende de funcionalidade
|
|
35
|
+
}
|
|
23
36
|
}
|
|
24
|
-
//
|
|
37
|
+
// --- 3. VALIDAÇÃO DE COMBINAÇÃO INCORRETA (Clusters Incompletos) ---
|
|
38
|
+
// Regra PF/PJ (Não podem coexistir)
|
|
25
39
|
const hasPersonal = has("CUSTOMERS_PERSONAL_IDENTIFICATIONS_READ") || has("CUSTOMERS_PERSONAL_ADITTIONALINFO_READ");
|
|
26
40
|
const hasBusiness = has("CUSTOMERS_BUSINESS_IDENTIFICATIONS_READ") || has("CUSTOMERS_BUSINESS_ADITTIONALINFO_READ");
|
|
27
41
|
if (hasPersonal && hasBusiness) {
|
|
28
|
-
errors.push(openFinanceErrors_1.CommonErrors.COMBINACAO_PERMISSOES_INCORRETA("
|
|
42
|
+
errors.push(openFinanceErrors_1.CommonErrors.COMBINACAO_PERMISSOES_INCORRETA("PF e PJ não podem coexistir."));
|
|
29
43
|
}
|
|
30
|
-
//
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
errors.push(openFinanceErrors_1.CommonErrors.SEM_PERMISSOES_FUNCIONAIS_RESTANTES("Grupo de Contas incompleto."));
|
|
44
|
+
// Validação Cluster ACCOUNTS
|
|
45
|
+
if (permissions.some(p => p.startsWith("ACCOUNTS_")) && !hasAll(CLUSTERS.ACCOUNTS)) {
|
|
46
|
+
errors.push(openFinanceErrors_1.CommonErrors.COMBINACAO_PERMISSOES_INCORRETA("Grupo de Contas incompleto."));
|
|
34
47
|
}
|
|
35
|
-
//
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
errors.push(openFinanceErrors_1.CommonErrors.SEM_PERMISSOES_FUNCIONAIS_RESTANTES("Grupo de Cartão de Crédito incompleto."));
|
|
48
|
+
// Validação Cluster CREDIT_CARDS
|
|
49
|
+
if (permissions.some(p => p.startsWith("CREDIT_CARDS_")) && !hasAll(CLUSTERS.CREDIT_CARDS)) {
|
|
50
|
+
errors.push(openFinanceErrors_1.CommonErrors.COMBINACAO_PERMISSOES_INCORRETA("Grupo de Cartão de Crédito incompleto."));
|
|
39
51
|
}
|
|
40
|
-
//
|
|
41
|
-
const
|
|
42
|
-
const
|
|
43
|
-
if (
|
|
44
|
-
//
|
|
45
|
-
if (!has("
|
|
46
|
-
errors.push(openFinanceErrors_1.CommonErrors.COMBINACAO_PERMISSOES_INCORRETA("Operações de
|
|
52
|
+
// Validação Cluster OPERAÇÕES DE CRÉDITO (Loans, Financings, etc)
|
|
53
|
+
const creditPrefixes = ["LOANS_", "FINANCINGS_", "UNARRANGED_", "INVOICE_"];
|
|
54
|
+
const hasAnyCredit = permissions.some(p => creditPrefixes.some(pre => p.startsWith(pre)));
|
|
55
|
+
if (hasAnyCredit) {
|
|
56
|
+
// Requisito Global de Crédito: Resources + Limits
|
|
57
|
+
if (!has("RESOURCES_READ") || !has("CREDIT_OPERATIONS_LIMITS_READ")) {
|
|
58
|
+
errors.push(openFinanceErrors_1.CommonErrors.COMBINACAO_PERMISSOES_INCORRETA("Operações de crédito exigem RESOURCES_READ e CREDIT_OPERATIONS_LIMITS_READ."));
|
|
47
59
|
}
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
checkSubGroup("UNARRANGED_ACCOUNTS_OVERDRAFT_", "Adiantamento a Depositante");
|
|
58
|
-
checkSubGroup("INVOICE_FINANCINGS_", "Direitos Creditórios Descontados");
|
|
60
|
+
// Validar cada sub-bloco de crédito
|
|
61
|
+
if (permissions.some(p => p.startsWith("LOANS_")) && !hasAll(CLUSTERS.LOANS))
|
|
62
|
+
errors.push(openFinanceErrors_1.CommonErrors.COMBINACAO_PERMISSOES_INCORRETA("Subgrupo Loans incompleto."));
|
|
63
|
+
if (permissions.some(p => p.startsWith("FINANCINGS_")) && !hasAll(CLUSTERS.FINANCINGS))
|
|
64
|
+
errors.push(openFinanceErrors_1.CommonErrors.COMBINACAO_PERMISSOES_INCORRETA("Subgrupo Financings incompleto."));
|
|
65
|
+
if (permissions.some(p => p.startsWith("UNARRANGED_")) && !hasAll(CLUSTERS.UNARRANGED))
|
|
66
|
+
errors.push(openFinanceErrors_1.CommonErrors.COMBINACAO_PERMISSOES_INCORRETA("Subgrupo Unarranged incompleto."));
|
|
67
|
+
if (permissions.some(p => p.startsWith("INVOICE_")) && !hasAll(CLUSTERS.INVOICE_FINANCINGS))
|
|
68
|
+
errors.push(openFinanceErrors_1.CommonErrors.COMBINACAO_PERMISSOES_INCORRETA("Subgrupo Invoice Financings incompleto."));
|
|
59
69
|
}
|
|
60
70
|
return errors;
|
|
61
71
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"consentValidationHelpers.js","sourceRoot":"","sources":["../../../src/utils/validators/consentValidationHelpers.ts"],"names":[],"mappings":";;AAKA,
|
|
1
|
+
{"version":3,"file":"consentValidationHelpers.js","sourceRoot":"","sources":["../../../src/utils/validators/consentValidationHelpers.ts"],"names":[],"mappings":"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"}
|