ethyca-fides 2.63.1b4__py2.py3-none-any.whl → 2.63.2__py2.py3-none-any.whl
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.
- {ethyca_fides-2.63.1b4.dist-info → ethyca_fides-2.63.2.dist-info}/METADATA +1 -1
- {ethyca_fides-2.63.1b4.dist-info → ethyca_fides-2.63.2.dist-info}/RECORD +110 -113
- fides/_version.py +3 -3
- fides/api/models/attachment.py +23 -36
- fides/api/models/detection_discovery/monitor_task.py +1 -0
- fides/api/service/privacy_request/dsr_package/dsr_report_builder.py +46 -264
- fides/api/service/privacy_request/dsr_package/templates/collection_index.html +9 -34
- fides/api/service/privacy_request/dsr_package/templates/item.html +37 -0
- fides/api/service/privacy_request/dsr_package/templates/main.css +2 -45
- fides/api/service/privacy_request/dsr_package/templates/welcome.html +8 -12
- fides/api/service/privacy_request/request_runner_service.py +139 -258
- fides/api/service/storage/gcs.py +3 -15
- fides/api/service/storage/s3.py +14 -28
- fides/api/service/storage/util.py +7 -45
- fides/api/tasks/storage.py +91 -85
- fides/ui-build/static/admin/404.html +1 -1
- fides/ui-build/static/admin/_next/static/{X2nvWLg2_-vsCTkhSWpzw → IrQqz_6ngcumU4YlWY9nL}/_buildManifest.js +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure/messaging-8cab04871908cfeb.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure/storage-150d40428245ee0c.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests-20cdb2c8a03deae1.js +1 -0
- fides/ui-build/static/admin/add-systems/manual.html +1 -1
- fides/ui-build/static/admin/add-systems/multiple.html +1 -1
- fides/ui-build/static/admin/add-systems.html +1 -1
- fides/ui-build/static/admin/consent/configure/add-vendors.html +1 -1
- fides/ui-build/static/admin/consent/configure.html +1 -1
- fides/ui-build/static/admin/consent/privacy-experience/[id].html +1 -1
- fides/ui-build/static/admin/consent/privacy-experience/new.html +1 -1
- fides/ui-build/static/admin/consent/privacy-experience.html +1 -1
- fides/ui-build/static/admin/consent/privacy-notices/[id].html +1 -1
- fides/ui-build/static/admin/consent/privacy-notices/new.html +1 -1
- fides/ui-build/static/admin/consent/privacy-notices.html +1 -1
- fides/ui-build/static/admin/consent/properties.html +1 -1
- fides/ui-build/static/admin/consent/reporting.html +1 -1
- fides/ui-build/static/admin/consent.html +1 -1
- fides/ui-build/static/admin/data-catalog/[systemId]/projects/[projectUrn]/[resourceUrn].html +1 -1
- fides/ui-build/static/admin/data-catalog/[systemId]/projects/[projectUrn].html +1 -1
- fides/ui-build/static/admin/data-catalog/[systemId]/projects.html +1 -1
- fides/ui-build/static/admin/data-catalog/[systemId]/resources/[resourceUrn].html +1 -1
- fides/ui-build/static/admin/data-catalog/[systemId]/resources.html +1 -1
- fides/ui-build/static/admin/data-catalog.html +1 -1
- fides/ui-build/static/admin/data-discovery/action-center/[monitorId]/[systemId].html +1 -1
- fides/ui-build/static/admin/data-discovery/action-center/[monitorId].html +1 -1
- fides/ui-build/static/admin/data-discovery/action-center.html +1 -1
- fides/ui-build/static/admin/data-discovery/activity.html +1 -1
- fides/ui-build/static/admin/data-discovery/detection/[resourceUrn].html +1 -1
- fides/ui-build/static/admin/data-discovery/detection.html +1 -1
- fides/ui-build/static/admin/data-discovery/discovery/[resourceUrn].html +1 -1
- fides/ui-build/static/admin/data-discovery/discovery.html +1 -1
- fides/ui-build/static/admin/datamap.html +1 -1
- fides/ui-build/static/admin/dataset/[datasetId]/[collectionName]/[...subfieldNames].html +1 -1
- fides/ui-build/static/admin/dataset/[datasetId]/[collectionName].html +1 -1
- fides/ui-build/static/admin/dataset/[datasetId].html +1 -1
- fides/ui-build/static/admin/dataset/new.html +1 -1
- fides/ui-build/static/admin/dataset.html +1 -1
- fides/ui-build/static/admin/datastore-connection/[id].html +1 -1
- fides/ui-build/static/admin/datastore-connection/new.html +1 -1
- fides/ui-build/static/admin/datastore-connection.html +1 -1
- fides/ui-build/static/admin/index.html +1 -1
- fides/ui-build/static/admin/integrations/[id].html +1 -1
- fides/ui-build/static/admin/integrations.html +1 -1
- fides/ui-build/static/admin/lib/fides-ext-gpp.js +1 -1
- fides/ui-build/static/admin/lib/fides-headless.js +1 -1
- fides/ui-build/static/admin/lib/fides-preview.js +1 -1
- fides/ui-build/static/admin/lib/fides-tcf.js +2 -2
- fides/ui-build/static/admin/lib/fides.js +2 -2
- fides/ui-build/static/admin/login/[provider].html +1 -1
- fides/ui-build/static/admin/login.html +1 -1
- fides/ui-build/static/admin/messaging/[id].html +1 -1
- fides/ui-build/static/admin/messaging/add-template.html +1 -1
- fides/ui-build/static/admin/messaging.html +1 -1
- fides/ui-build/static/admin/poc/ant-components.html +1 -1
- fides/ui-build/static/admin/poc/form-experiments/AntForm.html +1 -1
- fides/ui-build/static/admin/poc/form-experiments/FormikAntFormItem.html +1 -1
- fides/ui-build/static/admin/poc/form-experiments/FormikControlled.html +1 -1
- fides/ui-build/static/admin/poc/form-experiments/FormikField.html +1 -1
- fides/ui-build/static/admin/poc/form-experiments/FormikSpreadField.html +1 -1
- fides/ui-build/static/admin/poc/forms.html +1 -1
- fides/ui-build/static/admin/poc/table-migration.html +1 -1
- fides/ui-build/static/admin/privacy-requests/[id].html +1 -1
- fides/ui-build/static/admin/privacy-requests/configure/messaging.html +1 -1
- fides/ui-build/static/admin/privacy-requests/configure/storage.html +1 -1
- fides/ui-build/static/admin/privacy-requests/configure.html +1 -1
- fides/ui-build/static/admin/privacy-requests.html +1 -1
- fides/ui-build/static/admin/properties/[id].html +1 -1
- fides/ui-build/static/admin/properties/add-property.html +1 -1
- fides/ui-build/static/admin/properties.html +1 -1
- fides/ui-build/static/admin/reporting/datamap.html +1 -1
- fides/ui-build/static/admin/settings/about/alpha.html +1 -1
- fides/ui-build/static/admin/settings/about.html +1 -1
- fides/ui-build/static/admin/settings/consent/[configuration_id]/[purpose_id].html +1 -1
- fides/ui-build/static/admin/settings/consent.html +1 -1
- fides/ui-build/static/admin/settings/custom-fields.html +1 -1
- fides/ui-build/static/admin/settings/domain-records.html +1 -1
- fides/ui-build/static/admin/settings/domains.html +1 -1
- fides/ui-build/static/admin/settings/email-templates.html +1 -1
- fides/ui-build/static/admin/settings/locations.html +1 -1
- fides/ui-build/static/admin/settings/organization.html +1 -1
- fides/ui-build/static/admin/settings/regulations.html +1 -1
- fides/ui-build/static/admin/systems/configure/[id]/test-datasets.html +1 -1
- fides/ui-build/static/admin/systems/configure/[id].html +1 -1
- fides/ui-build/static/admin/systems.html +1 -1
- fides/ui-build/static/admin/taxonomy.html +1 -1
- fides/ui-build/static/admin/user-management/new.html +1 -1
- fides/ui-build/static/admin/user-management/profile/[id].html +1 -1
- fides/ui-build/static/admin/user-management.html +1 -1
- fides/api/service/privacy_request/attachment_handling.py +0 -132
- fides/api/service/privacy_request/dsr_package/templates/attachments_index.html +0 -33
- fides/api/tasks/csv_utils.py +0 -170
- fides/api/tasks/encryption_utils.py +0 -42
- fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure/messaging-c583a61302f02add.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure/storage-20d20a8d1736f7c4.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests-0e557d79e1e43c2b.js +0 -1
- {ethyca_fides-2.63.1b4.dist-info → ethyca_fides-2.63.2.dist-info}/WHEEL +0 -0
- {ethyca_fides-2.63.1b4.dist-info → ethyca_fides-2.63.2.dist-info}/entry_points.txt +0 -0
- {ethyca_fides-2.63.1b4.dist-info → ethyca_fides-2.63.2.dist-info}/licenses/LICENSE +0 -0
- {ethyca_fides-2.63.1b4.dist-info → ethyca_fides-2.63.2.dist-info}/top_level.txt +0 -0
- /fides/ui-build/static/admin/_next/static/{X2nvWLg2_-vsCTkhSWpzw → IrQqz_6ngcumU4YlWY9nL}/_ssgManifest.js +0 -0
@@ -1 +1 @@
|
|
1
|
-
<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link data-next-font="" rel="preconnect" href="/" crossorigin="anonymous"/><link rel="preload" href="/_next/static/css/1fdf5c593349dbc6.css" as="style"/><link rel="stylesheet" href="/_next/static/css/1fdf5c593349dbc6.css" data-n-g=""/><link rel="preload" href="/_next/static/css/92fc10cc7ed1aba3.css" as="style"/><link rel="stylesheet" href="/_next/static/css/92fc10cc7ed1aba3.css" data-n-p=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/_next/static/chunks/polyfills-42372ed130431b0a.js"></script><script src="/_next/static/chunks/webpack-8457bad7859c44f0.js" defer=""></script><script src="/_next/static/chunks/framework-c92fc3344e6fd165.js" defer=""></script><script src="/_next/static/chunks/main-090643377c8254e6.js" defer=""></script><script src="/_next/static/chunks/pages/_app-33bc23b79bffe07c.js" defer=""></script><script src="/_next/static/chunks/c78d26b1-88a3e1bacb2a03c2.js" defer=""></script><script src="/_next/static/chunks/6060-cb1ab5be7067bf7b.js" defer=""></script><script src="/_next/static/chunks/2858-0b44609b6be7850b.js" defer=""></script><script src="/_next/static/chunks/2866-a73888c17a195cbe.js" defer=""></script><script src="/_next/static/chunks/9278-9b1b5970f0702668.js" defer=""></script><script src="/_next/static/chunks/5277-e8a036319456127f.js" defer=""></script><script src="/_next/static/chunks/7553-08bc3d9f66695111.js" defer=""></script><script src="/_next/static/chunks/4481-7f6710c928bb0cb0.js" defer=""></script><script src="/_next/static/chunks/401-7e800aed05537126.js" defer=""></script><script src="/_next/static/chunks/7980-736f9fd1e749ddd2.js" defer=""></script><script src="/_next/static/chunks/8499-1fd392d0be9e8ee4.js" defer=""></script><script src="/_next/static/chunks/6202-081545c7822d09af.js" defer=""></script><script src="/_next/static/chunks/4132-9b1731bfec6ee537.js" defer=""></script><script src="/_next/static/chunks/8032-74d94f7bd5b81c89.js" defer=""></script><script src="/_next/static/chunks/pages/systems/configure/%5Bid%5D-86de9e6d72098e45.js" defer=""></script><script src="/_next/static/
|
1
|
+
<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link data-next-font="" rel="preconnect" href="/" crossorigin="anonymous"/><link rel="preload" href="/_next/static/css/1fdf5c593349dbc6.css" as="style"/><link rel="stylesheet" href="/_next/static/css/1fdf5c593349dbc6.css" data-n-g=""/><link rel="preload" href="/_next/static/css/92fc10cc7ed1aba3.css" as="style"/><link rel="stylesheet" href="/_next/static/css/92fc10cc7ed1aba3.css" data-n-p=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/_next/static/chunks/polyfills-42372ed130431b0a.js"></script><script src="/_next/static/chunks/webpack-8457bad7859c44f0.js" defer=""></script><script src="/_next/static/chunks/framework-c92fc3344e6fd165.js" defer=""></script><script src="/_next/static/chunks/main-090643377c8254e6.js" defer=""></script><script src="/_next/static/chunks/pages/_app-33bc23b79bffe07c.js" defer=""></script><script src="/_next/static/chunks/c78d26b1-88a3e1bacb2a03c2.js" defer=""></script><script src="/_next/static/chunks/6060-cb1ab5be7067bf7b.js" defer=""></script><script src="/_next/static/chunks/2858-0b44609b6be7850b.js" defer=""></script><script src="/_next/static/chunks/2866-a73888c17a195cbe.js" defer=""></script><script src="/_next/static/chunks/9278-9b1b5970f0702668.js" defer=""></script><script src="/_next/static/chunks/5277-e8a036319456127f.js" defer=""></script><script src="/_next/static/chunks/7553-08bc3d9f66695111.js" defer=""></script><script src="/_next/static/chunks/4481-7f6710c928bb0cb0.js" defer=""></script><script src="/_next/static/chunks/401-7e800aed05537126.js" defer=""></script><script src="/_next/static/chunks/7980-736f9fd1e749ddd2.js" defer=""></script><script src="/_next/static/chunks/8499-1fd392d0be9e8ee4.js" defer=""></script><script src="/_next/static/chunks/6202-081545c7822d09af.js" defer=""></script><script src="/_next/static/chunks/4132-9b1731bfec6ee537.js" defer=""></script><script src="/_next/static/chunks/8032-74d94f7bd5b81c89.js" defer=""></script><script src="/_next/static/chunks/pages/systems/configure/%5Bid%5D-86de9e6d72098e45.js" defer=""></script><script src="/_next/static/IrQqz_6ngcumU4YlWY9nL/_buildManifest.js" defer=""></script><script src="/_next/static/IrQqz_6ngcumU4YlWY9nL/_ssgManifest.js" defer=""></script><style>.data-ant-cssinjs-cache-path{content:"";}</style></head><body><div id="__next"><div style="height:100%;display:flex"></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/systems/configure/[id]","query":{},"buildId":"IrQqz_6ngcumU4YlWY9nL","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
|
@@ -1 +1 @@
|
|
1
|
-
<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link data-next-font="" rel="preconnect" href="/" crossorigin="anonymous"/><link rel="preload" href="/_next/static/css/1fdf5c593349dbc6.css" as="style"/><link rel="stylesheet" href="/_next/static/css/1fdf5c593349dbc6.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/_next/static/chunks/polyfills-42372ed130431b0a.js"></script><script src="/_next/static/chunks/webpack-8457bad7859c44f0.js" defer=""></script><script src="/_next/static/chunks/framework-c92fc3344e6fd165.js" defer=""></script><script src="/_next/static/chunks/main-090643377c8254e6.js" defer=""></script><script src="/_next/static/chunks/pages/_app-33bc23b79bffe07c.js" defer=""></script><script src="/_next/static/chunks/c78d26b1-88a3e1bacb2a03c2.js" defer=""></script><script src="/_next/static/chunks/6060-cb1ab5be7067bf7b.js" defer=""></script><script src="/_next/static/chunks/7553-08bc3d9f66695111.js" defer=""></script><script src="/_next/static/chunks/4481-7f6710c928bb0cb0.js" defer=""></script><script src="/_next/static/chunks/pages/systems-cac52e6c3abf6a15.js" defer=""></script><script src="/_next/static/
|
1
|
+
<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link data-next-font="" rel="preconnect" href="/" crossorigin="anonymous"/><link rel="preload" href="/_next/static/css/1fdf5c593349dbc6.css" as="style"/><link rel="stylesheet" href="/_next/static/css/1fdf5c593349dbc6.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/_next/static/chunks/polyfills-42372ed130431b0a.js"></script><script src="/_next/static/chunks/webpack-8457bad7859c44f0.js" defer=""></script><script src="/_next/static/chunks/framework-c92fc3344e6fd165.js" defer=""></script><script src="/_next/static/chunks/main-090643377c8254e6.js" defer=""></script><script src="/_next/static/chunks/pages/_app-33bc23b79bffe07c.js" defer=""></script><script src="/_next/static/chunks/c78d26b1-88a3e1bacb2a03c2.js" defer=""></script><script src="/_next/static/chunks/6060-cb1ab5be7067bf7b.js" defer=""></script><script src="/_next/static/chunks/7553-08bc3d9f66695111.js" defer=""></script><script src="/_next/static/chunks/4481-7f6710c928bb0cb0.js" defer=""></script><script src="/_next/static/chunks/pages/systems-cac52e6c3abf6a15.js" defer=""></script><script src="/_next/static/IrQqz_6ngcumU4YlWY9nL/_buildManifest.js" defer=""></script><script src="/_next/static/IrQqz_6ngcumU4YlWY9nL/_ssgManifest.js" defer=""></script><style>.data-ant-cssinjs-cache-path{content:"";}</style></head><body><div id="__next"><div style="height:100%;display:flex"></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/systems","query":{},"buildId":"IrQqz_6ngcumU4YlWY9nL","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
|
@@ -1 +1 @@
|
|
1
|
-
<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link data-next-font="" rel="preconnect" href="/" crossorigin="anonymous"/><link rel="preload" href="/_next/static/css/1fdf5c593349dbc6.css" as="style"/><link rel="stylesheet" href="/_next/static/css/1fdf5c593349dbc6.css" data-n-g=""/><link rel="preload" href="/_next/static/css/34a7eb08b86ddb57.css" as="style"/><link rel="stylesheet" href="/_next/static/css/34a7eb08b86ddb57.css" data-n-p=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/_next/static/chunks/polyfills-42372ed130431b0a.js"></script><script src="/_next/static/chunks/webpack-8457bad7859c44f0.js" defer=""></script><script src="/_next/static/chunks/framework-c92fc3344e6fd165.js" defer=""></script><script src="/_next/static/chunks/main-090643377c8254e6.js" defer=""></script><script src="/_next/static/chunks/pages/_app-33bc23b79bffe07c.js" defer=""></script><script src="/_next/static/chunks/678d4732-50255cc09048e643.js" defer=""></script><script src="/_next/static/chunks/2858-0b44609b6be7850b.js" defer=""></script><script src="/_next/static/chunks/2866-a73888c17a195cbe.js" defer=""></script><script src="/_next/static/chunks/9278-9b1b5970f0702668.js" defer=""></script><script src="/_next/static/chunks/3662-f6a1ddca5ee42076.js" defer=""></script><script src="/_next/static/chunks/3983-17ae9c232bddc413.js" defer=""></script><script src="/_next/static/chunks/7980-736f9fd1e749ddd2.js" defer=""></script><script src="/_next/static/chunks/pages/taxonomy-60d5930b6855679b.js" defer=""></script><script src="/_next/static/
|
1
|
+
<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link data-next-font="" rel="preconnect" href="/" crossorigin="anonymous"/><link rel="preload" href="/_next/static/css/1fdf5c593349dbc6.css" as="style"/><link rel="stylesheet" href="/_next/static/css/1fdf5c593349dbc6.css" data-n-g=""/><link rel="preload" href="/_next/static/css/34a7eb08b86ddb57.css" as="style"/><link rel="stylesheet" href="/_next/static/css/34a7eb08b86ddb57.css" data-n-p=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/_next/static/chunks/polyfills-42372ed130431b0a.js"></script><script src="/_next/static/chunks/webpack-8457bad7859c44f0.js" defer=""></script><script src="/_next/static/chunks/framework-c92fc3344e6fd165.js" defer=""></script><script src="/_next/static/chunks/main-090643377c8254e6.js" defer=""></script><script src="/_next/static/chunks/pages/_app-33bc23b79bffe07c.js" defer=""></script><script src="/_next/static/chunks/678d4732-50255cc09048e643.js" defer=""></script><script src="/_next/static/chunks/2858-0b44609b6be7850b.js" defer=""></script><script src="/_next/static/chunks/2866-a73888c17a195cbe.js" defer=""></script><script src="/_next/static/chunks/9278-9b1b5970f0702668.js" defer=""></script><script src="/_next/static/chunks/3662-f6a1ddca5ee42076.js" defer=""></script><script src="/_next/static/chunks/3983-17ae9c232bddc413.js" defer=""></script><script src="/_next/static/chunks/7980-736f9fd1e749ddd2.js" defer=""></script><script src="/_next/static/chunks/pages/taxonomy-60d5930b6855679b.js" defer=""></script><script src="/_next/static/IrQqz_6ngcumU4YlWY9nL/_buildManifest.js" defer=""></script><script src="/_next/static/IrQqz_6ngcumU4YlWY9nL/_ssgManifest.js" defer=""></script><style>.data-ant-cssinjs-cache-path{content:"";}</style></head><body><div id="__next"><div style="height:100%;display:flex"></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/taxonomy","query":{},"buildId":"IrQqz_6ngcumU4YlWY9nL","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
|
@@ -1 +1 @@
|
|
1
|
-
<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link data-next-font="" rel="preconnect" href="/" crossorigin="anonymous"/><link rel="preload" href="/_next/static/css/1fdf5c593349dbc6.css" as="style"/><link rel="stylesheet" href="/_next/static/css/1fdf5c593349dbc6.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/_next/static/chunks/polyfills-42372ed130431b0a.js"></script><script src="/_next/static/chunks/webpack-8457bad7859c44f0.js" defer=""></script><script src="/_next/static/chunks/framework-c92fc3344e6fd165.js" defer=""></script><script src="/_next/static/chunks/main-090643377c8254e6.js" defer=""></script><script src="/_next/static/chunks/pages/_app-33bc23b79bffe07c.js" defer=""></script><script src="/_next/static/chunks/3513-5c2d412a84a78971.js" defer=""></script><script src="/_next/static/chunks/4121-66b0e00d5e7ae817.js" defer=""></script><script src="/_next/static/chunks/pages/user-management/new-b124cc24b930c9e1.js" defer=""></script><script src="/_next/static/
|
1
|
+
<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link data-next-font="" rel="preconnect" href="/" crossorigin="anonymous"/><link rel="preload" href="/_next/static/css/1fdf5c593349dbc6.css" as="style"/><link rel="stylesheet" href="/_next/static/css/1fdf5c593349dbc6.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/_next/static/chunks/polyfills-42372ed130431b0a.js"></script><script src="/_next/static/chunks/webpack-8457bad7859c44f0.js" defer=""></script><script src="/_next/static/chunks/framework-c92fc3344e6fd165.js" defer=""></script><script src="/_next/static/chunks/main-090643377c8254e6.js" defer=""></script><script src="/_next/static/chunks/pages/_app-33bc23b79bffe07c.js" defer=""></script><script src="/_next/static/chunks/3513-5c2d412a84a78971.js" defer=""></script><script src="/_next/static/chunks/4121-66b0e00d5e7ae817.js" defer=""></script><script src="/_next/static/chunks/pages/user-management/new-b124cc24b930c9e1.js" defer=""></script><script src="/_next/static/IrQqz_6ngcumU4YlWY9nL/_buildManifest.js" defer=""></script><script src="/_next/static/IrQqz_6ngcumU4YlWY9nL/_ssgManifest.js" defer=""></script><style>.data-ant-cssinjs-cache-path{content:"";}</style></head><body><div id="__next"><div style="height:100%;display:flex"></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/user-management/new","query":{},"buildId":"IrQqz_6ngcumU4YlWY9nL","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
|
@@ -1 +1 @@
|
|
1
|
-
<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link data-next-font="" rel="preconnect" href="/" crossorigin="anonymous"/><link rel="preload" href="/_next/static/css/1fdf5c593349dbc6.css" as="style"/><link rel="stylesheet" href="/_next/static/css/1fdf5c593349dbc6.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/_next/static/chunks/polyfills-42372ed130431b0a.js"></script><script src="/_next/static/chunks/webpack-8457bad7859c44f0.js" defer=""></script><script src="/_next/static/chunks/framework-c92fc3344e6fd165.js" defer=""></script><script src="/_next/static/chunks/main-090643377c8254e6.js" defer=""></script><script src="/_next/static/chunks/pages/_app-33bc23b79bffe07c.js" defer=""></script><script src="/_next/static/chunks/3513-5c2d412a84a78971.js" defer=""></script><script src="/_next/static/chunks/4121-66b0e00d5e7ae817.js" defer=""></script><script src="/_next/static/chunks/pages/user-management/profile/%5Bid%5D-b0f4c34752d32c73.js" defer=""></script><script src="/_next/static/
|
1
|
+
<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link data-next-font="" rel="preconnect" href="/" crossorigin="anonymous"/><link rel="preload" href="/_next/static/css/1fdf5c593349dbc6.css" as="style"/><link rel="stylesheet" href="/_next/static/css/1fdf5c593349dbc6.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/_next/static/chunks/polyfills-42372ed130431b0a.js"></script><script src="/_next/static/chunks/webpack-8457bad7859c44f0.js" defer=""></script><script src="/_next/static/chunks/framework-c92fc3344e6fd165.js" defer=""></script><script src="/_next/static/chunks/main-090643377c8254e6.js" defer=""></script><script src="/_next/static/chunks/pages/_app-33bc23b79bffe07c.js" defer=""></script><script src="/_next/static/chunks/3513-5c2d412a84a78971.js" defer=""></script><script src="/_next/static/chunks/4121-66b0e00d5e7ae817.js" defer=""></script><script src="/_next/static/chunks/pages/user-management/profile/%5Bid%5D-b0f4c34752d32c73.js" defer=""></script><script src="/_next/static/IrQqz_6ngcumU4YlWY9nL/_buildManifest.js" defer=""></script><script src="/_next/static/IrQqz_6ngcumU4YlWY9nL/_ssgManifest.js" defer=""></script><style>.data-ant-cssinjs-cache-path{content:"";}</style></head><body><div id="__next"><div style="height:100%;display:flex"></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/user-management/profile/[id]","query":{},"buildId":"IrQqz_6ngcumU4YlWY9nL","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
|
@@ -1 +1 @@
|
|
1
|
-
<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link data-next-font="" rel="preconnect" href="/" crossorigin="anonymous"/><link rel="preload" href="/_next/static/css/1fdf5c593349dbc6.css" as="style"/><link rel="stylesheet" href="/_next/static/css/1fdf5c593349dbc6.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/_next/static/chunks/polyfills-42372ed130431b0a.js"></script><script src="/_next/static/chunks/webpack-8457bad7859c44f0.js" defer=""></script><script src="/_next/static/chunks/framework-c92fc3344e6fd165.js" defer=""></script><script src="/_next/static/chunks/main-090643377c8254e6.js" defer=""></script><script src="/_next/static/chunks/pages/_app-33bc23b79bffe07c.js" defer=""></script><script src="/_next/static/chunks/3513-5c2d412a84a78971.js" defer=""></script><script src="/_next/static/chunks/pages/user-management-7dee83dd6d9292aa.js" defer=""></script><script src="/_next/static/
|
1
|
+
<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width"/><meta name="next-head-count" content="2"/><link data-next-font="" rel="preconnect" href="/" crossorigin="anonymous"/><link rel="preload" href="/_next/static/css/1fdf5c593349dbc6.css" as="style"/><link rel="stylesheet" href="/_next/static/css/1fdf5c593349dbc6.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/_next/static/chunks/polyfills-42372ed130431b0a.js"></script><script src="/_next/static/chunks/webpack-8457bad7859c44f0.js" defer=""></script><script src="/_next/static/chunks/framework-c92fc3344e6fd165.js" defer=""></script><script src="/_next/static/chunks/main-090643377c8254e6.js" defer=""></script><script src="/_next/static/chunks/pages/_app-33bc23b79bffe07c.js" defer=""></script><script src="/_next/static/chunks/3513-5c2d412a84a78971.js" defer=""></script><script src="/_next/static/chunks/pages/user-management-7dee83dd6d9292aa.js" defer=""></script><script src="/_next/static/IrQqz_6ngcumU4YlWY9nL/_buildManifest.js" defer=""></script><script src="/_next/static/IrQqz_6ngcumU4YlWY9nL/_ssgManifest.js" defer=""></script><style>.data-ant-cssinjs-cache-path{content:"";}</style></head><body><div id="__next"><div style="height:100%;display:flex"></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{}},"page":"/user-management","query":{},"buildId":"IrQqz_6ngcumU4YlWY9nL","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
|
@@ -1,132 +0,0 @@
|
|
1
|
-
import time as time_module
|
2
|
-
from dataclasses import dataclass
|
3
|
-
from typing import Any, Dict, Iterator, List, Optional, Tuple
|
4
|
-
|
5
|
-
from loguru import logger
|
6
|
-
|
7
|
-
from fides.api.models.attachment import Attachment, AttachmentType
|
8
|
-
from fides.api.schemas.storage.storage import StorageDetails
|
9
|
-
|
10
|
-
|
11
|
-
@dataclass
|
12
|
-
class AttachmentData:
|
13
|
-
"""Data structure for attachment metadata and content.
|
14
|
-
Using a dataclass rather than a Pydantic model here for the following reasons:
|
15
|
-
- The data structure is simple and doesn't need complex validation.
|
16
|
-
- The fields being used have already been validated and are properly typed.
|
17
|
-
- The class is used internally for data transfer, not for API serialization.
|
18
|
-
- Performance is important since this is used in a data processing pipeline.
|
19
|
-
"""
|
20
|
-
|
21
|
-
file_name: str
|
22
|
-
file_size: Optional[int]
|
23
|
-
download_url: Optional[str]
|
24
|
-
content_type: str
|
25
|
-
bucket_name: str
|
26
|
-
file_key: str
|
27
|
-
storage_key: str
|
28
|
-
|
29
|
-
def to_upload_dict(self) -> Dict[str, Any]:
|
30
|
-
"""Convert to dictionary for upload, including presigned URL."""
|
31
|
-
return {
|
32
|
-
"file_name": self.file_name,
|
33
|
-
"file_size": self.file_size,
|
34
|
-
"download_url": self.download_url,
|
35
|
-
"content_type": self.content_type,
|
36
|
-
}
|
37
|
-
|
38
|
-
def to_storage_dict(self) -> Dict[str, Any]:
|
39
|
-
"""Convert to dictionary for storage, including the elements needed to recreated the presigned URL."""
|
40
|
-
return {
|
41
|
-
"file_name": self.file_name,
|
42
|
-
"file_size": self.file_size,
|
43
|
-
"content_type": self.content_type,
|
44
|
-
"bucket_name": self.bucket_name,
|
45
|
-
"file_key": self.file_key,
|
46
|
-
"storage_key": self.storage_key,
|
47
|
-
}
|
48
|
-
|
49
|
-
|
50
|
-
def get_attachments_content(
|
51
|
-
loaded_attachments: List[Attachment],
|
52
|
-
) -> Iterator[AttachmentData]:
|
53
|
-
"""
|
54
|
-
Retrieves all attachments associated with a privacy request that are marked to be included with the access package.
|
55
|
-
Yields AttachmentData objects containing attachment metadata and download urls.
|
56
|
-
Uses generators to minimize memory usage.
|
57
|
-
|
58
|
-
Args:
|
59
|
-
loaded_attachments: List of Attachment objects to process
|
60
|
-
|
61
|
-
Yields:
|
62
|
-
AttachmentData object containing attachment metadata and url
|
63
|
-
"""
|
64
|
-
start_time = time_module.time()
|
65
|
-
processed_count = 0
|
66
|
-
skipped_count = 0
|
67
|
-
error_count = 0
|
68
|
-
total_size = 0
|
69
|
-
|
70
|
-
for attachment in loaded_attachments:
|
71
|
-
if attachment.attachment_type != AttachmentType.include_with_access_package:
|
72
|
-
skipped_count += 1
|
73
|
-
continue
|
74
|
-
|
75
|
-
try:
|
76
|
-
# Get size and download URL using retrieve_attachment
|
77
|
-
size, url = attachment.retrieve_attachment()
|
78
|
-
total_size += size if size else 0
|
79
|
-
if url is None:
|
80
|
-
logger.warning(
|
81
|
-
"No download URL retrieved for attachment {}", attachment.file_name
|
82
|
-
)
|
83
|
-
skipped_count += 1
|
84
|
-
continue
|
85
|
-
|
86
|
-
processed_count += 1
|
87
|
-
yield AttachmentData(
|
88
|
-
file_name=attachment.file_name,
|
89
|
-
file_size=size,
|
90
|
-
download_url=str(url) if url else None,
|
91
|
-
content_type=attachment.content_type,
|
92
|
-
bucket_name=attachment.config.details[StorageDetails.BUCKET.value],
|
93
|
-
file_key=attachment.file_key,
|
94
|
-
storage_key=attachment.storage_key,
|
95
|
-
)
|
96
|
-
|
97
|
-
except Exception as e:
|
98
|
-
error_count += 1
|
99
|
-
logger.error(
|
100
|
-
"Error processing attachment {}: {}", attachment.file_name, str(e)
|
101
|
-
)
|
102
|
-
continue
|
103
|
-
|
104
|
-
# Log final metrics
|
105
|
-
time_taken = time_module.time() - start_time
|
106
|
-
logger.bind(
|
107
|
-
time_to_process=time_taken,
|
108
|
-
total_attachments=len(loaded_attachments),
|
109
|
-
processed_attachments=processed_count,
|
110
|
-
skipped_attachments=skipped_count,
|
111
|
-
error_attachments=error_count,
|
112
|
-
total_size_bytes=total_size,
|
113
|
-
).info("Attachment processing complete")
|
114
|
-
|
115
|
-
|
116
|
-
def process_attachments_for_upload(
|
117
|
-
attachments: Iterator[AttachmentData],
|
118
|
-
) -> Tuple[List[Dict[str, Any]], List[Dict[str, Any]]]:
|
119
|
-
"""
|
120
|
-
Process attachments into separate upload and storage formats.
|
121
|
-
Returns both formats:
|
122
|
-
- upload_attachments: Used for uploading to access packages
|
123
|
-
- storage_attachments: Used for saving filtered access results
|
124
|
-
"""
|
125
|
-
upload_attachments = []
|
126
|
-
storage_attachments = []
|
127
|
-
|
128
|
-
for attachment in attachments:
|
129
|
-
storage_attachments.append(attachment.to_storage_dict())
|
130
|
-
upload_attachments.append(attachment.to_upload_dict())
|
131
|
-
|
132
|
-
return upload_attachments, storage_attachments
|
@@ -1,33 +0,0 @@
|
|
1
|
-
<html>
|
2
|
-
<head>
|
3
|
-
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600">
|
4
|
-
<link rel="stylesheet" href="../data/main.css">
|
5
|
-
</head>
|
6
|
-
<body>
|
7
|
-
<div class="container">
|
8
|
-
<div class="header"></div>
|
9
|
-
<div class="content">
|
10
|
-
<div class="button-container">
|
11
|
-
<a href="../welcome.html">
|
12
|
-
<div class="button"><img src="../data/back.svg"></div>
|
13
|
-
<span>Back to main page</span>
|
14
|
-
</a>
|
15
|
-
</div>
|
16
|
-
<h1>Attachments</h1>
|
17
|
-
<p class="expiration-notice">Note: All download links will expire in 7 days.</p>
|
18
|
-
<div class="table table-hover">
|
19
|
-
<div class="table-row">
|
20
|
-
<div class="table-cell" style="text-align: left;">File Name</div>
|
21
|
-
<div class="table-cell" style="text-align: left;">Size</div>
|
22
|
-
</div>
|
23
|
-
{% for name, info in data.items() %}
|
24
|
-
<a href="{{ info.url }}" class="table-row" target="_blank">
|
25
|
-
<div class="table-cell" style="text-align: left;">{{ name }}</div>
|
26
|
-
<div class="table-cell" style="text-align: left;">{{ info.size }}</div>
|
27
|
-
</a>
|
28
|
-
{% endfor %}
|
29
|
-
</div>
|
30
|
-
</div>
|
31
|
-
</div>
|
32
|
-
</body>
|
33
|
-
</html>
|
fides/api/tasks/csv_utils.py
DELETED
@@ -1,170 +0,0 @@
|
|
1
|
-
import zipfile
|
2
|
-
from io import BytesIO
|
3
|
-
from typing import Any, Optional
|
4
|
-
|
5
|
-
import pandas as pd
|
6
|
-
|
7
|
-
from fides.api.tasks.encryption_utils import encrypt_access_request_results
|
8
|
-
from fides.config import CONFIG
|
9
|
-
|
10
|
-
|
11
|
-
def create_csv_from_dataframe(df: pd.DataFrame) -> BytesIO:
|
12
|
-
"""Create a CSV file from a pandas DataFrame.
|
13
|
-
|
14
|
-
Args:
|
15
|
-
df: The DataFrame to convert to CSV
|
16
|
-
|
17
|
-
Returns:
|
18
|
-
BytesIO: A file-like object containing the CSV data
|
19
|
-
"""
|
20
|
-
buffer = BytesIO()
|
21
|
-
df.to_csv(buffer, index=False, encoding=CONFIG.security.encoding)
|
22
|
-
buffer.seek(0)
|
23
|
-
return buffer
|
24
|
-
|
25
|
-
|
26
|
-
def create_attachment_csv(attachments: list[dict[str, Any]]) -> Optional[BytesIO]:
|
27
|
-
"""Create a CSV file containing attachment metadata.
|
28
|
-
|
29
|
-
Args:
|
30
|
-
attachments: List of attachment dictionaries
|
31
|
-
privacy_request_id: The ID of the privacy request for encryption
|
32
|
-
|
33
|
-
Returns:
|
34
|
-
Optional[BytesIO]: A file-like object containing the CSV data, or None if no attachments
|
35
|
-
"""
|
36
|
-
if not attachments:
|
37
|
-
return None
|
38
|
-
|
39
|
-
# Filter out invalid attachments and create a list of valid ones
|
40
|
-
valid_attachments = []
|
41
|
-
for a in attachments:
|
42
|
-
if not isinstance(a, dict):
|
43
|
-
continue
|
44
|
-
|
45
|
-
# Check if the attachment has at least one of the required fields
|
46
|
-
if not any(
|
47
|
-
key in a
|
48
|
-
for key in ["file_name", "file_size", "content_type", "download_url"]
|
49
|
-
):
|
50
|
-
continue
|
51
|
-
|
52
|
-
valid_attachments.append(
|
53
|
-
{
|
54
|
-
"file_name": a.get("file_name", ""),
|
55
|
-
"file_size": a.get("file_size", 0),
|
56
|
-
"content_type": a.get("content_type", "application/octet-stream"),
|
57
|
-
"download_url": a.get("download_url", ""),
|
58
|
-
}
|
59
|
-
)
|
60
|
-
|
61
|
-
# Return None if there are no valid attachments
|
62
|
-
if not valid_attachments:
|
63
|
-
return None
|
64
|
-
|
65
|
-
df = pd.DataFrame(valid_attachments)
|
66
|
-
|
67
|
-
if df.empty:
|
68
|
-
return None
|
69
|
-
|
70
|
-
return create_csv_from_dataframe(df)
|
71
|
-
|
72
|
-
|
73
|
-
def _write_attachment_csv(
|
74
|
-
zip_file: zipfile.ZipFile,
|
75
|
-
key: str,
|
76
|
-
idx: int,
|
77
|
-
attachments: list[dict[str, Any]],
|
78
|
-
privacy_request_id: str,
|
79
|
-
) -> None:
|
80
|
-
"""Write attachment data to a CSV file in the zip archive.
|
81
|
-
|
82
|
-
Args:
|
83
|
-
zip_file: The zip file to write to
|
84
|
-
key: The key for the data
|
85
|
-
idx: The index of the item in the list
|
86
|
-
attachments: List of attachment dictionaries
|
87
|
-
privacy_request_id: The ID of the privacy request for encryption
|
88
|
-
"""
|
89
|
-
buffer = create_attachment_csv(attachments)
|
90
|
-
if buffer:
|
91
|
-
zip_file.writestr(
|
92
|
-
f"{key}/{idx + 1}/attachments.csv",
|
93
|
-
encrypt_access_request_results(buffer.getvalue(), privacy_request_id),
|
94
|
-
)
|
95
|
-
|
96
|
-
|
97
|
-
def _write_item_csv(
|
98
|
-
zip_file: zipfile.ZipFile,
|
99
|
-
key: str,
|
100
|
-
items: list[dict[str, Any]],
|
101
|
-
privacy_request_id: str,
|
102
|
-
) -> None:
|
103
|
-
"""Write item data to a CSV file in the zip archive.
|
104
|
-
|
105
|
-
Args:
|
106
|
-
zip_file: The zip file to write to
|
107
|
-
key: The key for the data
|
108
|
-
items: List of items to write
|
109
|
-
privacy_request_id: The ID of the privacy request for encryption
|
110
|
-
"""
|
111
|
-
if items:
|
112
|
-
df = pd.DataFrame(items)
|
113
|
-
buffer = create_csv_from_dataframe(df)
|
114
|
-
zip_file.writestr(
|
115
|
-
f"{key}.csv",
|
116
|
-
encrypt_access_request_results(buffer.getvalue(), privacy_request_id),
|
117
|
-
)
|
118
|
-
|
119
|
-
|
120
|
-
def _write_simple_csv(
|
121
|
-
zip_file: zipfile.ZipFile,
|
122
|
-
key: str,
|
123
|
-
value: Any,
|
124
|
-
privacy_request_id: str,
|
125
|
-
) -> None:
|
126
|
-
"""Write simple key-value data to a CSV file in the zip archive.
|
127
|
-
|
128
|
-
Args:
|
129
|
-
zip_file: The zip file to write to
|
130
|
-
key: The key for the data
|
131
|
-
value: The value to write
|
132
|
-
privacy_request_id: The ID of the privacy request for encryption
|
133
|
-
"""
|
134
|
-
df = pd.json_normalize({key: value})
|
135
|
-
buffer = create_csv_from_dataframe(df)
|
136
|
-
zip_file.writestr(
|
137
|
-
f"{key}.csv",
|
138
|
-
encrypt_access_request_results(buffer.getvalue(), privacy_request_id),
|
139
|
-
)
|
140
|
-
|
141
|
-
|
142
|
-
def write_csv_to_zip(
|
143
|
-
zip_file: zipfile.ZipFile, data: dict[str, Any], privacy_request_id: str
|
144
|
-
) -> None:
|
145
|
-
"""Write data to a zip file in CSV format.
|
146
|
-
|
147
|
-
Args:
|
148
|
-
zip_file: The zip file to write to
|
149
|
-
data: The data to convert to CSV
|
150
|
-
privacy_request_id: The ID of the privacy request for encryption
|
151
|
-
"""
|
152
|
-
for key, value in data.items():
|
153
|
-
if (
|
154
|
-
isinstance(value, list)
|
155
|
-
and value
|
156
|
-
and all(isinstance(item, dict) for item in value)
|
157
|
-
):
|
158
|
-
# Handle lists of dictionaries
|
159
|
-
items: list[dict[str, Any]] = []
|
160
|
-
for item in value:
|
161
|
-
# Extract attachments if they exist
|
162
|
-
attachments = item.pop("attachments", [])
|
163
|
-
if attachments:
|
164
|
-
_write_attachment_csv(
|
165
|
-
zip_file, key, len(items), attachments, privacy_request_id
|
166
|
-
)
|
167
|
-
items.append(item)
|
168
|
-
_write_item_csv(zip_file, key, items, privacy_request_id)
|
169
|
-
else:
|
170
|
-
_write_simple_csv(zip_file, key, value, privacy_request_id)
|
@@ -1,42 +0,0 @@
|
|
1
|
-
import secrets
|
2
|
-
from typing import Optional, Union
|
3
|
-
|
4
|
-
from fides.api.cryptography.cryptographic_util import bytes_to_b64_str
|
5
|
-
from fides.api.util.cache import get_cache, get_encryption_cache_key
|
6
|
-
from fides.api.util.encryption.aes_gcm_encryption_scheme import (
|
7
|
-
encrypt_to_bytes_verify_secrets_length,
|
8
|
-
)
|
9
|
-
from fides.config import CONFIG
|
10
|
-
|
11
|
-
|
12
|
-
def encrypt_access_request_results(data: Union[str, bytes], request_id: str) -> str:
|
13
|
-
"""Encrypt data with encryption key if provided, otherwise return unencrypted data.
|
14
|
-
|
15
|
-
Args:
|
16
|
-
data: The data to encrypt
|
17
|
-
request_id: The ID of the privacy request for encryption key lookup
|
18
|
-
|
19
|
-
Returns:
|
20
|
-
str: The encrypted data as a string
|
21
|
-
"""
|
22
|
-
cache = get_cache()
|
23
|
-
encryption_cache_key = get_encryption_cache_key(
|
24
|
-
privacy_request_id=request_id,
|
25
|
-
encryption_attr="key",
|
26
|
-
)
|
27
|
-
if isinstance(data, bytes):
|
28
|
-
data = data.decode(CONFIG.security.encoding)
|
29
|
-
|
30
|
-
encryption_key: Optional[str] = cache.get(encryption_cache_key)
|
31
|
-
if not encryption_key:
|
32
|
-
return data
|
33
|
-
|
34
|
-
bytes_encryption_key: bytes = encryption_key.encode(
|
35
|
-
encoding=CONFIG.security.encoding
|
36
|
-
)
|
37
|
-
nonce: bytes = secrets.token_bytes(CONFIG.security.aes_gcm_nonce_length)
|
38
|
-
# b64encode the entire nonce and the encrypted message together
|
39
|
-
return bytes_to_b64_str(
|
40
|
-
nonce
|
41
|
-
+ encrypt_to_bytes_verify_secrets_length(data, bytes_encryption_key, nonce)
|
42
|
-
)
|
@@ -1 +0,0 @@
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[8593],{13687:function(e,t,i){(window.__NEXT_P=window.__NEXT_P||[]).push(["/privacy-requests/configure/messaging",function(){return i(61463)}])},77213:function(e,t,i){"use strict";i.d(t,{Z:function(){return m}});var n=i(24246),s=i(4454),r=i(88038),l=i.n(r),a=i(86677);i(27378);var o=i(25980),c=i(90867),u=i(77830),d=()=>{let e=(0,a.useRouter)();return(0,n.jsx)(s.xuv,{bg:"gray.50",border:"1px solid",borderColor:"blue.400",borderRadius:"md",justifyContent:"space-between",p:5,mb:5,mt:5,children:(0,n.jsxs)(s.xuv,{children:[(0,n.jsxs)(s.Kqy,{direction:{base:"column",sm:"row"},justifyContent:"space-between",children:[(0,n.jsx)(s.xvT,{fontWeight:"semibold",children:"Configure your storage and messaging provider"}),(0,n.jsx)(s.wpx,{onClick:()=>{e.push(u.fz)},children:"Configure"})]}),(0,n.jsxs)(s.xvT,{children:["Before Fides can process your privacy requests we need two simple steps to configure your storage and email client."," "]})]})})},m=e=>{let{children:t,title:i,padded:r=!0,mainProps:u}=e,m=(0,o.hz)(),p=(0,a.useRouter)(),h="/privacy-requests"===p.pathname||"/datastore-connection"===p.pathname,x=!(m.flags.privacyRequestsConfiguration&&h),{data:g}=(0,c.JE)(void 0,{skip:x}),{data:f}=(0,c.PW)(void 0,{skip:x}),y=m.flags.privacyRequestsConfiguration&&(!g||!f)&&h;return(0,n.jsxs)(s.kCb,{"data-testid":i,direction:"column",h:"100vh",children:[(0,n.jsxs)(l(),{children:[(0,n.jsxs)("title",{children:["Fides Admin UI - ",i]}),(0,n.jsx)("meta",{name:"description",content:"Privacy Engineering Platform"}),(0,n.jsx)("link",{rel:"icon",href:"/favicon.ico"})]}),(0,n.jsxs)(s.kCb,{as:"main",direction:"column",py:r?6:0,px:r?10:0,h:r?"calc(100% - 48px)":"full",flex:1,minWidth:0,overflow:"auto",...u,children:[y?(0,n.jsx)(d,{}):null,t]})]})}},58754:function(e,t,i){"use strict";var n=i(24246),s=i(4454),r=i(70788);t.Z=e=>{let{heading:t,breadcrumbItems:i,isSticky:l=!0,children:a,rightContent:o,style:c,...u}=e;return(0,n.jsxs)("div",{...u,style:l?{position:"sticky",top:"-24px",paddingTop:"24px",paddingBottom:"24px",paddingLeft:"40px",marginLeft:"-40px",paddingRight:"40px",marginRight:"-40px",marginTop:"-24px",left:0,zIndex:20,backgroundColor:"white",...c}:{paddingBottom:"24px",...c},children:[(0,n.jsxs)(s.jqI,{justify:"space-between",children:["string"==typeof t?(0,n.jsx)(s.lQT,{className:i||a?"pb-4":void 0,level:1,"data-testid":"page-heading",children:t}):t,o&&(0,n.jsx)("div",{"data-testid":"page-header-right-content",children:o})]}),!!i&&(0,n.jsx)(r.m,{className:a?"pb-4":void 0,items:i,"data-testid":"page-breadcrumb"}),a]})}},812:function(e,t,i){"use strict";i.d(t,{D4:function(){return r.D4},MM:function(){return m},Ot:function(){return c},c6:function(){return s},cj:function(){return h},e$:function(){return a},fn:function(){return o},iC:function(){return p},nU:function(){return d},tB:function(){return u}});var n,s,r=i(19043);let l="An unexpected error occurred. Please try again.",a=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:l;if((0,r.Bw)(e)){if((0,r.hE)(e.data))return e.data.detail;if((0,r.cz)(e.data)){var i;let t=null===(i=e.data.detail)||void 0===i?void 0:i[0];return"".concat(null==t?void 0:t.msg,": ").concat(null==t?void 0:t.loc)}if(409===e.status&&(0,r.Dy)(e.data)||404===e.status&&(0,r.XD)(e.data))return"".concat(e.data.detail.error," (").concat(e.data.detail.fides_key,")")}return t};function o(e){return"object"==typeof e&&null!=e&&"status"in e}function c(e){return"object"==typeof e&&null!=e&&"data"in e&&"string"==typeof e.data.detail}function u(e){return"object"==typeof e&&null!=e&&"data"in e&&Array.isArray(e.data.detail)}let d=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{status:500,message:l};if((0,r.oK)(e))return{status:e.originalStatus,message:e.data};if((0,r.Bw)(e)){let{status:i}=e;return{status:i,message:a(e,t.message)}}return t},m=e=>Object.entries(e).map(e=>({value:e[1],label:e[1]}));(n=s||(s={})).GVL="gvl",n.AC="gacp",n.COMPASS="compass";let p={gvl:{label:"GVL",fullName:"Global Vendor List"},gacp:{label:"AC",fullName:"Google Additional Consent List"},compass:{label:"",fullName:""}},h=e=>{let t=e.split(".")[0];return"gacp"===t?"gacp":"gvl"===t?"gvl":"compass"}},14047:function(e,t,i){"use strict";i.d(t,{H:function(){return r},V:function(){return n.V}});var n=i(84306),s=i(812);let r=()=>{let{errorAlert:e}=(0,n.V)();return{handleError:t=>{let i="An unexpected error occurred. Please try again.";(0,s.Ot)(t)?i=t.data.detail:(0,s.tB)(t)&&(i=t.data.detail[0].msg),e(i)}}}},84306:function(e,t,i){"use strict";i.d(t,{V:function(){return r}});var n=i(24246),s=i(4454);let r=()=>{let e=(0,s.pmc)();return{errorAlert:(t,i,r)=>{let l={...r,position:(null==r?void 0:r.position)||"top",render:e=>{let{onClose:r}=e;return(0,n.jsxs)(s.bZj,{alignItems:"normal",status:"error","data-testid":"error-alert",children:[(0,n.jsx)(s.zMQ,{}),(0,n.jsxs)(s.xuv,{children:[i&&(0,n.jsx)(s.CdC,{children:i}),(0,n.jsx)(s.XaZ,{children:t})]}),(0,n.jsx)(s.PZ7,{onClick:r,position:"relative",right:0,size:"sm",top:-1})]})}};(null==r?void 0:r.id)&&e.isActive(r.id)?e.update(r.id,l):e(l)},successAlert:(t,i,r)=>{let l={...r,position:(null==r?void 0:r.position)||"top",render:e=>{let{onClose:r}=e;return(0,n.jsxs)(s.bZj,{alignItems:"normal",status:"success",variant:"subtle","data-testid":"success-alert",children:[(0,n.jsx)(s.zMQ,{}),(0,n.jsxs)(s.xuv,{children:[i&&(0,n.jsx)(s.CdC,{children:i}),(0,n.jsx)(s.XaZ,{children:t})]}),(0,n.jsx)(s.PZ7,{onClick:r,position:"relative",right:0,size:"sm",top:-1})]})}};(null==r?void 0:r.id)&&e.isActive(r.id)?e.update(r.id,l):e(l)}}}},70788:function(e,t,i){"use strict";i.d(t,{m:function(){return c}});var n=i(24246),s=i(4454),r=i(79894),l=i.n(r),a=i(27378);let{Text:o}=s.AntTypography,c=e=>{let{items:t,...i}=e,r=(0,a.useMemo)(()=>null==t?void 0:t.map((e,i)=>{let r=i===t.length-1,a={...e},c=a.onClick&&!a.href;return("string"==typeof a.title&&(a.title=(0,n.jsx)(o,{style:{color:"inherit",maxWidth:r?void 0:400},ellipsis:!r,children:a.title})),c)?a.title=(0,n.jsx)(s.wpx,{type:"text",size:"small",icon:a.icon,onClick:a.onClick,className:"ant-breadcrumb-link -mt-px px-1 text-inherit",children:a.title}):(a.icon&&(a.title=(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("span",{className:"anticon align-text-bottom",children:a.icon}),a.title]})),a.href&&a.title&&(a.title=(0,n.jsx)(l(),{href:a.href,className:"ant-breadcrumb-link",children:a.title}),delete a.href)),a}),[t]);return(0,n.jsx)(s.zrq,{items:r,...i})}},71784:function(e,t,i){"use strict";i.d(t,{DE:function(){return o},I3:function(){return s},kN:function(){return l},qX:function(){return a},rE:function(){return r}});var n=i(61317);let s=[...new Map([[n.q2.APPROVED,"Approved"],[n.q2.AWAITING_EMAIL_SEND,"Awaiting email send"],[n.q2.CANCELED,"Canceled"],[n.q2.COMPLETE,"Completed"],[n.q2.DENIED,"Denied"],[n.q2.ERROR,"Error"],[n.q2.IN_PROCESSING,"In progress"],[n.q2.PENDING,"New"],[n.q2.PAUSED,"Paused"],[n.q2.IDENTITY_UNVERIFIED,"Unverified"],[n.q2.REQUIRES_INPUT,"Requires input"]])].map(e=>{let[t,i]=e;return{label:i,value:t}}),r=new Map([[n.Us.ACCESS,"Access"],[n.Us.ERASURE,"Erasure"],[n.Us.CONSENT,"Consent"],[n.Us.UPDATE,"Update"]]),l=[...r].map(e=>{let[t,i]=e;return{label:i,value:t}}),a={mailgun:"mailgun",twilio_email:"twilio_email",twilio_text:"twilio_text"},o={local:"local",s3:"s3",gcs:"gcs"}},61463:function(e,t,i){"use strict";i.r(t),i.d(t,{default:function(){return _}});var n=i(24246),s=i(4454),r=i(27378),l=i(812),a=i(14047),o=i(77213),c=i(77830),u=i(58754),d=i(7426),m=i(71784),p=i(90867),h=i(34090),x=i(40324),g=e=>{let{messagingDetails:t}=e,{successAlert:i}=(0,a.V)(),{handleError:r}=(0,a.H)(),[o]=(0,p.SU)(),c=t.service_type===m.qX.twilio_email||t.service_type===m.qX.mailgun,u=t.service_type===m.qX.twilio_text,d=async e=>{if(c){let t=await o({email:e.email});(0,l.D4)(t)?r(t.error):i("Test message successfully sent.")}if(u){let t=await o({phone_number:e.phone});(0,l.D4)(t)?r(t.error):i("Test message successfully sent.")}};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(s.izJ,{mt:10}),(0,n.jsx)(s.X6q,{fontSize:"md",fontWeight:"semibold",mt:10,mb:5,children:"Test connection"}),(0,n.jsx)(s.Kqy,{children:(0,n.jsx)(h.J9,{initialValues:{email:"",phone:""},onSubmit:d,children:e=>{let{isSubmitting:t,resetForm:i}=e;return(0,n.jsxs)(h.l0,{children:[c?(0,n.jsx)(x.j0,{name:"email",label:"Email",placeholder:"youremail@domain.com",isRequired:!0}):null,u?(0,n.jsx)(x.j0,{name:"phone",label:"Phone",placeholder:"+10000000000",isRequired:!0}):null,(0,n.jsxs)(s.xuv,{mt:10,children:[(0,n.jsx)(s.wpx,{onClick:()=>i(),className:"mr-2",children:"Cancel"}),(0,n.jsx)(s.wpx,{disabled:t,htmlType:"submit",type:"primary","data-testid":"save-btn",children:"Save"})]})]})}})})]})},f=()=>{var e;let{successAlert:t}=(0,a.V)(),[i,o]=(0,r.useState)(""),{handleError:c}=(0,a.H)(),{data:u}=(0,p.S3)({type:m.qX.mailgun}),[d]=(0,p.h9)(),[f]=(0,p.iI)(),y=async e=>{let i=await d({service_type:m.qX.mailgun,details:{is_eu_domain:"false",domain:e.domain}});(0,l.D4)(i)?c(i.error):(t("Mailgun email successfully updated. You can now enter your security key."),o("apiKey"))},j=async e=>{let i=await f({details:{mailgun_api_key:e.api_key},service_type:m.qX.mailgun});(0,l.D4)(i)?c(i.error):(t("Mailgun security key successfully updated."),o("testConnection"))},v={domain:null!==(e=null==u?void 0:u.details.domain)&&void 0!==e?e:""};return(0,n.jsxs)(s.xuv,{children:[(0,n.jsx)(s.X6q,{fontSize:"md",fontWeight:"semibold",mt:10,children:"Mailgun messaging configuration"}),(0,n.jsx)(s.Kqy,{children:(0,n.jsx)(h.J9,{initialValues:v,onSubmit:y,enableReinitialize:!0,children:e=>{let{isSubmitting:t,handleReset:i}=e;return(0,n.jsxs)(h.l0,{children:[(0,n.jsx)(s.Kqy,{mt:5,spacing:5,children:(0,n.jsx)(x.j0,{name:"domain",label:"Domain",placeholder:"Enter domain","data-testid":"option-twilio-domain",isRequired:!0})}),(0,n.jsxs)(s.xuv,{mt:10,children:[(0,n.jsx)(s.wpx,{onClick:i,className:"mr-2",children:"Cancel"}),(0,n.jsx)(s.wpx,{htmlType:"submit",disabled:t,type:"primary","data-testid":"save-btn",children:"Save"})]})]})}})}),"apiKey"===i||"testConnection"===i?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(s.izJ,{mt:10}),(0,n.jsx)(s.X6q,{fontSize:"md",fontWeight:"semibold",mt:10,children:"Security key"}),(0,n.jsx)(s.Kqy,{children:(0,n.jsx)(h.J9,{initialValues:{api_key:""},onSubmit:j,children:e=>{let{isSubmitting:t,handleReset:i}=e;return(0,n.jsxs)(h.l0,{children:[(0,n.jsx)(x.j0,{name:"api_key",label:"API key",type:"password",isRequired:!0}),(0,n.jsxs)(s.xuv,{mt:10,children:[(0,n.jsx)(s.wpx,{onClick:i,className:"mr-2",children:"Cancel"}),(0,n.jsx)(s.wpx,{disabled:t,htmlType:"submit",type:"primary","data-testid":"save-btn",children:"Save"})]})]})}})})]}):null,"testConnection"===i?(0,n.jsx)(g,{messagingDetails:u||{service_type:m.qX.mailgun}}):null]})},y=()=>{var e;let[t,i]=(0,r.useState)(""),{successAlert:o}=(0,a.V)(),{handleError:c}=(0,a.H)(),{data:u}=(0,p.S3)({type:m.qX.twilio_email}),[d]=(0,p.h9)(),[f]=(0,p.iI)(),y=async e=>{let t=await d({service_type:m.qX.twilio_email,details:{twilio_email_from:e.email}});(0,l.D4)(t)?c(t.error):(o("Twilio email successfully updated. You can now enter your security key."),i("configureTwilioEmailSecrets"))},j=async e=>{let t=await f({details:{twilio_api_key:e.api_key},service_type:m.qX.twilio_email});(0,l.D4)(t)?c(t.error):(o("Twilio email secrets successfully updated."),i("testConnection"))},v={email:null!==(e=null==u?void 0:u.details.twilio_email_from)&&void 0!==e?e:""};return(0,n.jsxs)(s.xuv,{children:[(0,n.jsx)(s.X6q,{fontSize:"md",fontWeight:"semibold",mt:10,children:"Twilio Email messaging configuration"}),(0,n.jsx)(s.Kqy,{children:(0,n.jsx)(h.J9,{initialValues:v,onSubmit:y,enableReinitialize:!0,children:e=>{let{isSubmitting:t,handleReset:i}=e;return(0,n.jsxs)(h.l0,{children:[(0,n.jsx)(s.Kqy,{mt:5,spacing:5,children:(0,n.jsx)(x.j0,{name:"email",label:"Email",placeholder:"Enter email",isRequired:!0})}),(0,n.jsxs)(s.xuv,{mt:10,children:[(0,n.jsx)(s.wpx,{onClick:()=>i(),className:"mr-2",children:"Cancel"}),(0,n.jsx)(s.wpx,{disabled:t,htmlType:"submit",type:"primary","data-testid":"save-btn",children:"Save"})]})]})}})}),"configureTwilioEmailSecrets"===t||"testConnection"===t?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(s.izJ,{mt:10}),(0,n.jsx)(s.X6q,{fontSize:"md",fontWeight:"semibold",mt:10,children:"Security key"}),(0,n.jsx)(s.Kqy,{children:(0,n.jsx)(h.J9,{initialValues:{api_key:""},onSubmit:j,children:e=>{let{isSubmitting:t,handleReset:i}=e;return(0,n.jsxs)(h.l0,{children:[(0,n.jsx)(s.Kqy,{mt:5,spacing:5,children:(0,n.jsx)(x.j0,{name:"api_key",label:"API key",type:"password",isRequired:!0})}),(0,n.jsxs)(s.xuv,{mt:10,children:[(0,n.jsx)(s.wpx,{onClick:()=>i(),className:"mr-2",children:"Cancel"}),(0,n.jsx)(s.wpx,{disabled:t,htmlType:"submit",type:"primary","data-testid":"save-btn",children:"Save"})]})]})}})})]}):null,"testConnection"===t?(0,n.jsx)(g,{messagingDetails:u||{service_type:m.qX.twilio_email}}):null]})},j=()=>{let{successAlert:e}=(0,a.V)(),{handleError:t}=(0,a.H)(),[i,o]=(0,r.useState)(""),{data:c}=(0,p.S3)({type:"twilio_text"}),[u]=(0,p.iI)(),d=async i=>{let n=await u({details:{twilio_account_sid:i.account_sid,twilio_auth_token:i.auth_token,twilio_messaging_service_sid:i.messaging_service_sid,twilio_sender_phone_number:i.phone},service_type:m.qX.twilio_text});(0,l.D4)(n)?t(n.error):(e("Twilio text secrets successfully updated."),o("testConnection"))};return(0,n.jsxs)(s.xuv,{children:[(0,n.jsx)(s.X6q,{fontSize:"md",fontWeight:"semibold",mt:10,children:"Twilio SMS messaging configuration"}),(0,n.jsx)(s.Kqy,{children:(0,n.jsx)(h.J9,{initialValues:{account_sid:"",auth_token:"",messaging_service_sid:"",phone:""},onSubmit:d,enableReinitialize:!0,children:e=>{let{isSubmitting:t,handleReset:i}=e;return(0,n.jsxs)(h.l0,{children:[(0,n.jsxs)(s.Kqy,{mt:5,spacing:5,children:[(0,n.jsx)(x.j0,{name:"account_sid",label:"Account SID",placeholder:"Enter account SID",isRequired:!0}),(0,n.jsx)(x.j0,{name:"auth_token",label:"Auth token",placeholder:"Enter auth token",type:"password",isRequired:!0}),(0,n.jsx)(x.j0,{name:"messaging_service_sid",label:"Messaging Service SID",placeholder:"Enter messaging service SID"}),(0,n.jsx)(x.j0,{name:"phone",label:"Phone Number",placeholder:"Enter phone number"})]}),(0,n.jsxs)(s.xuv,{mt:10,children:[(0,n.jsx)(s.wpx,{onClick:()=>i(),className:"mr-2",children:"Cancel"}),(0,n.jsx)(s.wpx,{disabled:t,htmlType:"submit",type:"primary","data-testid":"save-btn",children:"Save"})]})]})}})}),"testConnection"===i?(0,n.jsx)(g,{messagingDetails:c||{service_type:m.qX.twilio_text}}):null]})},v=()=>{let{successAlert:e}=(0,a.V)(),{handleError:t}=(0,a.H)(),[i,h]=(0,r.useState)(""),[x]=(0,p.h9)(),[g]=(0,d.L)(),{data:v}=(0,p.JE)();(0,r.useEffect)(()=>{v&&h(null==v?void 0:v.service_type)},[v]);let _=async i=>{let{value:n}=i.target,s=await g({notifications:{notification_service_type:n,send_request_completion_notification:!0,send_request_receipt_notification:!0,send_request_review_notification:!0},execution:{subject_identity_verification_required:!0}});if((0,l.D4)(s))t(s.error);else if(n!==m.qX.twilio_text)h(n);else{let i=await x({service_type:m.qX.twilio_text});(0,l.D4)(i)?t(i.error):(e("Messaging provider saved successfully."),h(n))}};return(0,n.jsxs)(o.Z,{title:"Configure Privacy Requests - Messaging",children:[(0,n.jsx)(u.Z,{heading:"Privacy Requests",breadcrumbItems:[{title:"All requests",href:c.Jw},{title:"Configure requests",href:c.fz},{title:"Messaging"}]}),(0,n.jsx)(s.X6q,{mb:5,fontSize:"md",fontWeight:"semibold",children:"Configure your messaging provider"}),(0,n.jsxs)(s.xuv,{display:"flex",flexDirection:"column",width:"50%",children:[(0,n.jsxs)(s.xuv,{children:["Fides requires a messsaging provider for sending processing notices to privacy request subjects, and allows for Subject Identity Verification in privacy requests. Please follow the"," ",(0,n.jsx)(s.xvT,{as:"span",color:"complimentary.500",children:"documentation"})," ","to setup a messaging service that Fides supports. Ensure you have completed the setup for the preferred messaging provider and have the details handy prior to the following steps."]}),(0,n.jsx)(s.X6q,{fontSize:"md",fontWeight:"semibold",mt:10,children:"Choose service type to configure"}),(0,n.jsx)(s.y02.Group,{onChange:_,value:i,"data-testid":"privacy-requests-messaging-provider-selection",className:"p-3",children:(0,n.jsxs)(s.jqI,{children:[(0,n.jsx)(s.y02,{value:m.qX.mailgun,"data-testid":"option-mailgun",children:"Mailgun Email"},m.qX.mailgun),(0,n.jsx)(s.y02,{value:m.qX.twilio_email,"data-testid":"option-twilio-email",children:"Twilio Email"},m.qX.twilio_email),(0,n.jsx)(s.y02,{value:m.qX.twilio_text,"data-testid":"option-twilio-sms",children:"Twilio SMS"},m.qX.twilio_text)]})}),i===m.qX.mailgun?(0,n.jsx)(f,{}):null,i===m.qX.twilio_email?(0,n.jsx)(y,{}):null,i===m.qX.twilio_text?(0,n.jsx)(j,{}):null]})]})},_=()=>(0,n.jsx)(v,{})},19043:function(e,t,i){"use strict";i.d(t,{Bw:function(){return l},D4:function(){return s},Dy:function(){return o},XD:function(){return c},cz:function(){return u},hE:function(){return a},oK:function(){return r}});var n=i(76649);let s=e=>"error"in e,r=e=>(0,n.Ln)({status:"string"},e)&&"PARSING_ERROR"===e.status,l=e=>(0,n.Ln)({status:"number",data:{}},e),a=e=>(0,n.Ln)({detail:"string"},e),o=e=>(0,n.Ln)({detail:{error:"string",resource_type:"string",fides_key:"string"}},e),c=e=>(0,n.Ln)({detail:{error:"string",resource_type:"string",fides_key:"string"}},e),u=e=>(0,n.Ln)({detail:[{loc:["string","number"],msg:"string",type:"string"}]},e)},76649:function(e,t,i){"use strict";i.d(t,{Ln:function(){return n}});let n=(e,t)=>r(e,t),s=Symbol("SOME"),r=(e,t)=>"string"==typeof e?e===typeof t:Array.isArray(e)?s in e?e.some(e=>r(e,t)):!!Array.isArray(t)&&(0===e.length||t.every(t=>e.some(e=>r(e,t)))):"object"==typeof t&&null!==t&&Object.entries(e).every(([e,i])=>r(i,t[e]));class l{static narrow(e){return new l(t=>n(e,t))}constructor(e){this.NF=void 0,this.NF=e}satisfied(e){return this.NF(e)}build(e){return e}and(e){let t=this.NF,i=e instanceof l?e.NF:e instanceof Function?e:t=>n(e,t);return new l(e=>t(e)&&i(e))}}new l(e=>!0)}},function(e){e.O(0,[2888,9774,179],function(){return e(e.s=13687)}),_N_E=e.O()}]);
|
@@ -1 +0,0 @@
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[5979],{23663:function(e,t,i){(window.__NEXT_P=window.__NEXT_P||[]).push(["/privacy-requests/configure/storage",function(){return i(64665)}])},77213:function(e,t,i){"use strict";i.d(t,{Z:function(){return m}});var n=i(24246),s=i(4454),r=i(88038),a=i.n(r),l=i(86677);i(27378);var o=i(25980),d=i(90867),c=i(77830),u=()=>{let e=(0,l.useRouter)();return(0,n.jsx)(s.xuv,{bg:"gray.50",border:"1px solid",borderColor:"blue.400",borderRadius:"md",justifyContent:"space-between",p:5,mb:5,mt:5,children:(0,n.jsxs)(s.xuv,{children:[(0,n.jsxs)(s.Kqy,{direction:{base:"column",sm:"row"},justifyContent:"space-between",children:[(0,n.jsx)(s.xvT,{fontWeight:"semibold",children:"Configure your storage and messaging provider"}),(0,n.jsx)(s.wpx,{onClick:()=>{e.push(c.fz)},children:"Configure"})]}),(0,n.jsxs)(s.xvT,{children:["Before Fides can process your privacy requests we need two simple steps to configure your storage and email client."," "]})]})})},m=e=>{let{children:t,title:i,padded:r=!0,mainProps:c}=e,m=(0,o.hz)(),h=(0,l.useRouter)(),p="/privacy-requests"===h.pathname||"/datastore-connection"===h.pathname,x=!(m.flags.privacyRequestsConfiguration&&p),{data:v}=(0,d.JE)(void 0,{skip:x}),{data:f}=(0,d.PW)(void 0,{skip:x}),j=m.flags.privacyRequestsConfiguration&&(!v||!f)&&p;return(0,n.jsxs)(s.kCb,{"data-testid":i,direction:"column",h:"100vh",children:[(0,n.jsxs)(a(),{children:[(0,n.jsxs)("title",{children:["Fides Admin UI - ",i]}),(0,n.jsx)("meta",{name:"description",content:"Privacy Engineering Platform"}),(0,n.jsx)("link",{rel:"icon",href:"/favicon.ico"})]}),(0,n.jsxs)(s.kCb,{as:"main",direction:"column",py:r?6:0,px:r?10:0,h:r?"calc(100% - 48px)":"full",flex:1,minWidth:0,overflow:"auto",...c,children:[j?(0,n.jsx)(u,{}):null,t]})]})}},58754:function(e,t,i){"use strict";var n=i(24246),s=i(4454),r=i(70788);t.Z=e=>{let{heading:t,breadcrumbItems:i,isSticky:a=!0,children:l,rightContent:o,style:d,...c}=e;return(0,n.jsxs)("div",{...c,style:a?{position:"sticky",top:"-24px",paddingTop:"24px",paddingBottom:"24px",paddingLeft:"40px",marginLeft:"-40px",paddingRight:"40px",marginRight:"-40px",marginTop:"-24px",left:0,zIndex:20,backgroundColor:"white",...d}:{paddingBottom:"24px",...d},children:[(0,n.jsxs)(s.jqI,{justify:"space-between",children:["string"==typeof t?(0,n.jsx)(s.lQT,{className:i||l?"pb-4":void 0,level:1,"data-testid":"page-heading",children:t}):t,o&&(0,n.jsx)("div",{"data-testid":"page-header-right-content",children:o})]}),!!i&&(0,n.jsx)(r.m,{className:l?"pb-4":void 0,items:i,"data-testid":"page-breadcrumb"}),l]})}},97181:function(e,t,i){"use strict";i.d(t,{d:function(){return d}});var n=i(24246),s=i(4454),r=i(34090),a=i(27378),l=i(46238),o=i(40324);let d=e=>{let{name:t,label:i,labelProps:d,tooltip:c,isRequired:u,layout:m="inline",helperText:h,...p}=e,[x,v,{setValue:f}]=(0,r.U$)(t),j=!!(v.touched&&v.error),[g,y]=(0,a.useState)("");x.value||"tags"!==p.mode&&"multiple"!==p.mode||(x.value=[]),"tags"===p.mode&&"string"==typeof x.value&&(x.value=[x.value]);let _="tags"===p.mode?(e,t)=>e?e.value!==g||x.value.includes(g)?p.optionRender?p.optionRender(e,t):e.label:'Create "'.concat(g,'"'):void 0:p.optionRender||void 0,b=e=>{y(e),p.onSearch&&p.onSearch(e)},C=(e,t)=>{f(e),p.onChange&&p.onChange(e,t)};return"inline"===m?(0,n.jsx)(s.NIc,{isInvalid:j,isRequired:u,children:(0,n.jsxs)(s.rjZ,{templateColumns:i?"1fr 3fr":"1fr",children:[i?(0,n.jsx)(o.__,{htmlFor:p.id||t,...d,children:i}):null,(0,n.jsxs)(s.jqI,{align:"center",children:[(0,n.jsxs)(s.jqI,{vertical:!0,flex:1,className:"mr-2",children:[(0,n.jsx)(s.WPr,{...x,id:p.id||t,"data-testid":"controlled-select-".concat(x.name),...p,optionRender:_,onSearch:"tags"===p.mode?b:void 0,onChange:C,value:x.value||void 0,status:j?"error":void 0}),h&&(0,n.jsx)(s.Q6r,{children:h}),(0,n.jsx)(o.Bc,{isInvalid:j,message:v.error,fieldName:x.name})]}),(0,n.jsx)(l.b,{label:c,className:j?"mt-2 self-start":void 0})]})]})}):(0,n.jsx)(s.NIc,{isInvalid:j,isRequired:u,children:(0,n.jsxs)(s.gCW,{alignItems:"start",children:[(0,n.jsxs)(s.jqI,{align:"center",children:[i?(0,n.jsx)(o.__,{htmlFor:p.id||t,fontSize:"xs",my:0,mr:1,...d,children:i}):null,(0,n.jsx)(l.b,{label:c})]}),(0,n.jsx)(s.WPr,{...x,id:p.id||t,"data-testid":"controlled-select-".concat(x.name),...p,optionRender:_,onSearch:"tags"===p.mode?b:void 0,onChange:C,value:x.value||void 0,status:j?"error":void 0}),h&&(0,n.jsx)(s.Q6r,{style:{marginTop:0},children:h}),(0,n.jsx)(o.Bc,{isInvalid:j,message:v.error,fieldName:x.name})]})})}},812:function(e,t,i){"use strict";i.d(t,{D4:function(){return r.D4},MM:function(){return m},Ot:function(){return d},c6:function(){return s},cj:function(){return p},e$:function(){return l},fn:function(){return o},iC:function(){return h},nU:function(){return u},tB:function(){return c}});var n,s,r=i(19043);let a="An unexpected error occurred. Please try again.",l=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:a;if((0,r.Bw)(e)){if((0,r.hE)(e.data))return e.data.detail;if((0,r.cz)(e.data)){var i;let t=null===(i=e.data.detail)||void 0===i?void 0:i[0];return"".concat(null==t?void 0:t.msg,": ").concat(null==t?void 0:t.loc)}if(409===e.status&&(0,r.Dy)(e.data)||404===e.status&&(0,r.XD)(e.data))return"".concat(e.data.detail.error," (").concat(e.data.detail.fides_key,")")}return t};function o(e){return"object"==typeof e&&null!=e&&"status"in e}function d(e){return"object"==typeof e&&null!=e&&"data"in e&&"string"==typeof e.data.detail}function c(e){return"object"==typeof e&&null!=e&&"data"in e&&Array.isArray(e.data.detail)}let u=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{status:500,message:a};if((0,r.oK)(e))return{status:e.originalStatus,message:e.data};if((0,r.Bw)(e)){let{status:i}=e;return{status:i,message:l(e,t.message)}}return t},m=e=>Object.entries(e).map(e=>({value:e[1],label:e[1]}));(n=s||(s={})).GVL="gvl",n.AC="gacp",n.COMPASS="compass";let h={gvl:{label:"GVL",fullName:"Global Vendor List"},gacp:{label:"AC",fullName:"Google Additional Consent List"},compass:{label:"",fullName:""}},p=e=>{let t=e.split(".")[0];return"gacp"===t?"gacp":"gvl"===t?"gvl":"compass"}},14047:function(e,t,i){"use strict";i.d(t,{H:function(){return r},V:function(){return n.V}});var n=i(84306),s=i(812);let r=()=>{let{errorAlert:e}=(0,n.V)();return{handleError:t=>{let i="An unexpected error occurred. Please try again.";(0,s.Ot)(t)?i=t.data.detail:(0,s.tB)(t)&&(i=t.data.detail[0].msg),e(i)}}}},84306:function(e,t,i){"use strict";i.d(t,{V:function(){return r}});var n=i(24246),s=i(4454);let r=()=>{let e=(0,s.pmc)();return{errorAlert:(t,i,r)=>{let a={...r,position:(null==r?void 0:r.position)||"top",render:e=>{let{onClose:r}=e;return(0,n.jsxs)(s.bZj,{alignItems:"normal",status:"error","data-testid":"error-alert",children:[(0,n.jsx)(s.zMQ,{}),(0,n.jsxs)(s.xuv,{children:[i&&(0,n.jsx)(s.CdC,{children:i}),(0,n.jsx)(s.XaZ,{children:t})]}),(0,n.jsx)(s.PZ7,{onClick:r,position:"relative",right:0,size:"sm",top:-1})]})}};(null==r?void 0:r.id)&&e.isActive(r.id)?e.update(r.id,a):e(a)},successAlert:(t,i,r)=>{let a={...r,position:(null==r?void 0:r.position)||"top",render:e=>{let{onClose:r}=e;return(0,n.jsxs)(s.bZj,{alignItems:"normal",status:"success",variant:"subtle","data-testid":"success-alert",children:[(0,n.jsx)(s.zMQ,{}),(0,n.jsxs)(s.xuv,{children:[i&&(0,n.jsx)(s.CdC,{children:i}),(0,n.jsx)(s.XaZ,{children:t})]}),(0,n.jsx)(s.PZ7,{onClick:r,position:"relative",right:0,size:"sm",top:-1})]})}};(null==r?void 0:r.id)&&e.isActive(r.id)?e.update(r.id,a):e(a)}}}},70788:function(e,t,i){"use strict";i.d(t,{m:function(){return d}});var n=i(24246),s=i(4454),r=i(79894),a=i.n(r),l=i(27378);let{Text:o}=s.AntTypography,d=e=>{let{items:t,...i}=e,r=(0,l.useMemo)(()=>null==t?void 0:t.map((e,i)=>{let r=i===t.length-1,l={...e},d=l.onClick&&!l.href;return("string"==typeof l.title&&(l.title=(0,n.jsx)(o,{style:{color:"inherit",maxWidth:r?void 0:400},ellipsis:!r,children:l.title})),d)?l.title=(0,n.jsx)(s.wpx,{type:"text",size:"small",icon:l.icon,onClick:l.onClick,className:"ant-breadcrumb-link -mt-px px-1 text-inherit",children:l.title}):(l.icon&&(l.title=(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("span",{className:"anticon align-text-bottom",children:l.icon}),l.title]})),l.href&&l.title&&(l.title=(0,n.jsx)(a(),{href:l.href,className:"ant-breadcrumb-link",children:l.title}),delete l.href)),l}),[t]);return(0,n.jsx)(s.zrq,{items:r,...i})}},71784:function(e,t,i){"use strict";i.d(t,{DE:function(){return o},I3:function(){return s},kN:function(){return a},qX:function(){return l},rE:function(){return r}});var n=i(61317);let s=[...new Map([[n.q2.APPROVED,"Approved"],[n.q2.AWAITING_EMAIL_SEND,"Awaiting email send"],[n.q2.CANCELED,"Canceled"],[n.q2.COMPLETE,"Completed"],[n.q2.DENIED,"Denied"],[n.q2.ERROR,"Error"],[n.q2.IN_PROCESSING,"In progress"],[n.q2.PENDING,"New"],[n.q2.PAUSED,"Paused"],[n.q2.IDENTITY_UNVERIFIED,"Unverified"],[n.q2.REQUIRES_INPUT,"Requires input"]])].map(e=>{let[t,i]=e;return{label:i,value:t}}),r=new Map([[n.Us.ACCESS,"Access"],[n.Us.ERASURE,"Erasure"],[n.Us.CONSENT,"Consent"],[n.Us.UPDATE,"Update"]]),a=[...r].map(e=>{let[t,i]=e;return{label:i,value:t}}),l={mailgun:"mailgun",twilio_email:"twilio_email",twilio_text:"twilio_text"},o={local:"local",s3:"s3",gcs:"gcs"}},64665:function(e,t,i){"use strict";i.r(t),i.d(t,{default:function(){return y}});var n=i(24246),s=i(4454),r=i(27378),a=i(812),l=i(14047),o=i(77213),d=i(77830),c=i(58754),u=i(7426),m=i(71784),h=i(90867),p=i(34090),x=i(97181),v=i(40324),f=e=>{var t,i,o,d,c;let{storageDetails:u}=e,[f,j]=(0,r.useState)(""),[g]=(0,h.gC)(),[y]=(0,h.cf)(),{handleError:_}=(0,l.H)(),{successAlert:b}=(0,l.V)(),C={type:m.DE.gcs,auth_method:null!==(o=null==u?void 0:null===(t=u.details)||void 0===t?void 0:t.auth_method)&&void 0!==o?o:"",bucket:null!==(d=null==u?void 0:null===(i=u.details)||void 0===i?void 0:i.bucket)&&void 0!==d?d:"",format:null!==(c=null==u?void 0:u.format)&&void 0!==c?c:""},k=async e=>{let t=await g({type:m.DE.gcs,details:{auth_method:e.auth_method,bucket:e.bucket},format:e.format});(0,a.D4)(t)?_(t.error):(j(e.auth_method),b("Google Cloud Storage credentials successfully updated."))},w=async e=>{let t=e.private_key.trim();t.includes("\\n")&&(t=t.replace(/\\n/g,"\n"));let i=await y({details:{type:e.type,project_id:e.project_id,private_key_id:e.private_key_id,private_key:t,client_email:e.client_email,client_id:e.client_id,auth_uri:e.auth_uri,token_uri:e.token_uri,auth_provider_x509_cert_url:e.auth_provider_x509_cert_url,client_x509_cert_url:e.client_x509_cert_url,universe_domain:e.universe_domain},type:m.DE.gcs});(0,a.D4)(i)?_(i.error):b("Google Cloud Storage secrets successfully updated.")};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(s.X6q,{fontSize:"md",fontWeight:"semibold",mt:10,children:"Google Cloud Storage configuration"}),(0,n.jsx)(s.Kqy,{children:(0,n.jsx)(p.J9,{initialValues:C,onSubmit:k,enableReinitialize:!0,children:e=>{let{isSubmitting:t,handleReset:i}=e;return(0,n.jsxs)(p.l0,{children:[(0,n.jsxs)(s.Kqy,{mt:5,spacing:5,children:[(0,n.jsx)(x.d,{name:"format",label:"Format",options:[{label:"json",value:"json"},{label:"csv",value:"csv"}],"data-testid":"format",isRequired:!0}),(0,n.jsx)(x.d,{name:"auth_method",label:"Auth method",options:[{label:"Service Account Keys",value:"service_account_keys"},{label:"Application Default Credentials",value:"adc"}],"data-testid":"auth_method",isRequired:!0}),(0,n.jsx)(v.j0,{"data-testid":"bucket",name:"bucket",label:"Bucket",isRequired:!0})]}),(0,n.jsx)(s.wpx,{onClick:()=>i(),className:"mr-2 mt-5",children:"Cancel"}),(0,n.jsx)(s.wpx,{htmlType:"submit",className:"mt-5",disabled:t,type:"primary","data-testid":"save-btn",children:"Save"})]})}})}),"service_account_keys"===f&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(s.izJ,{mt:5}),(0,n.jsx)(s.X6q,{fontSize:"md",fontWeight:"semibold",mt:5,children:"Storage destination"}),(0,n.jsx)(s.Kqy,{children:(0,n.jsx)(p.J9,{initialValues:{type:"",project_id:"",private_key_id:"",private_key:"",client_email:"",client_id:"",auth_uri:"",token_uri:"",auth_provider_x509_cert_url:"",client_x509_cert_url:"",universe_domain:""},onSubmit:w,children:e=>{let{isSubmitting:t,handleReset:i}=e;return(0,n.jsxs)(p.l0,{children:[(0,n.jsxs)(s.Kqy,{mt:5,spacing:5,children:[(0,n.jsx)(v.j0,{name:"type",label:"Type"}),(0,n.jsx)(v.j0,{name:"project_id",label:"Project ID"}),(0,n.jsx)(v.j0,{name:"private_key_id",label:"Private key ID",type:"password"}),(0,n.jsx)(v.j0,{name:"private_key",label:"Private key",type:"password"}),(0,n.jsx)(v.j0,{name:"client_email",label:"Client email"}),(0,n.jsx)(v.j0,{name:"client_id",label:"Client ID"}),(0,n.jsx)(v.j0,{name:"auth_uri",label:"Auth URI"}),(0,n.jsx)(v.j0,{name:"token_uri",label:"Token URI"}),(0,n.jsx)(v.j0,{name:"auth_provider_x509_cert_url",label:"Auth provider x509 cert URL"}),(0,n.jsx)(v.j0,{name:"client_x509_cert_url",label:"Client x509 cert URL"}),(0,n.jsx)(v.j0,{name:"universe_domain",label:"Universe domain"})]}),(0,n.jsxs)(s.xuv,{mt:10,children:[(0,n.jsx)(s.wpx,{onClick:()=>i(),className:"mr-2 mt-5",children:"Cancel"}),(0,n.jsx)(s.wpx,{disabled:t,htmlType:"submit",type:"primary",className:"mt-5","data-testid":"save-btn",children:"Save"})]})]})}})})]})]})},j=e=>{var t,i,o,d,c;let{storageDetails:u}=e,[f,j]=(0,r.useState)(""),[g]=(0,h.gC)(),[y]=(0,h.cf)(),{handleError:_}=(0,l.H)(),{successAlert:b}=(0,l.V)(),C={type:m.DE.s3,auth_method:null!==(o=null==u?void 0:null===(t=u.details)||void 0===t?void 0:t.auth_method)&&void 0!==o?o:"",bucket:null!==(d=null==u?void 0:null===(i=u.details)||void 0===i?void 0:i.bucket)&&void 0!==d?d:"",format:null!==(c=null==u?void 0:u.format)&&void 0!==c?c:""},k=async e=>{let t=await g({type:m.DE.s3,details:{auth_method:e.auth_method,bucket:e.bucket},format:e.format});(0,a.D4)(t)?_(t.error):(j(e.auth_method),b("S3 storage credentials successfully updated."))},w=async e=>{let t=await y({details:{aws_access_key_id:e.aws_access_key_id,aws_secret_access_key:e.aws_secret_access_key},type:m.DE.s3});(0,a.D4)(t)?_(t.error):b("S3 storage secrets successfully updated.")};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(s.X6q,{fontSize:"md",fontWeight:"semibold",mt:10,children:"S3 storage configuration"}),(0,n.jsx)(s.Kqy,{children:(0,n.jsx)(p.J9,{initialValues:C,onSubmit:k,enableReinitialize:!0,children:e=>{let{isSubmitting:t,handleReset:i}=e;return(0,n.jsxs)(p.l0,{children:[(0,n.jsxs)(s.Kqy,{mt:5,spacing:5,children:[(0,n.jsx)(x.d,{name:"format",label:"Format",options:[{label:"json",value:"json"},{label:"csv",value:"csv"}],"data-testid":"format",isRequired:!0}),(0,n.jsx)(x.d,{name:"auth_method",label:"Auth method",options:[{label:"secret_keys",value:"secret_keys"},{label:"automatic",value:"automatic"}],"data-testid":"auth_method",isRequired:!0}),(0,n.jsx)(v.j0,{"data-testid":"bucket",name:"bucket",label:"Bucket",isRequired:!0})]}),(0,n.jsx)(s.wpx,{onClick:()=>i(),className:"mr-2 mt-5",children:"Cancel"}),(0,n.jsx)(s.wpx,{htmlType:"submit",className:"mt-5",disabled:t,type:"primary","data-testid":"save-btn",children:"Save"})]})}})}),"secret_keys"===f?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(s.izJ,{mt:5}),(0,n.jsx)(s.X6q,{fontSize:"md",fontWeight:"semibold",mt:5,children:"Storage destination"}),(0,n.jsx)(s.Kqy,{children:(0,n.jsx)(p.J9,{initialValues:{aws_access_key_id:"",aws_secret_access_key:""},onSubmit:w,children:e=>{let{isSubmitting:t,handleReset:i}=e;return(0,n.jsxs)(p.l0,{children:[(0,n.jsxs)(s.Kqy,{mt:5,spacing:5,children:[(0,n.jsx)(v.j0,{name:"aws_access_key_id",label:"AWS access key ID"}),(0,n.jsx)(v.j0,{name:"aws_secret_access_key",label:"AWS secret access key",type:"password"})]}),(0,n.jsxs)(s.xuv,{mt:10,children:[(0,n.jsx)(s.wpx,{onClick:()=>i(),className:"mr-2 mt-5",children:"Cancel"}),(0,n.jsx)(s.wpx,{disabled:t,htmlType:"submit",type:"primary",className:"mt-5","data-testid":"save-btn",children:"Save"})]})]})}})})]}):null]})},g=()=>{let{successAlert:e}=(0,l.V)(),{handleError:t}=(0,l.H)(),[i,p]=(0,r.useState)(""),{data:x}=(0,h.PW)(),{data:v}=(0,h.Au)({type:i}),[g,{isLoading:y}]=(0,h.gC)(),[_]=(0,u.L)();(0,r.useEffect)(()=>{x&&p(x.type)},[x]);let b=async i=>{let{value:n}=i.target;if(n===m.DE.local){let i=await g({type:n,details:{},format:"json"});(0,a.D4)(i)?t(i.error):e("Configured storage details successfully.")}let s=await _({storage:{active_default_storage_type:n}});(0,a.D4)(s)?t(s.error):p(n)},C={s3:j,gcs:f}[i];return(0,n.jsxs)(o.Z,{title:"Configure Privacy Requests - Storage",children:[(0,n.jsx)(c.Z,{heading:"Privacy Requests",breadcrumbItems:[{title:"All requests",href:d.Jw},{title:"Configure requests",href:d.fz},{title:"Storage"}]}),(0,n.jsx)(s.X6q,{mb:5,fontSize:"md",fontWeight:"semibold",children:"Configure storage"}),(0,n.jsxs)(s.xuv,{display:"flex",flexDirection:"column",width:"50%",children:[(0,n.jsx)(s.xuv,{mb:5,children:"Fides requires a storage destination to store and share the results of privacy requests. For a production setup, it is highly recommended to have S3 as a storage destination. Ensure you have completed the setup for the storage destination and have the details handy prior to the following steps."}),(0,n.jsxs)(s.xuv,{children:["To configure a Storage destination, first choose a method to store your results. Fides currently supports"," ",(0,n.jsx)(s.xvT,{as:"span",color:"complimentary.500",children:"Local"}),", ",(0,n.jsx)(s.xvT,{as:"span",color:"complimentary.500",children:"S3"})," ","and"," ",(0,n.jsx)(s.xvT,{as:"span",color:"complimentary.500",children:"GCS"})," ","storage methods."]}),(0,n.jsx)(s.X6q,{fontSize:"md",fontWeight:"semibold",mt:10,children:"Choose storage type to configure"}),(0,n.jsx)(s.y02.Group,{disabled:y,onChange:b,value:i,"data-testid":"privacy-requests-storage-selection",className:"p-3",children:(0,n.jsxs)(s.jqI,{children:[(0,n.jsx)(s.y02,{value:"local","data-testid":"option-local",children:"Local"},"local"),(0,n.jsx)(s.y02,{value:"s3","data-testid":"option-s3",children:"S3"},"s3"),(0,n.jsx)(s.y02,{value:"gcs","data-testid":"option-gcs",children:"GCS"},"gcs")]})}),C&&v&&(0,n.jsx)(C,{storageDetails:v})]})]})},y=()=>(0,n.jsx)(g,{})},19043:function(e,t,i){"use strict";i.d(t,{Bw:function(){return a},D4:function(){return s},Dy:function(){return o},XD:function(){return d},cz:function(){return c},hE:function(){return l},oK:function(){return r}});var n=i(76649);let s=e=>"error"in e,r=e=>(0,n.Ln)({status:"string"},e)&&"PARSING_ERROR"===e.status,a=e=>(0,n.Ln)({status:"number",data:{}},e),l=e=>(0,n.Ln)({detail:"string"},e),o=e=>(0,n.Ln)({detail:{error:"string",resource_type:"string",fides_key:"string"}},e),d=e=>(0,n.Ln)({detail:{error:"string",resource_type:"string",fides_key:"string"}},e),c=e=>(0,n.Ln)({detail:[{loc:["string","number"],msg:"string",type:"string"}]},e)},76649:function(e,t,i){"use strict";i.d(t,{Ln:function(){return n}});let n=(e,t)=>r(e,t),s=Symbol("SOME"),r=(e,t)=>"string"==typeof e?e===typeof t:Array.isArray(e)?s in e?e.some(e=>r(e,t)):!!Array.isArray(t)&&(0===e.length||t.every(t=>e.some(e=>r(e,t)))):"object"==typeof t&&null!==t&&Object.entries(e).every(([e,i])=>r(i,t[e]));class a{static narrow(e){return new a(t=>n(e,t))}constructor(e){this.NF=void 0,this.NF=e}satisfied(e){return this.NF(e)}build(e){return e}and(e){let t=this.NF,i=e instanceof a?e.NF:e instanceof Function?e:t=>n(e,t);return new a(e=>t(e)&&i(e))}}new a(e=>!0)}},function(e){e.O(0,[2888,9774,179],function(){return e(e.s=23663)}),_N_E=e.O()}]);
|