Compare commits

...

17 Commits

Author SHA1 Message Date
Daniel
b22915b6e7 . 2023-02-17 17:42:53 +01:00
Daniel
6fb46a0ad7 Merge branch 'main' into addCustomRules 2023-02-17 17:42:09 +01:00
Daniel Hutzel
6ee42326a7 Merge branch 'main' into addCustomRules 2023-02-17 17:37:28 +01:00
Mara Kiefer
e790d89065 Updated package-lock 2022-12-01 14:59:36 +01:00
Mara Kiefer
94dd9620e4 Merge branch 'main' into addCustomRules 2022-12-01 14:45:09 +01:00
Mara Kiefer
1672c8d914 Merge branch 'addCustomRules' of https://github.com/SAP-samples/cloud-cap-samples into addCustomRules 2022-10-18 14:37:14 +02:00
Mara Kiefer
0132241c43 Updated package-lock 2022-10-18 14:37:02 +02:00
Mara Kiefer
d1619cfa4d Update settings.json 2022-10-18 14:24:12 +02:00
Mara Kiefer
f844a39069 Updated package-lock.json 2022-10-18 14:11:15 +02:00
Mara Kiefer
b60e02bb22 Merge branch 'main' into addCustomRules 2022-10-18 14:04:46 +02:00
Mara Kiefer
07ffdedace Return on unprotected services 2022-09-20 13:27:26 +02:00
Mara Kiefer
3554674d8e Cosmetics 2022-09-16 11:57:57 +02:00
Mara Kiefer
45e9c132a9 Fix indentation 2022-09-16 11:56:35 +02:00
Mara Kiefer
e9a81ad2a8 Updated packages 2022-09-16 11:54:48 +02:00
Mara Kiefer
2389924403 Updated rule 2022-09-16 11:08:10 +02:00
Mara Jochum
b733f8333c Updated packages 2022-09-15 17:32:12 +02:00
Mara Jochum
4fa96203cb Added sample cds rule 2022-09-15 16:54:56 +02:00
7 changed files with 917 additions and 12 deletions

15
.eslint/index.js Normal file
View File

@@ -0,0 +1,15 @@
const cds = require("@sap/eslint-plugin-cds");
module.exports = {
configs: {
recommended: {
plugins: ["cloud-cap-samples"],
rules: {
"cloud-cap-samples/no-open-services": ["error", "show"]
}
}
},
rules: {
"no-open-services": cds.createRule(require("./rules/no-open-services")),
}
};

5
.eslint/package.json Normal file
View File

@@ -0,0 +1,5 @@
{
"name": "eslint-plugin-cloud-cap-samples",
"description": "Contains shareable custom lint rules for this repository",
"version": "1.0.0"
}

View File

@@ -0,0 +1,29 @@
module.exports = {
meta: {
docs: {
description: "Service without `@requires/restrict` should not expose fields with personal data.",
version: "1.0.0"
},
fixable: "code",
model: "inferred"
},
create: function (context) {
const services = context.getModel() ? context.getModel().services : [];
const unprotectedServices = services.filter(s => !s["@requires"] && !s["@restrict"]).map(s => s.name)
return { entity: checkForExposedFields };
function checkForExposedFields(entity) {
const entityInUnprotectedService = unprotectedServices.some(service => entity.name.includes(service))
if (entityInUnprotectedService) {
const elements = Object.keys(entity.elements).filter((name) => ["createdBy", "modifiedBy"].includes(name))
for (let element of elements) {
context.report({
message: `Field '${element}' in '${entity.name}' exposes personal data. Remove field or add \`@restrict/requires\`.`,
node: context.getNode(entity),
file: entity.$location.file
})
}
}
}
}
}

View File

@@ -1,7 +1,11 @@
{
"extends": [
"eslint:recommended",
"plugin:@sap/cds/recommended"
"plugin:@sap/cds/recommended",
"plugin:cloud-cap-samples/recommended"
],
"plugins": [
"cloud-cap-samples"
],
"env": {
"browser": true,
@@ -23,7 +27,7 @@
"rules": {
"no-console": "off",
"require-atomic-updates": "off",
"require-await":"warn",
"require-await": "warn",
"no-unused-vars": ["warn", { "argsIgnorePattern": "_" }]
}
}

View File

@@ -24,4 +24,4 @@
"tsv",
"tab"
],
}
}

865
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -24,8 +24,11 @@
"chai": "^4.3.4",
"chai-as-promised": "^7.1.1",
"chai-subset": "^1.6.0",
"eslint": "^8.9",
"semver": "^7",
"sqlite3": "^5"
"sqlite3": "^5",
"@sap/eslint-plugin-cds": "^2.6.0",
"eslint-plugin-cloud-cap-samples": "file:.eslint"
},
"scripts": {
"cleanup": "rm -rf node_modules && rm -rf */node_modules && rm -rf */*/node_modules",