From 8862fd3660b8f42f94e504f2c9b1c58f4cb17b09 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 1 Sep 2025 13:16:10 -0400 Subject: [PATCH] Update Frameworks Overview and Database Seed for GDPR Compliance (#1447) - Added support for GDPR badge in FrameworksOverview component. - Introduced new GDPR framework and requirements in the database seed files. - Updated task templates to include GDPR-related tasks for compliance. This update enhances the application's compliance features and improves user interface elements related to GDPR. Co-authored-by: Mariano Fuentes --- .../components/FrameworksOverview.tsx | 4 + bun.lock | 30 +++-- .../FrameworkEditorControlTemplate.json | 14 +++ .../primitives/FrameworkEditorFramework.json | 18 +-- .../FrameworkEditorRequirement.json | 18 +++ .../FrameworkEditorTaskTemplate.json | 108 ++++++++++++++++++ ...lTemplateToFrameworkEditorRequirement.json | 8 ++ ...TemplateToFrameworkEditorTaskTemplate.json | 48 ++++++++ 8 files changed, 229 insertions(+), 19 deletions(-) diff --git a/apps/app/src/app/(app)/[orgId]/frameworks/components/FrameworksOverview.tsx b/apps/app/src/app/(app)/[orgId]/frameworks/components/FrameworksOverview.tsx index 515ef14c2..184deb60c 100644 --- a/apps/app/src/app/(app)/[orgId]/frameworks/components/FrameworksOverview.tsx +++ b/apps/app/src/app/(app)/[orgId]/frameworks/components/FrameworksOverview.tsx @@ -32,6 +32,10 @@ export function mapFrameworkToBadge(framework: FrameworkInstanceWithControls) { return '/badges/hipaa.svg'; } + if (framework.framework.name === 'GDPR') { + return '/badges/gdpr.svg'; + } + return null; } diff --git a/bun.lock b/bun.lock index a5cb1cf90..e458d2543 100644 --- a/bun.lock +++ b/bun.lock @@ -210,7 +210,7 @@ "@vitejs/plugin-react": "^4.6.0", "@vitest/ui": "^3.2.4", "eslint": "^9.18.0", - "eslint-config-next": "15.4.2-canary.16", + "eslint-config-next": "15.5.2", "fleetctl": "^4.68.1", "glob": "^11.0.3", "jsdom": "^26.1.0", @@ -262,7 +262,7 @@ "@types/archiver": "^6.0.3", "@types/node": "^24.0.3", "eslint": "^9.18.0", - "eslint-config-next": "15.4.2-canary.16", + "eslint-config-next": "15.5.2", "postcss": "^8.5.4", "tailwindcss": "^4.1.8", "typescript": "^5.8.3", @@ -364,7 +364,7 @@ "@radix-ui/react-icons": "^1.3.0", "@radix-ui/react-label": "2.1.7", "@radix-ui/react-navigation-menu": "1.2.13", - "@radix-ui/react-popover": "1.1.14", + "@radix-ui/react-popover": "1.1.15", "@radix-ui/react-progress": "1.1.7", "@radix-ui/react-radio-group": "1.3.7", "@radix-ui/react-scroll-area": "1.2.9", @@ -405,7 +405,7 @@ "clsx": "^2.1.1", "cmdk": "1.0.4", "date-fns": "^4.1.0", - "embla-carousel-react": "8.5.1", + "embla-carousel-react": "8.6.0", "input-otp": "1.4.2", "jsonfile": "^6.1.0", "lucide-react": "^0.534.0", @@ -1059,7 +1059,7 @@ "@next/env": ["@next/env@15.4.7", "", {}, "sha512-PrBIpO8oljZGTOe9HH0miix1w5MUiGJ/q83Jge03mHEE0E3pyqzAy2+l5G6aJDbXoobmxPJTVhbCuwlLtjSHwg=="], - "@next/eslint-plugin-next": ["@next/eslint-plugin-next@15.4.2-canary.16", "", { "dependencies": { "fast-glob": "3.3.1" } }, "sha512-Y7Iusyriwn2hWD1ruJRvZK+hm9UVITjxr6JNEzOtrvJ5uOwDELjJtiU54VeiC4gldAYdbl1deEhdrBZ7aTfHHg=="], + "@next/eslint-plugin-next": ["@next/eslint-plugin-next@15.5.2", "", { "dependencies": { "fast-glob": "3.3.1" } }, "sha512-lkLrRVxcftuOsJNhWatf1P2hNVfh98k/omQHrCEPPriUypR6RcS13IvLdIrEvkm9AH2Nu2YpR5vLqBuy6twH3Q=="], "@next/swc-darwin-arm64": ["@next/swc-darwin-arm64@15.4.7", "", { "os": "darwin", "cpu": "arm64" }, "sha512-2Dkb+VUTp9kHHkSqtws4fDl2Oxms29HcZBwFIda1X7Ztudzy7M6XF9HDS2dq85TmdN47VpuhjE+i6wgnIboVzQ=="], @@ -1301,7 +1301,7 @@ "@radix-ui/react-navigation-menu": ["@radix-ui/react-navigation-menu@1.2.13", "", { "dependencies": { "@radix-ui/primitive": "1.1.2", "@radix-ui/react-collection": "1.1.7", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-direction": "1.1.1", "@radix-ui/react-dismissable-layer": "1.1.10", "@radix-ui/react-id": "1.1.1", "@radix-ui/react-presence": "1.1.4", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-callback-ref": "1.1.1", "@radix-ui/react-use-controllable-state": "1.2.2", "@radix-ui/react-use-layout-effect": "1.1.1", "@radix-ui/react-use-previous": "1.1.1", "@radix-ui/react-visually-hidden": "1.2.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-WG8wWfDiJlSF5hELjwfjSGOXcBR/ZMhBFCGYe8vERpC39CQYZeq1PQ2kaYHdye3V95d06H89KGMsVCIE4LWo3g=="], - "@radix-ui/react-popover": ["@radix-ui/react-popover@1.1.14", "", { "dependencies": { "@radix-ui/primitive": "1.1.2", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-dismissable-layer": "1.1.10", "@radix-ui/react-focus-guards": "1.1.2", "@radix-ui/react-focus-scope": "1.1.7", "@radix-ui/react-id": "1.1.1", "@radix-ui/react-popper": "1.2.7", "@radix-ui/react-portal": "1.1.9", "@radix-ui/react-presence": "1.1.4", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-slot": "1.2.3", "@radix-ui/react-use-controllable-state": "1.2.2", "aria-hidden": "^1.2.4", "react-remove-scroll": "^2.6.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-ODz16+1iIbGUfFEfKx2HTPKizg2MN39uIOV8MXeHnmdd3i/N9Wt7vU46wbHsqA0xoaQyXVcs0KIlBdOA2Y95bw=="], + "@radix-ui/react-popover": ["@radix-ui/react-popover@1.1.15", "", { "dependencies": { "@radix-ui/primitive": "1.1.3", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-dismissable-layer": "1.1.11", "@radix-ui/react-focus-guards": "1.1.3", "@radix-ui/react-focus-scope": "1.1.7", "@radix-ui/react-id": "1.1.1", "@radix-ui/react-popper": "1.2.8", "@radix-ui/react-portal": "1.1.9", "@radix-ui/react-presence": "1.1.5", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-slot": "1.2.3", "@radix-ui/react-use-controllable-state": "1.2.2", "aria-hidden": "^1.2.4", "react-remove-scroll": "^2.6.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-kr0X2+6Yy/vJzLYJUPCZEc8SfQcf+1COFoAqauJm74umQhta9M7lNJHP7QQS3vkvcGLQUbWpMzwrXYwrYztHKA=="], "@radix-ui/react-popper": ["@radix-ui/react-popper@1.2.7", "", { "dependencies": { "@floating-ui/react-dom": "^2.0.0", "@radix-ui/react-arrow": "1.1.7", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-callback-ref": "1.1.1", "@radix-ui/react-use-layout-effect": "1.1.1", "@radix-ui/react-use-rect": "1.1.1", "@radix-ui/react-use-size": "1.1.1", "@radix-ui/rect": "1.1.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-IUFAccz1JyKcf/RjB552PlWwxjeCJB8/4KxT7EhBHOJM+mN7LdW+B3kacJXILm32xawcMMjb2i0cIZpo+f9kiQ=="], @@ -2773,11 +2773,11 @@ "electron-to-chromium": ["electron-to-chromium@1.5.207", "", {}, "sha512-mryFrrL/GXDTmAtIVMVf+eIXM09BBPlO5IQ7lUyKmK8d+A4VpRGG+M3ofoVef6qyF8s60rJei8ymlJxjUA8Faw=="], - "embla-carousel": ["embla-carousel@8.5.1", "", {}, "sha512-JUb5+FOHobSiWQ2EJNaueCNT/cQU9L6XWBbWmorWPQT9bkbk+fhsuLr8wWrzXKagO3oWszBO7MSx+GfaRk4E6A=="], + "embla-carousel": ["embla-carousel@8.6.0", "", {}, "sha512-SjWyZBHJPbqxHOzckOfo8lHisEaJWmwd23XppYFYVh10bU66/Pn5tkVkbkCMZVdbUE5eTCI2nD8OyIP4Z+uwkA=="], - "embla-carousel-react": ["embla-carousel-react@8.5.1", "", { "dependencies": { "embla-carousel": "8.5.1", "embla-carousel-reactive-utils": "8.5.1" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.1 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" } }, "sha512-z9Y0K84BJvhChXgqn2CFYbfEi6AwEr+FFVVKm/MqbTQ2zIzO1VQri6w67LcfpVF0AjbhwVMywDZqY4alYkjW5w=="], + "embla-carousel-react": ["embla-carousel-react@8.6.0", "", { "dependencies": { "embla-carousel": "8.6.0", "embla-carousel-reactive-utils": "8.6.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.1 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" } }, "sha512-0/PjqU7geVmo6F734pmPqpyHqiM99olvyecY7zdweCw+6tKEXnrE90pBiBbMMU8s5tICemzpQ3hi5EpxzGW+JA=="], - "embla-carousel-reactive-utils": ["embla-carousel-reactive-utils@8.5.1", "", { "peerDependencies": { "embla-carousel": "8.5.1" } }, "sha512-n7VSoGIiiDIc4MfXF3ZRTO59KDp820QDuyBDGlt5/65+lumPHxX2JLz0EZ23hZ4eg4vZGUXwMkYv02fw2JVo/A=="], + "embla-carousel-reactive-utils": ["embla-carousel-reactive-utils@8.6.0", "", { "peerDependencies": { "embla-carousel": "8.6.0" } }, "sha512-fMVUDUEx0/uIEDM0Mz3dHznDhfX+znCCDCeIophYb1QGVM7YThSWX+wz11zlYwWFOr74b4QLGg0hrGPJeG2s4A=="], "emittery": ["emittery@0.13.1", "", {}, "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ=="], @@ -2847,7 +2847,7 @@ "eslint": ["eslint@9.33.0", "", { "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.12.1", "@eslint/config-array": "^0.21.0", "@eslint/config-helpers": "^0.3.1", "@eslint/core": "^0.15.2", "@eslint/eslintrc": "^3.3.1", "@eslint/js": "9.33.0", "@eslint/plugin-kit": "^0.3.5", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/retry": "^0.4.2", "@types/estree": "^1.0.6", "@types/json-schema": "^7.0.15", "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.6", "debug": "^4.3.2", "escape-string-regexp": "^4.0.0", "eslint-scope": "^8.4.0", "eslint-visitor-keys": "^4.2.1", "espree": "^10.4.0", "esquery": "^1.5.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^8.0.0", "find-up": "^5.0.0", "glob-parent": "^6.0.2", "ignore": "^5.2.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", "json-stable-stringify-without-jsonify": "^1.0.1", "lodash.merge": "^4.6.2", "minimatch": "^3.1.2", "natural-compare": "^1.4.0", "optionator": "^0.9.3" }, "peerDependencies": { "jiti": "*" }, "optionalPeers": ["jiti"], "bin": { "eslint": "bin/eslint.js" } }, "sha512-TS9bTNIryDzStCpJN93aC5VRSW3uTx9sClUn4B87pwiCaJh220otoI0X8mJKr+VcPtniMdN8GKjlwgWGUv5ZKA=="], - "eslint-config-next": ["eslint-config-next@15.4.2-canary.16", "", { "dependencies": { "@next/eslint-plugin-next": "15.4.2-canary.16", "@rushstack/eslint-patch": "^1.10.3", "@typescript-eslint/eslint-plugin": "^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0", "@typescript-eslint/parser": "^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0", "eslint-import-resolver-node": "^0.3.6", "eslint-import-resolver-typescript": "^3.5.2", "eslint-plugin-import": "^2.31.0", "eslint-plugin-jsx-a11y": "^6.10.0", "eslint-plugin-react": "^7.37.0", "eslint-plugin-react-hooks": "^5.0.0" }, "peerDependencies": { "eslint": "^7.23.0 || ^8.0.0 || ^9.0.0", "typescript": ">=3.3.1" }, "optionalPeers": ["typescript"] }, "sha512-Dv8OXIHnNFK1z13IvgbBpXdtOIjvilNVABFnau7NlaCdUFmKH/CQmmGL/ZQ4igDJz03hD7PkIZvvWicvak6K7w=="], + "eslint-config-next": ["eslint-config-next@15.5.2", "", { "dependencies": { "@next/eslint-plugin-next": "15.5.2", "@rushstack/eslint-patch": "^1.10.3", "@typescript-eslint/eslint-plugin": "^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0", "@typescript-eslint/parser": "^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0", "eslint-import-resolver-node": "^0.3.6", "eslint-import-resolver-typescript": "^3.5.2", "eslint-plugin-import": "^2.31.0", "eslint-plugin-jsx-a11y": "^6.10.0", "eslint-plugin-react": "^7.37.0", "eslint-plugin-react-hooks": "^5.0.0" }, "peerDependencies": { "eslint": "^7.23.0 || ^8.0.0 || ^9.0.0", "typescript": ">=3.3.1" }, "optionalPeers": ["typescript"] }, "sha512-3hPZghsLupMxxZ2ggjIIrat/bPniM2yRpsVPVM40rp8ZMzKWOJp2CGWn7+EzoV2ddkUr5fxNfHpF+wU1hGt/3g=="], "eslint-config-prettier": ["eslint-config-prettier@10.1.8", "", { "peerDependencies": { "eslint": ">=7.0.0" }, "bin": { "eslint-config-prettier": "bin/cli.js" } }, "sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w=="], @@ -5109,6 +5109,16 @@ "@prisma/get-platform/@prisma/debug": ["@prisma/debug@6.14.0", "", {}, "sha512-j4Lf+y+5QIJgQD4sJWSbkOD7geKx9CakaLp/TyTy/UDu9Wo0awvWCBH/BAxTHUaCpIl9USA5VS/KJhDqKJSwug=="], + "@radix-ui/react-popover/@radix-ui/primitive": ["@radix-ui/primitive@1.1.3", "", {}, "sha512-JTF99U/6XIjCBo0wqkU5sK10glYe27MRRsfwoiq5zzOEZLHU3A3KCMa5X/azekYRCJ0HlwI0crAXS/5dEHTzDg=="], + + "@radix-ui/react-popover/@radix-ui/react-dismissable-layer": ["@radix-ui/react-dismissable-layer@1.1.11", "", { "dependencies": { "@radix-ui/primitive": "1.1.3", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-callback-ref": "1.1.1", "@radix-ui/react-use-escape-keydown": "1.1.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-Nqcp+t5cTB8BinFkZgXiMJniQH0PsUt2k51FUhbdfeKvc4ACcG2uQniY/8+h1Yv6Kza4Q7lD7PQV0z0oicE0Mg=="], + + "@radix-ui/react-popover/@radix-ui/react-focus-guards": ["@radix-ui/react-focus-guards@1.1.3", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-0rFg/Rj2Q62NCm62jZw0QX7a3sz6QCQU0LpZdNrJX8byRGaGVTqbrW9jAoIAHyMQqsNpeZ81YgSizOt5WXq0Pw=="], + + "@radix-ui/react-popover/@radix-ui/react-popper": ["@radix-ui/react-popper@1.2.8", "", { "dependencies": { "@floating-ui/react-dom": "^2.0.0", "@radix-ui/react-arrow": "1.1.7", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-callback-ref": "1.1.1", "@radix-ui/react-use-layout-effect": "1.1.1", "@radix-ui/react-use-rect": "1.1.1", "@radix-ui/react-use-size": "1.1.1", "@radix-ui/rect": "1.1.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-0NJQ4LFFUuWkE7Oxf0htBKS6zLkkjBH+hM1uk7Ng705ReR8m/uelduy1DBo0PyBXPKVnBA6YBlU94MBGXrSBCw=="], + + "@radix-ui/react-popover/@radix-ui/react-presence": ["@radix-ui/react-presence@1.1.5", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-use-layout-effect": "1.1.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-/jfEwNDdQVBCNvjkGit4h6pMOzq8bHkopq458dPt2lMjx+eBQUohZNG9A7DtO/O5ukSbxuaNGXMjHicgwy6rQQ=="], + "@react-email/components/@react-email/render": ["@react-email/render@1.1.2", "", { "dependencies": { "html-to-text": "^9.0.5", "prettier": "^3.5.3", "react-promise-suspense": "^0.3.4" }, "peerDependencies": { "react": "^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^18.0 || ^19.0 || ^19.0.0-rc" } }, "sha512-RnRehYN3v9gVlNMehHPHhyp2RQo7+pSkHDtXPvg3s0GbzM9SQMW4Qrf8GRNvtpLC4gsI+Wt0VatNRUFqjvevbw=="], "@react-three/postprocessing/maath": ["maath@0.6.0", "", { "peerDependencies": { "@types/three": ">=0.144.0", "three": ">=0.144.0" } }, "sha512-dSb2xQuP7vDnaYqfoKzlApeRcR2xtN8/f7WV/TMAkBC8552TwTLtOO0JTcSygkYMjNDPoo6V01jTw/aPi4JrMw=="], diff --git a/packages/db/prisma/seed/primitives/FrameworkEditorControlTemplate.json b/packages/db/prisma/seed/primitives/FrameworkEditorControlTemplate.json index fc2d92ceb..47a58a94d 100644 --- a/packages/db/prisma/seed/primitives/FrameworkEditorControlTemplate.json +++ b/packages/db/prisma/seed/primitives/FrameworkEditorControlTemplate.json @@ -292,5 +292,19 @@ "description": "Hide sensitive fields", "createdAt": "2025-06-11 17:56:19.307", "updatedAt": "2025-06-11 17:56:19.307" + }, + { + "id": "frk_ct_68b59a16b172e5c360e57536", + "name": "GDPR", + "description": "GDPR Controls", + "createdAt": "2025-09-01 13:05:26.037", + "updatedAt": "2025-09-01 13:05:26.037" + }, + { + "id": "frk_ct_68b59e50eeb9f92ce425327c", + "name": "ISO", + "description": "ISO Controls", + "createdAt": "2025-09-01 13:23:28.289", + "updatedAt": "2025-09-01 13:23:28.289" } ] \ No newline at end of file diff --git a/packages/db/prisma/seed/primitives/FrameworkEditorFramework.json b/packages/db/prisma/seed/primitives/FrameworkEditorFramework.json index 1e28fac46..696d5e49d 100644 --- a/packages/db/prisma/seed/primitives/FrameworkEditorFramework.json +++ b/packages/db/prisma/seed/primitives/FrameworkEditorFramework.json @@ -8,15 +8,6 @@ "updatedAt": "2025-05-14 19:20:44.920", "visible": false }, - { - "id": "frk_681ef1952907deb7cb85896d", - "name": "GDPR", - "description": "GDPR", - "version": "1.0.0", - "createdAt": "2025-05-14 19:20:44.920", - "updatedAt": "2025-05-14 19:20:44.920", - "visible": false - }, { "id": "frk_6820090a1653380dd386c5eb", "name": "NIST CSF", @@ -97,5 +88,14 @@ "createdAt": "2025-05-14 19:20:44.920", "updatedAt": "2025-07-29 01:20:39.551", "visible": true + }, + { + "id": "frk_681ef1952907deb7cb85896d", + "name": "GDPR", + "description": "GDPR", + "version": "1.0.0", + "createdAt": "2025-05-14 19:20:44.920", + "updatedAt": "2025-09-01 16:51:38.334", + "visible": true } ] \ No newline at end of file diff --git a/packages/db/prisma/seed/primitives/FrameworkEditorRequirement.json b/packages/db/prisma/seed/primitives/FrameworkEditorRequirement.json index 7ead354ea..9d69372ed 100644 --- a/packages/db/prisma/seed/primitives/FrameworkEditorRequirement.json +++ b/packages/db/prisma/seed/primitives/FrameworkEditorRequirement.json @@ -7819,5 +7819,23 @@ "identifier": "P2.1", "createdAt": "2025-06-03 23:18:27.903", "updatedAt": "2025-06-04 21:34:40.204" + }, + { + "id": "frk_rq_68b59a381860dff55c1ab1aa", + "frameworkId": "frk_681ef1952907deb7cb85896d", + "name": "GDPR Requirement", + "description": "Everything related to GDPR", + "identifier": "1", + "createdAt": "2025-09-01 13:06:00.288", + "updatedAt": "2025-09-01 13:06:00.288" + }, + { + "id": "frk_rq_68b59f4c9739efdb63dd807e", + "frameworkId": "frk_681ecc34e85064efdbb76993", + "name": "ISO Requirement", + "description": "Everything ISO", + "identifier": "1", + "createdAt": "2025-09-01 13:27:39.721", + "updatedAt": "2025-09-01 13:27:39.721" } ] \ No newline at end of file diff --git a/packages/db/prisma/seed/primitives/FrameworkEditorTaskTemplate.json b/packages/db/prisma/seed/primitives/FrameworkEditorTaskTemplate.json index 0d5f40082..e98f6867c 100644 --- a/packages/db/prisma/seed/primitives/FrameworkEditorTaskTemplate.json +++ b/packages/db/prisma/seed/primitives/FrameworkEditorTaskTemplate.json @@ -187,5 +187,113 @@ "department": "it", "createdAt": "2025-07-07 04:46:43.319", "updatedAt": "2025-07-07 04:46:43.319" + }, + { + "id": "frk_tt_68b59e7a29bec89c57014868", + "name": "Statement of Applicability", + "description": "Statement of Applicability", + "frequency": "yearly", + "department": "admin", + "createdAt": "2025-09-01 13:24:09.841", + "updatedAt": "2025-09-01 13:24:09.841" + }, + { + "id": "frk_tt_68b59fd5e41ed4c1d69161d6", + "name": "Records of Processing Activities", + "description": "In compliance with GDPR Article 30, ensure that controllers (and processors, where applicable) maintain up-to-date records of processing activities. These records must include:\n\n\n- The purposes of processing\n- Categories of data subjects and personal data\n- Categories of recipients (including third parties and international transfers)\n- Applicable retention periods\n- A description of security measures in place\nThis record should be documented in a structured format (e.g., register, inventory, or compliance tool) and kept readily available as evidence of compliance.", + "frequency": "yearly", + "department": "admin", + "createdAt": "2025-09-01 13:29:57.324", + "updatedAt": "2025-09-01 16:41:42.592" + }, + { + "id": "frk_tt_68b5cd3678e4245e4867f07c", + "name": "Conduct Data Protection Impact Assessments", + "description": "For any processing activity that is likely to result in high risk to individuals (e.g., large-scale profiling, sensitive data processing, or new technologies), conduct a documented Data Protection Impact Assessment (DPIA). The DPIA must identify risks, assess their severity, and define mitigation measures.", + "frequency": "yearly", + "department": "it", + "createdAt": "2025-09-01 16:43:34.345", + "updatedAt": "2025-09-01 16:43:34.345" + }, + { + "id": "frk_tt_68b5ce9b5393ae083c3beadf", + "name": "Appoint or Review Data Protection Officer", + "description": "Assess whether your organization is required to appoint a Data Protection Officer (DPO) under GDPR (e.g., large-scale monitoring or sensitive data processing). If required, formally appoint a qualified DPO and document their role, responsibilities, and reporting line. Review the necessity of the DPO role if your processing scope or risk profile changes.", + "frequency": "yearly", + "department": "admin", + "createdAt": "2025-09-01 16:49:31.380", + "updatedAt": "2025-09-01 16:49:31.380" + }, + { + "id": "frk_tt_68b5ce9c64f9e3b7410008d7", + "name": "Update Privacy Notices & Policies", + "description": "Maintain clear, transparent, and GDPR-compliant privacy notices and policies. Ensure they include lawful bases for processing, data subject rights, categories of data collected, and how data is used, shared, and retained. Update notices promptly when practices change.", + "frequency": "yearly", + "department": "admin", + "createdAt": "2025-09-01 16:49:31.632", + "updatedAt": "2025-09-01 16:49:31.632" + }, + { + "id": "frk_tt_68b5ce9c5029f2a7ec6f4145", + "name": "Perform Security Reviews & Audits", + "description": "Conduct regular reviews of technical and organizational security measures to ensure they remain effective and aligned with GDPR’s accountability principle. Document findings, remediation actions, and audit results", + "frequency": "yearly", + "department": "it", + "createdAt": "2025-09-01 16:49:31.916", + "updatedAt": "2025-09-01 16:49:31.916" + }, + { + "id": "frk_tt_68b5ce9c979a280311c11af1", + "name": "Map and Review Data Flow & Inventory", + "description": "Maintain an up-to-date data inventory and data flow map that identifies what personal data is collected, how it is processed, where it is stored, retention periods, and its lifecycle. Update records when systems, vendors, or processing activities change.", + "frequency": "yearly", + "department": "admin", + "createdAt": "2025-09-01 16:49:32.093", + "updatedAt": "2025-09-01 16:49:32.093" + }, + { + "id": "frk_tt_68b5ce9c6c1bdb171870f623", + "name": "Manage Third-party and EU Representative Relationships", + "description": "Ensure all third-party processors have GDPR-compliant Data Processing Agreements (DPAs) in place. If your organization is outside the EU but processes EU personal data, appoint an EU Representative and document the arrangement. Review contracts and representative status regularly.", + "frequency": "yearly", + "department": "admin", + "createdAt": "2025-09-01 16:49:32.236", + "updatedAt": "2025-09-01 16:49:32.236" + }, + { + "id": "frk_tt_68b5ce9cba8271d8feaf0805", + "name": "Handle Data Subject Rights Requests", + "description": "Implement and document procedures to handle data subject rights requests (e.g., access, rectification, erasure, objection, portability). Maintain logs of requests, response times, and outcomes to demonstrate compliance.", + "frequency": "quarterly", + "department": "admin", + "createdAt": "2025-09-01 16:49:32.365", + "updatedAt": "2025-09-01 16:49:32.365" + }, + { + "id": "frk_tt_68b5ce9c0a99e71cfa722917", + "name": "Maintain a Breach Response Plan & Train Staff", + "description": "Maintain a documented data breach response plan that includes detection, escalation, notification (within 72 hours), and remediation procedures. Train staff regularly on breach awareness and reporting obligations.", + "frequency": "yearly", + "department": "admin", + "createdAt": "2025-09-01 16:49:32.494", + "updatedAt": "2025-09-01 16:49:32.494" + }, + { + "id": "frk_tt_68b5ce9dd597ac7d650e4915", + "name": "Reassess Legal Basis for Processing", + "description": "Review and document the lawful basis for each processing activity under GDPR Article 6 (e.g., consent, contract, legal obligation, legitimate interest). Ensure justifications are clear, up to date, and communicated in privacy notices.", + "frequency": "yearly", + "department": "admin", + "createdAt": "2025-09-01 16:49:32.603", + "updatedAt": "2025-09-01 16:49:32.603" + }, + { + "id": "frk_tt_68b5ce9d508cacf8e4517b56", + "name": "Review International Data Transfers", + "description": "Review and document all international data transfers to ensure compliance with GDPR Chapter V. Confirm adequacy decisions, Standard Contractual Clauses (SCCs), or other safeguards are in place. Update documentation when new transfers are added or existing ones change.", + "frequency": "yearly", + "department": "admin", + "createdAt": "2025-09-01 16:49:32.719", + "updatedAt": "2025-09-01 16:49:32.719" } ] \ No newline at end of file diff --git a/packages/db/prisma/seed/relations/_FrameworkEditorControlTemplateToFrameworkEditorRequirement.json b/packages/db/prisma/seed/relations/_FrameworkEditorControlTemplateToFrameworkEditorRequirement.json index be21d7f23..9ee525441 100644 --- a/packages/db/prisma/seed/relations/_FrameworkEditorControlTemplateToFrameworkEditorRequirement.json +++ b/packages/db/prisma/seed/relations/_FrameworkEditorControlTemplateToFrameworkEditorRequirement.json @@ -822,5 +822,13 @@ { "A": "frk_ct_68407429371f33886d8ab80d", "B": "frk_rq_683f76a572050393764a447d" + }, + { + "A": "frk_ct_68b59a16b172e5c360e57536", + "B": "frk_rq_68b59a381860dff55c1ab1aa" + }, + { + "A": "frk_ct_68b59e50eeb9f92ce425327c", + "B": "frk_rq_68b59f4c9739efdb63dd807e" } ] \ No newline at end of file diff --git a/packages/db/prisma/seed/relations/_FrameworkEditorControlTemplateToFrameworkEditorTaskTemplate.json b/packages/db/prisma/seed/relations/_FrameworkEditorControlTemplateToFrameworkEditorTaskTemplate.json index 3ac51c365..b6c6a4da8 100644 --- a/packages/db/prisma/seed/relations/_FrameworkEditorControlTemplateToFrameworkEditorTaskTemplate.json +++ b/packages/db/prisma/seed/relations/_FrameworkEditorControlTemplateToFrameworkEditorTaskTemplate.json @@ -82,5 +82,53 @@ { "A": "frk_ct_6849ba93636ff0155eb89158", "B": "frk_tt_6849c1a1038c3f18cfff47bf" + }, + { + "A": "frk_ct_68b59e50eeb9f92ce425327c", + "B": "frk_tt_68b59e7a29bec89c57014868" + }, + { + "A": "frk_ct_68b59a16b172e5c360e57536", + "B": "frk_tt_68b59fd5e41ed4c1d69161d6" + }, + { + "A": "frk_ct_68b59a16b172e5c360e57536", + "B": "frk_tt_68b5cd3678e4245e4867f07c" + }, + { + "A": "frk_ct_68b59a16b172e5c360e57536", + "B": "frk_tt_68b5ce9b5393ae083c3beadf" + }, + { + "A": "frk_ct_68b59a16b172e5c360e57536", + "B": "frk_tt_68b5ce9d508cacf8e4517b56" + }, + { + "A": "frk_ct_68b59a16b172e5c360e57536", + "B": "frk_tt_68b5ce9dd597ac7d650e4915" + }, + { + "A": "frk_ct_68b59a16b172e5c360e57536", + "B": "frk_tt_68b5ce9c0a99e71cfa722917" + }, + { + "A": "frk_ct_68b59a16b172e5c360e57536", + "B": "frk_tt_68b5ce9cba8271d8feaf0805" + }, + { + "A": "frk_ct_68b59a16b172e5c360e57536", + "B": "frk_tt_68b5ce9c6c1bdb171870f623" + }, + { + "A": "frk_ct_68b59a16b172e5c360e57536", + "B": "frk_tt_68b5ce9c979a280311c11af1" + }, + { + "A": "frk_ct_68b59a16b172e5c360e57536", + "B": "frk_tt_68b5ce9c5029f2a7ec6f4145" + }, + { + "A": "frk_ct_68b59a16b172e5c360e57536", + "B": "frk_tt_68b5ce9c64f9e3b7410008d7" } ] \ No newline at end of file