opf-validator-beta 0.0.33 → 0.0.34
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,CA2D5E;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"}
|
|
@@ -8,46 +8,52 @@ const openFinanceErrors_1 = require("../openFinanceErrors");
|
|
|
8
8
|
*/
|
|
9
9
|
function validatePermissionRules(permissions) {
|
|
10
10
|
const errors = [];
|
|
11
|
-
|
|
12
|
-
const hasAll = (required) => required.every(p =>
|
|
13
|
-
//
|
|
14
|
-
const
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
errors.push(openFinanceErrors_1.CommonErrors.COMBINACAO_PERMISSOES_INCORRETA("A permissão RESOURCES_READ não pode ser informada isoladamente."));
|
|
11
|
+
const has = (p) => permissions.includes(p);
|
|
12
|
+
const hasAll = (required) => required.every(p => has(p));
|
|
13
|
+
// 1. Regra: RESOURCES_READ ou IDENTIFICATIONS isoladas
|
|
14
|
+
const identificationPerms = [
|
|
15
|
+
"CUSTOMERS_PERSONAL_IDENTIFICATIONS_READ",
|
|
16
|
+
"CUSTOMERS_BUSINESS_IDENTIFICATIONS_READ"
|
|
17
|
+
];
|
|
18
|
+
if (permissions.length === 1 && (has("RESOURCES_READ") || identificationPerms.some(has))) {
|
|
19
|
+
errors.push(openFinanceErrors_1.CommonErrors.COMBINACAO_PERMISSOES_INCORRETA("Permissões de recursos ou identificação não podem ser informadas isoladamente."));
|
|
21
20
|
}
|
|
22
21
|
// 2. Regra: PF e PJ não podem coexistir
|
|
23
|
-
const
|
|
24
|
-
const
|
|
25
|
-
if (
|
|
26
|
-
errors.push(openFinanceErrors_1.CommonErrors.
|
|
22
|
+
const hasPersonal = has("CUSTOMERS_PERSONAL_IDENTIFICATIONS_READ") || has("CUSTOMERS_PERSONAL_ADITTIONALINFO_READ");
|
|
23
|
+
const hasBusiness = has("CUSTOMERS_BUSINESS_IDENTIFICATIONS_READ") || has("CUSTOMERS_BUSINESS_ADITTIONALINFO_READ");
|
|
24
|
+
if (hasPersonal && hasBusiness) {
|
|
25
|
+
errors.push(openFinanceErrors_1.CommonErrors.COMBINACAO_PERMISSOES_INCORRETA("Permissões de clientes PF e PJ não podem ser informadas em conjunto."));
|
|
27
26
|
}
|
|
28
|
-
// 3.
|
|
29
|
-
|
|
30
|
-
if (permissions.
|
|
31
|
-
errors.push(openFinanceErrors_1.CommonErrors.COMBINACAO_PERMISSOES_INCORRETA("
|
|
27
|
+
// 3. Cluster: Contas (ACCOUNTS) - Requer 4 permissões específicas
|
|
28
|
+
const accountsCluster = ["ACCOUNTS_READ", "ACCOUNTS_BALANCES_READ", "ACCOUNTS_TRANSACTIONS_READ", "RESOURCES_READ"];
|
|
29
|
+
if (permissions.some(p => p.startsWith("ACCOUNTS_")) && !hasAll(accountsCluster)) {
|
|
30
|
+
errors.push(openFinanceErrors_1.CommonErrors.COMBINACAO_PERMISSOES_INCORRETA("Para Contas, é necessário o cluster completo: READ, BALANCES, TRANSACTIONS e RESOURCES."));
|
|
32
31
|
}
|
|
33
|
-
// 4.
|
|
32
|
+
// 4. Cluster: Cartão de Crédito (CREDIT_CARDS) - Requer 4 permissões específicas
|
|
34
33
|
const creditCardCluster = ["CREDIT_CARDS_ACCOUNTS_READ", "CREDIT_CARDS_ACCOUNTS_BILLS_READ", "CREDIT_CARDS_ACCOUNTS_LIMITS_READ", "RESOURCES_READ"];
|
|
35
|
-
if (
|
|
36
|
-
errors.push(openFinanceErrors_1.CommonErrors.COMBINACAO_PERMISSOES_INCORRETA("Para Cartão de Crédito,
|
|
37
|
-
}
|
|
38
|
-
// 5. Grupo: Contas (Cluster: ACCOUNTS_READ, ACCOUNTS_BALANCES_READ, ACCOUNTS_TRANSACTIONS_READ, RESOURCES_READ)
|
|
39
|
-
const accountsCluster = ["ACCOUNTS_READ", "ACCOUNTS_BALANCES_READ", "ACCOUNTS_TRANSACTIONS_READ", "RESOURCES_READ"];
|
|
40
|
-
if (hasAny(["ACCOUNTS_READ", "ACCOUNTS_BALANCES_READ", "ACCOUNTS_TRANSACTIONS_READ"]) && !hasAll(accountsCluster)) {
|
|
41
|
-
errors.push(openFinanceErrors_1.CommonErrors.COMBINACAO_PERMISSOES_INCORRETA("Para Contas, deve-se informar o cluster completo: READ, BALANCES, TRANSACTIONS e RESOURCES."));
|
|
34
|
+
if (permissions.some(p => p.startsWith("CREDIT_CARDS_")) && !hasAll(creditCardCluster)) {
|
|
35
|
+
errors.push(openFinanceErrors_1.CommonErrors.COMBINACAO_PERMISSOES_INCORRETA("Para Cartão de Crédito, é necessário o cluster completo: ACCOUNTS, BILLS, LIMITS e RESOURCES."));
|
|
42
36
|
}
|
|
43
|
-
//
|
|
44
|
-
// Se tiver LOANS, FINANCINGS, UNARRANGED ou INVOICE, deve ter RESOURCES_READ
|
|
37
|
+
// 5. Cluster: Operações de Crédito (O ponto onde estava dando erro no teste)
|
|
45
38
|
const creditOpsPrefixes = ["LOANS_", "FINANCINGS_", "UNARRANGED_ACCOUNTS_OVERDRAFT_", "INVOICE_FINANCINGS_"];
|
|
46
|
-
const
|
|
47
|
-
if (
|
|
48
|
-
|
|
39
|
+
const hasAnyCreditOp = permissions.some(p => creditOpsPrefixes.some(pre => p.startsWith(pre)));
|
|
40
|
+
if (hasAnyCreditOp) {
|
|
41
|
+
// Regra A: Se houver qualquer operação de crédito, CREDIT_OPERATIONS_LIMITS_READ é obrigatória
|
|
42
|
+
if (!has("CREDIT_OPERATIONS_LIMITS_READ") || !has("RESOURCES_READ")) {
|
|
43
|
+
errors.push(openFinanceErrors_1.CommonErrors.COMBINACAO_PERMISSOES_INCORRETA("Operações de Crédito exigem RESOURCES_READ e CREDIT_OPERATIONS_LIMITS_READ."));
|
|
44
|
+
}
|
|
45
|
+
// Regra B: Cada subgrupo deve estar completo (READ, WARRANTIES, SCHEDULED, PAYMENTS)
|
|
46
|
+
const checkSubGroup = (prefix, label) => {
|
|
47
|
+
const subGroup = [`${prefix}READ`, `${prefix}WARRANTIES_READ`, `${prefix}SCHEDULED_INSTALMENTS_READ`, `${prefix}PAYMENTS_READ`];
|
|
48
|
+
if (permissions.some(p => p.startsWith(prefix)) && !subGroup.every(p => has(p))) {
|
|
49
|
+
errors.push(openFinanceErrors_1.CommonErrors.COMBINACAO_PERMISSOES_INCORRETA(`O grupo de ${label} está incompleto.`));
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
checkSubGroup("LOANS_", "Empréstimos");
|
|
53
|
+
checkSubGroup("FINANCINGS_", "Financiamentos");
|
|
54
|
+
checkSubGroup("UNARRANGED_ACCOUNTS_OVERDRAFT_", "Adiantamento a Depositante");
|
|
55
|
+
checkSubGroup("INVOICE_FINANCINGS_", "Direitos Creditórios Descontados");
|
|
49
56
|
}
|
|
50
|
-
console.log(errors);
|
|
51
57
|
return errors;
|
|
52
58
|
}
|
|
53
59
|
/**
|
|
@@ -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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"}
|