ethyca-fides 2.59.2b3__py2.py3-none-any.whl → 2.59.2rc0__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.59.2b3.dist-info → ethyca_fides-2.59.2rc0.dist-info}/METADATA +2 -2
- {ethyca_fides-2.59.2b3.dist-info → ethyca_fides-2.59.2rc0.dist-info}/RECORD +212 -215
- {ethyca_fides-2.59.2b3.dist-info → ethyca_fides-2.59.2rc0.dist-info}/WHEEL +1 -1
- fides/_version.py +3 -3
- fides/api/api/v1/endpoints/storage_endpoints.py +6 -7
- fides/api/db/system.py +121 -1
- fides/api/models/asset.py +2 -1
- fides/api/models/privacy_notice.py +19 -14
- fides/api/models/sql_models.py +51 -0
- fides/api/schemas/application_config.py +0 -1
- fides/api/schemas/connection_configuration/connection_secrets_datahub.py +3 -3
- fides/api/schemas/connection_configuration/connection_secrets_mysql.py +0 -12
- fides/api/schemas/connection_configuration/connection_secrets_postgres.py +4 -0
- fides/api/schemas/consentable_item.py +8 -5
- fides/api/schemas/messaging/messaging.py +2 -9
- fides/api/schemas/storage/storage.py +4 -40
- fides/api/schemas/storage/storage_secrets_docs_only.py +2 -8
- fides/api/schemas/system.py +2 -1
- fides/api/service/connectors/mysql_connector.py +1 -13
- fides/api/service/connectors/postgres_connector.py +4 -2
- fides/api/service/connectors/saas_connector.py +13 -18
- fides/api/service/saas_request/saas_request_override_factory.py +3 -3
- fides/api/service/storage/storage_authenticator_service.py +16 -39
- fides/api/service/storage/storage_uploader_service.py +1 -25
- fides/api/task/graph_task.py +3 -2
- fides/api/tasks/storage.py +2 -50
- fides/api/util/aws_util.py +17 -28
- fides/api/util/consent_util.py +4 -10
- fides/api/util/storage_util.py +0 -2
- fides/service/messaging/aws_ses_service.py +16 -25
- fides/ui-build/static/admin/404.html +1 -1
- fides/ui-build/static/admin/_next/static/P3RkpoojridGfvvbDI91a/_buildManifest.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/1100-45c0634b4f51d10c.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/1376-92890c17ce39ca0d.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/146-d1820217dc36d46d.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/{1817-90e54de7c706b571.js → 1817-6abbe957a53026d7.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/{1904-e1034674c6eef004.js → 1904-281183a117e26585.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/{2479-b4f7654c27a15c05.js → 2479-b4f7a1c7c711cb65.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/3086-d1ba90bc6ac9174b.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/3244-3d94bf3393366412.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/{3702-8a6360b2deef2a87.js → 3702-3d814671c31eaca3.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/3855-237afbbea7f54707.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/3872-c53d74aebd12cfd3.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/401-50974f107c2712fc.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/4060-52fd85fb1e15a2b8.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/4121-476f657b03a78965.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/4481-288d74a33473cff7.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/5102-626b9ff42e904276.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/5480-1623dbacdf4e6794.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/5487-9a2aecb0ec63d567.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/{5826-8a035114917033bb.js → 5826-1f4f74bf3b5348e4.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/5973-942ce645a4279587.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/{6372-3d6d19a89e1d7a37.js → 6372-2aee10b79089521a.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/6395-4224d6d26d1e8bb7.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/6853-ca5dacd25c9ccb7c.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/6954-127745bfdc5bc0b3.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/7751-3913b8c055f599e5.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/79-77cfed02164241ca.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/8433-c4c765833ab9cc07.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/8934-ffa2b0509bc7a845.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/9282-1a48b10b114d01f4.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/9327-4970d356f7000c0b.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/{9392.9178313b7a01d889.js → 9392.da35a8e778812d91.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/9572-2b9b10e146130c85.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/{9676.d1e42fd1d03c4a76.js → 9676.f297a1347ac09c56.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/9767-bf415d0daea960cd.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/{9951-a0ba5bccbbbd5f33.js → 9951-66aad0602aadfbe2.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/{404-b482dd9e6ba3397d.js → 404-29560aa2e6a60963.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/{_app-dc66d9fb6547cb04.js → _app-1ce747bb4aa843da.js} +48 -48
- fides/ui-build/static/admin/_next/static/chunks/pages/add-systems/manual-58e9256e86916ecd.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/add-systems/{multiple-892fc00510cddef8.js → multiple-2392e3a101fae073.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/add-systems-a6926f7ec7ad10cf.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/ant-poc-404f3c9018952800.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/configure/{add-vendors-cc58c1e18966fcfd.js → add-vendors-7dfe37b9f0ff9a3c.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/{configure-422f4d002822a5ce.js → configure-dba7848b760ba227.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-experience/{[id]-cd8bb60adf783c4a.js → [id]-78de4bde88e18b0f.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-experience/{new-300fd2800c417d0b.js → new-c02b14c50b19bd91.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-experience-7eeeee3769e73f78.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-notices/{[id]-72dd15bfd87616c9.js → [id]-75c2ed6ba3de48cd.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-notices/{new-8bbccdd747f4100c.js → new-487ae57dc7e2ded2.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-notices-65091908d6296afc.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/{properties-55cc394ebc428e59.js → properties-f67fda6a71d0a46b.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/reporting-7a1976c0d1aca8b6.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/{consent-ec420ff6cfb82abd.js → consent-75395dfc224cf44b.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/projects/{[projectUrn]-b0b976e8dd5e4cd6.js → [projectUrn]-fa65c67ec8c4b5e6.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/{projects-4ea56a1c3010ba99.js → projects-e76a07ee6ee8d55f.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog-75989f9732d90793.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/[monitorId]/[systemId]-6b3d1fe762c747d8.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/[monitorId]-61eafb8444bffb76.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center-38476c697da53480.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/activity-e7869f658e3017b9.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/detection/{[resourceUrn]-10f789d4ab2b8927.js → [resourceUrn]-1bcaa606739ea1c5.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/{detection-f473b2ee1c67be3c.js → detection-22f55dc12354b4c6.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/discovery/{[resourceUrn]-2569551ae75ea5a2.js → [resourceUrn]-86111c25dc30ef2b.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/{discovery-ad077f30849fdc0a.js → discovery-853be75f08b9ab5c.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/{datamap-4b12c6b141f6cda3.js → datamap-423172d31de8e9c6.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]/[collectionName]/{[...subfieldNames]-da407b63cd3f5276.js → [...subfieldNames]-704553f5329fb9d4.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]/{[collectionName]-76205fa5ddc5c3ae.js → [collectionName]-06c19dca941edb14.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/dataset/{[datasetId]-ab7c88da427b6396.js → [datasetId]-eac517f43d5f53a8.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/dataset/{new-8dba366b1d55a15c.js → new-5aff1d01c6c30ad6.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/{dataset-ee98d1a24a68f13b.js → dataset-f4d57b3432c57112.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection/{[id]-e39d66c8dfdc4c6f.js → [id]-b2b1168d0361baa8.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection/{new-8f2cfc79022cb6d0.js → new-c804349a417a888b.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection-0faa9b3c4555e585.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/index-e72904e316ede1b0.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/integrations/[id]-17191a759e167ca8.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/integrations-88e51c81a380ebad.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/messaging/{[id]-1d18e28fa55a149b.js → [id]-66f5fbadd8455805.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/messaging/{add-template-11bdab1b292c6f89.js → add-template-d441abb1f045940f.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/messaging-eef56c95b08aa24c.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/{[id]-96350050e842bde5.js → [id]-54ea39f203182c53.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure/messaging-d889076067104e56.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure/storage-3355b4803b2916f3.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure-b8c94b10ab90b061.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests-3ac47981f1e2b0aa.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/properties/{[id]-835b7c4dd2240d16.js → [id]-f4fb941df069b7bf.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/properties/{add-property-984851804558be53.js → add-property-bccb6ffab25aa214.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/{properties-d2b95b0ebae06804.js → properties-9a7ac623370b7c00.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/reporting/datamap-fe743440d7eb007b.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/about-4412a7b468b6d4bf.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/consent-cdc866af93898716.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/custom-fields-a7dc8113067dff42.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/{domain-records-87df4b6493ca8162.js → domain-records-d9088f5cd9fb2822.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/domains-2f03e981234c40ad.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/email-templates-cf09ad896c7396a6.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/{locations-a8cd013bdd3aef75.js → locations-759564ca0ae62840.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/organization-5bcc7a6976e01a56.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/{regulations-5abb227df116c9c4.js → regulations-2dce4501fca920b3.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/systems/configure/[id]/test-datasets-0b47ff26897c1d9a.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/systems/configure/{[id]-693c726f22ae11c5.js → [id]-dd053a3bf2a9ca6c.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/systems-820893393f1516ee.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/taxonomy-8fccd670220dbf60.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/user-management/{new-65ef1bdebb679666.js → new-082c3156175f9267.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/user-management/profile/{[id]-28abb07c95f2c7c2.js → [id]-d527d1d1635541df.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/user-management-facb8c0128a44cb1.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/{webpack-cf42f5a0e9af0ace.js → webpack-03e375f6d6b2c71b.js} +1 -1
- fides/ui-build/static/admin/_next/static/css/687135955af5b7e1.css +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/ant-poc.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/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/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.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/alembic/migrations/versions/c9c72b3d550b_data_migration_cookie_asset.py +0 -218
- fides/api/service/storage/gcs.py +0 -38
- fides/ui-build/static/admin/_next/static/WiKelYdZvuyhqjL7rLRaz/_buildManifest.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/1100-0046887f49e9e7c7.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/3503-2e773a38d4a79c2d.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/3513-2ee2ff13c15af241.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/3855-7a43acdb1f8de2f5.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/3872-53b86dcc7ee3ddec.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/401-a15fcc78cc272c09.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/4060-93514991b84ca46c.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/4121-01e2b9f905b8ca29.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/4481-c19a0c5e273a3ec7.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/5487-b6957c5ba835167b.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/5835-2e2aa29b4a8bf4e6.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/5973-4b83cf367b6d82a2.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/6277-2f2d89b83a19ee67.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/6853-45e8c48ad0fdf1db.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/6954-6de30beefefac64a.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/7751-f83e9877478aafcf.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/79-576004c5ee5116f6.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/8433-234a6feeb457cbb8.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/8934-e357867355f1f924.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/9282-c7f853a8175266bc.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/9327-0bc418b9b16cc2c5.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/9572-c34e18bd40467909.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/9719-d3de30714871f267.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/9767-ee5b0af0e65d3802.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/9965-8880affd11242777.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/add-systems/manual-e16fcedb2215db13.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/add-systems-cb85a0014fad7c58.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/ant-poc-2bade915860dd327.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-experience-046051bb82ec1c53.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-notices-1f402b7525f78140.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/reporting-de9118ec446ce994.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog-7efbc1558febf026.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/[monitorId]/[systemId]-cdd23dc94e1fbf89.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/[monitorId]-94308fff1468b5e6.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center-920ed6df7e0aa3a5.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/activity-7e25ddfe45048b35.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection-340e311fa02584dc.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/index-259c1f1281f9b634.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/integrations/[id]-0fc3ffd11ba163f9.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/integrations-d584110d81e5b395.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/messaging-de5efa1ff6d0e9ea.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure/messaging-e8e9ae8d58acceb2.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure/storage-a76f1d1a19e61fe8.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure-6b9a46fef5031a0b.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests-630db544f2a27167.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/reporting/datamap-5d1aededc7523146.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/about-44f96bcf57cd4cbf.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/consent/[configuration_id]/[purpose_id]-0ba66c149139737a.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/consent-943dfe977678edb5.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/custom-fields-39d098cbcb33d4f5.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/domains-45a8a86266308028.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/email-templates-272eb2c0b7ffd290.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/organization-aaa200f916ba79d8.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/systems/configure/[id]/test-datasets-da1b2dd3ec61a08e.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/systems-5eccb5fe50f7aaa9.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/taxonomy-0611d707ce426ec7.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/user-management-4eb69d5c6af8581b.js +0 -1
- fides/ui-build/static/admin/_next/static/css/e728309361a9758b.css +0 -1
- fides/ui-build/static/admin/settings/consent/[configuration_id]/[purpose_id].html +0 -1
- {ethyca_fides-2.59.2b3.dist-info → ethyca_fides-2.59.2rc0.dist-info}/entry_points.txt +0 -0
- {ethyca_fides-2.59.2b3.dist-info → ethyca_fides-2.59.2rc0.dist-info}/licenses/LICENSE +0 -0
- {ethyca_fides-2.59.2b3.dist-info → ethyca_fides-2.59.2rc0.dist-info}/top_level.txt +0 -0
- /fides/ui-build/static/admin/_next/static/{WiKelYdZvuyhqjL7rLRaz → P3RkpoojridGfvvbDI91a}/_ssgManifest.js +0 -0
@@ -37,7 +37,8 @@ class PostgreSQLConnector(SQLConnector):
|
|
37
37
|
netloc = config.host
|
38
38
|
port = f":{config.port}" if config.port else ""
|
39
39
|
dbname = f"/{config.dbname}" if config.dbname else ""
|
40
|
-
|
40
|
+
query = f"?sslmode=${config.ssl_mode}" if config.ssl_mode else ""
|
41
|
+
return f"postgresql://{user_password}{netloc}{port}{dbname}{query}"
|
41
42
|
|
42
43
|
def build_ssh_uri(self, local_address: tuple) -> str:
|
43
44
|
"""Build URI of format postgresql://[user[:password]@][ssh_host][:ssh_port][/dbname]"""
|
@@ -53,7 +54,8 @@ class PostgreSQLConnector(SQLConnector):
|
|
53
54
|
netloc = local_host
|
54
55
|
port = f":{local_port}" if local_port else ""
|
55
56
|
dbname = f"/{config.dbname}" if config.dbname else ""
|
56
|
-
|
57
|
+
query = f"?sslmode=${config.ssl_mode}" if config.ssl_mode else ""
|
58
|
+
return f"postgresql://{user_password}{netloc}{port}{dbname}{query}"
|
57
59
|
|
58
60
|
# Overrides SQLConnector.create_client
|
59
61
|
def create_client(self) -> Engine:
|
@@ -4,7 +4,6 @@ from json import JSONDecodeError
|
|
4
4
|
from typing import Any, Dict, List, Optional, Tuple, Union, cast
|
5
5
|
|
6
6
|
import pydash
|
7
|
-
from fideslang.validation import FidesKey
|
8
7
|
from loguru import logger
|
9
8
|
from requests import Response
|
10
9
|
from sqlalchemy.orm import Session
|
@@ -19,6 +18,7 @@ from fides.api.common_exceptions import (
|
|
19
18
|
from fides.api.graph.execution import ExecutionNode
|
20
19
|
from fides.api.models.connectionconfig import ConnectionConfig, ConnectionTestStatus
|
21
20
|
from fides.api.models.policy import Policy
|
21
|
+
from fides.api.models.privacy_notice import UserConsentPreference
|
22
22
|
from fides.api.models.privacy_request import PrivacyRequest, RequestTask
|
23
23
|
from fides.api.schemas.consentable_item import (
|
24
24
|
ConsentableItem,
|
@@ -687,16 +687,15 @@ class SaaSConnector(BaseConnector[AuthenticatedClient], Contextualizable):
|
|
687
687
|
|
688
688
|
if notice_based_override_function:
|
689
689
|
# follow the notice-based SaaS consent flow
|
690
|
-
(
|
691
|
-
|
692
|
-
|
693
|
-
|
694
|
-
|
695
|
-
|
696
|
-
|
697
|
-
True,
|
690
|
+
notice_id_to_preference_map, filtered_preferences = (
|
691
|
+
build_user_consent_and_filtered_preferences_for_service(
|
692
|
+
self.configuration.system,
|
693
|
+
privacy_request,
|
694
|
+
session,
|
695
|
+
True,
|
696
|
+
)
|
698
697
|
)
|
699
|
-
if not
|
698
|
+
if not notice_id_to_preference_map:
|
700
699
|
logger.info(
|
701
700
|
"Skipping consent requests on node {}: No actionable consent preferences to propagate",
|
702
701
|
node.address.value,
|
@@ -724,13 +723,12 @@ class SaaSConnector(BaseConnector[AuthenticatedClient], Contextualizable):
|
|
724
723
|
)
|
725
724
|
consent_propagation_status = self._invoke_consent_request_override(
|
726
725
|
notice_based_override_function,
|
727
|
-
self.configuration.key,
|
728
726
|
self.create_client(),
|
729
727
|
policy,
|
730
728
|
privacy_request,
|
731
729
|
self.secrets,
|
732
730
|
identity_data,
|
733
|
-
|
731
|
+
notice_id_to_preference_map, # type: ignore[arg-type]
|
734
732
|
notice_based_consentable_item_hierarchy,
|
735
733
|
)
|
736
734
|
if consent_propagation_status == ConsentPropagationStatus.no_update_needed:
|
@@ -802,7 +800,6 @@ class SaaSConnector(BaseConnector[AuthenticatedClient], Contextualizable):
|
|
802
800
|
)
|
803
801
|
consent_propagation_status = self._invoke_consent_request_override(
|
804
802
|
override_function,
|
805
|
-
self.configuration.key,
|
806
803
|
self.create_client(),
|
807
804
|
policy,
|
808
805
|
privacy_request,
|
@@ -1000,13 +997,12 @@ class SaaSConnector(BaseConnector[AuthenticatedClient], Contextualizable):
|
|
1000
997
|
@staticmethod
|
1001
998
|
def _invoke_consent_request_override(
|
1002
999
|
override_function: RequestOverrideFunction,
|
1003
|
-
connection_key: FidesKey,
|
1004
1000
|
client: AuthenticatedClient,
|
1005
1001
|
policy: Policy,
|
1006
1002
|
privacy_request: PrivacyRequest,
|
1007
1003
|
secrets: Any,
|
1008
1004
|
identity_data: Optional[Dict[str, Any]] = None,
|
1009
|
-
|
1005
|
+
notice_id_to_preference_map: Optional[Dict[str, UserConsentPreference]] = None,
|
1010
1006
|
consentable_items_hierarchy: Optional[List[ConsentableItem]] = None,
|
1011
1007
|
) -> ConsentPropagationStatus:
|
1012
1008
|
"""
|
@@ -1015,14 +1011,13 @@ class SaaSConnector(BaseConnector[AuthenticatedClient], Contextualizable):
|
|
1015
1011
|
"""
|
1016
1012
|
try:
|
1017
1013
|
logger.info("Invoking consent request override function...")
|
1018
|
-
if
|
1014
|
+
if notice_id_to_preference_map:
|
1019
1015
|
# At this point, we've already validated the override function signature to take these params
|
1020
1016
|
return override_function(
|
1021
|
-
connection_key,
|
1022
1017
|
client,
|
1023
1018
|
secrets,
|
1024
1019
|
identity_data,
|
1025
|
-
|
1020
|
+
notice_id_to_preference_map,
|
1026
1021
|
consentable_items_hierarchy,
|
1027
1022
|
) # type: ignore
|
1028
1023
|
return override_function(
|
@@ -248,7 +248,7 @@ def validate_update_consent_function(f: Callable) -> None:
|
|
248
248
|
)
|
249
249
|
if len(sig.parameters) < 5:
|
250
250
|
raise InvalidSaaSRequestOverrideException(
|
251
|
-
"Provided SaaS update consent function must declare at least
|
251
|
+
"Provided SaaS update consent function must declare at least 4 parameters"
|
252
252
|
)
|
253
253
|
|
254
254
|
|
@@ -258,9 +258,9 @@ def validate_process_consent_webhook_function(f: Callable) -> None:
|
|
258
258
|
raise InvalidSaaSRequestOverrideException(
|
259
259
|
"Provided SaaS process consent webhook function must return a ConsentWebhookResult"
|
260
260
|
)
|
261
|
-
if len(sig.parameters) <
|
261
|
+
if len(sig.parameters) < 5:
|
262
262
|
raise InvalidSaaSRequestOverrideException(
|
263
|
-
"Provided SaaS process consent webhook function must declare at least
|
263
|
+
"Provided SaaS process consent webhook function must declare at least 5 parameters"
|
264
264
|
)
|
265
265
|
|
266
266
|
|
@@ -1,12 +1,7 @@
|
|
1
|
-
from typing import Any
|
1
|
+
from typing import Any, Dict, Union
|
2
2
|
|
3
3
|
from botocore.exceptions import ClientError
|
4
|
-
from google.auth.exceptions import GoogleAuthError
|
5
|
-
from google.auth.transport.requests import Request
|
6
|
-
from google.oauth2 import service_account
|
7
|
-
from loguru import logger
|
8
4
|
|
9
|
-
from fides.api.models.storage import StorageConfig
|
10
5
|
from fides.api.schemas.storage.storage import (
|
11
6
|
SUPPORTED_STORAGE_SECRETS,
|
12
7
|
AWSAuthMethod,
|
@@ -18,50 +13,32 @@ from fides.api.util.aws_util import get_aws_session
|
|
18
13
|
|
19
14
|
def secrets_are_valid(
|
20
15
|
secrets: SUPPORTED_STORAGE_SECRETS,
|
21
|
-
|
16
|
+
storage_type: Union[StorageType, str],
|
22
17
|
) -> bool:
|
23
18
|
"""Authenticates upload destination with appropriate upload method"""
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
19
|
+
if not isinstance(storage_type, StorageType):
|
20
|
+
# try to coerce into an enum
|
21
|
+
try:
|
22
|
+
storage_type = StorageType[storage_type]
|
23
|
+
except KeyError:
|
24
|
+
raise ValueError(
|
25
|
+
"storage_type argument must be a valid StorageType enum member."
|
26
|
+
)
|
27
|
+
uploader: Any = _get_authenticator_from_config(storage_type)
|
28
|
+
return uploader(secrets)
|
29
|
+
|
30
|
+
|
31
|
+
def _s3_authenticator(secrets: Dict[StorageSecrets, Any]) -> bool:
|
31
32
|
"""Authenticates secrets for s3, returns true if secrets are valid"""
|
32
33
|
try:
|
33
|
-
get_aws_session(
|
34
|
+
get_aws_session(AWSAuthMethod.SECRET_KEYS.value, secrets.model_dump(mode="json")) # type: ignore
|
34
35
|
return True
|
35
36
|
except ClientError:
|
36
37
|
return False
|
37
38
|
|
38
39
|
|
39
|
-
def _gcs_authenticator(storage_config: StorageConfig, secrets: dict) -> bool:
|
40
|
-
"""Autenticates secrets for Google Cloud Storage, returns true if secrets are valid"""
|
41
|
-
try:
|
42
|
-
credentials = service_account.Credentials.from_service_account_info(
|
43
|
-
dict(secrets),
|
44
|
-
scopes=["https://www.googleapis.com/auth/devstorage.read_only"],
|
45
|
-
)
|
46
|
-
# To validate the credentials, it is necessary to make a request to Google Cloud API
|
47
|
-
credentials.refresh(Request())
|
48
|
-
return True
|
49
|
-
|
50
|
-
except GoogleAuthError as auth_error:
|
51
|
-
logger.warning(
|
52
|
-
"Google authentication error trying to authenticate GCS secrets: {}",
|
53
|
-
auth_error,
|
54
|
-
)
|
55
|
-
return False
|
56
|
-
|
57
|
-
except Exception as e:
|
58
|
-
logger.warning("Unexpected error authenticating GCS secrets: {}", e)
|
59
|
-
return False
|
60
|
-
|
61
|
-
|
62
40
|
def _get_authenticator_from_config(storage_type: StorageType) -> Any:
|
63
41
|
"""Determines which uploader method to use based on storage type"""
|
64
42
|
return {
|
65
43
|
StorageType.s3.value: _s3_authenticator,
|
66
|
-
StorageType.gcs.value: _gcs_authenticator,
|
67
44
|
}[storage_type.value]
|
@@ -14,7 +14,7 @@ from fides.api.schemas.storage.storage import (
|
|
14
14
|
StorageDetails,
|
15
15
|
StorageType,
|
16
16
|
)
|
17
|
-
from fides.api.tasks.storage import
|
17
|
+
from fides.api.tasks.storage import upload_to_local, upload_to_s3
|
18
18
|
|
19
19
|
|
20
20
|
def upload(
|
@@ -78,7 +78,6 @@ def _get_uploader_from_config_type(storage_type: StorageType) -> Any:
|
|
78
78
|
return {
|
79
79
|
StorageType.s3.value: _s3_uploader,
|
80
80
|
StorageType.local.value: _local_uploader,
|
81
|
-
StorageType.gcs.value: _gcs_uploader,
|
82
81
|
}[storage_type.value]
|
83
82
|
|
84
83
|
|
@@ -107,29 +106,6 @@ def _s3_uploader(
|
|
107
106
|
)
|
108
107
|
|
109
108
|
|
110
|
-
def _gcs_uploader(
|
111
|
-
_: Session,
|
112
|
-
config: StorageConfig,
|
113
|
-
data: Dict,
|
114
|
-
privacy_request: PrivacyRequest,
|
115
|
-
) -> str:
|
116
|
-
"""Constructs necessary info needed for Google Cloud Storage before calling upload"""
|
117
|
-
file_key: str = _construct_file_key(privacy_request.id, config)
|
118
|
-
|
119
|
-
bucket_name = config.details[StorageDetails.BUCKET.value]
|
120
|
-
auth_method = config.details[StorageDetails.AUTH_METHOD.value]
|
121
|
-
|
122
|
-
return upload_to_gcs(
|
123
|
-
config.secrets,
|
124
|
-
data,
|
125
|
-
bucket_name,
|
126
|
-
file_key,
|
127
|
-
config.format.value, # type: ignore
|
128
|
-
privacy_request,
|
129
|
-
auth_method,
|
130
|
-
)
|
131
|
-
|
132
|
-
|
133
109
|
def _local_uploader(
|
134
110
|
_: Session,
|
135
111
|
config: StorageConfig,
|
fides/api/task/graph_task.py
CHANGED
@@ -125,15 +125,16 @@ def retry(
|
|
125
125
|
ActionDisabled,
|
126
126
|
NotSupportedForCollection,
|
127
127
|
) as exc:
|
128
|
+
traceback.print_exc()
|
128
129
|
logger.warning(
|
129
|
-
"
|
130
|
-
exc.__class__.__name__,
|
130
|
+
"Skipping collection {} for privacy_request: {}",
|
131
131
|
self.execution_node.address,
|
132
132
|
self.resources.request.id,
|
133
133
|
)
|
134
134
|
self.log_skipped(action_type, exc)
|
135
135
|
return default_return
|
136
136
|
except SkippingConsentPropagation as exc:
|
137
|
+
traceback.print_exc()
|
137
138
|
logger.warning(
|
138
139
|
"Skipping consent propagation on collection {} for privacy_request: {}",
|
139
140
|
self.execution_node.address,
|
fides/api/tasks/storage.py
CHANGED
@@ -16,7 +16,6 @@ from fides.api.schemas.storage.storage import ResponseFormat, StorageSecrets
|
|
16
16
|
from fides.api.service.privacy_request.dsr_package.dsr_report_builder import (
|
17
17
|
DsrReportBuilder,
|
18
18
|
)
|
19
|
-
from fides.api.service.storage.gcs import get_gcs_client
|
20
19
|
from fides.api.service.storage.s3 import (
|
21
20
|
create_presigned_url_for_s3,
|
22
21
|
generic_upload_to_s3,
|
@@ -65,7 +64,7 @@ def encrypt_access_request_results(data: Union[str, bytes], request_id: str) ->
|
|
65
64
|
def write_to_in_memory_buffer(
|
66
65
|
resp_format: str, data: Dict[str, Any], privacy_request: PrivacyRequest
|
67
66
|
) -> BytesIO:
|
68
|
-
"""Write JSON/CSV data to in-memory file-like object to be passed to S3
|
67
|
+
"""Write JSON/CSV data to in-memory file-like object to be passed to S3. Encrypt data if encryption key/nonce
|
69
68
|
has been cached for the given privacy request id
|
70
69
|
|
71
70
|
:param resp_format: str, should be one of ResponseFormat
|
@@ -131,11 +130,7 @@ def upload_to_s3( # pylint: disable=R0913
|
|
131
130
|
raise ValueError("Privacy request must be provided")
|
132
131
|
|
133
132
|
try:
|
134
|
-
s3_client = get_s3_client(
|
135
|
-
auth_method,
|
136
|
-
storage_secrets,
|
137
|
-
assume_role_arn=CONFIG.credentials["storage"].get("aws_s3_assume_role_arn"),
|
138
|
-
)
|
133
|
+
s3_client = get_s3_client(auth_method, storage_secrets)
|
139
134
|
|
140
135
|
# handles file chunking
|
141
136
|
try:
|
@@ -162,49 +157,6 @@ def upload_to_s3( # pylint: disable=R0913
|
|
162
157
|
raise ValueError(f"The parameters you provided are incorrect: {e}")
|
163
158
|
|
164
159
|
|
165
|
-
def upload_to_gcs(
|
166
|
-
storage_secrets: Dict,
|
167
|
-
data: Dict,
|
168
|
-
bucket_name: str,
|
169
|
-
file_key: str,
|
170
|
-
resp_format: str,
|
171
|
-
privacy_request: PrivacyRequest,
|
172
|
-
auth_method: str,
|
173
|
-
) -> str:
|
174
|
-
"""Uploads access request data to a Google Cloud Storage bucket"""
|
175
|
-
logger.info("Starting Google Cloud Storage upload of {}", file_key)
|
176
|
-
|
177
|
-
try:
|
178
|
-
storage_client = get_gcs_client(auth_method, storage_secrets)
|
179
|
-
bucket = storage_client.bucket(bucket_name)
|
180
|
-
|
181
|
-
blob = bucket.blob(file_key)
|
182
|
-
in_memory_file = write_to_in_memory_buffer(resp_format, data, privacy_request)
|
183
|
-
content_type = {
|
184
|
-
ResponseFormat.json.value: "application/json",
|
185
|
-
ResponseFormat.csv.value: "application/zip",
|
186
|
-
ResponseFormat.html.value: "application/zip",
|
187
|
-
}
|
188
|
-
blob.upload_from_string(
|
189
|
-
in_memory_file.getvalue(), content_type=content_type[resp_format]
|
190
|
-
)
|
191
|
-
|
192
|
-
logger.info("File {} uploaded to {}", file_key, blob.public_url)
|
193
|
-
|
194
|
-
presigned_url = blob.generate_signed_url(
|
195
|
-
version="v4",
|
196
|
-
expiration=CONFIG.security.subject_request_download_link_ttl_seconds,
|
197
|
-
method="GET",
|
198
|
-
)
|
199
|
-
return presigned_url
|
200
|
-
except Exception as e:
|
201
|
-
logger.error(
|
202
|
-
"Encountered error while uploading and generating link for Google Cloud Storage object: {}",
|
203
|
-
e,
|
204
|
-
)
|
205
|
-
raise e
|
206
|
-
|
207
|
-
|
208
160
|
def upload_to_local(
|
209
161
|
data: Dict,
|
210
162
|
file_key: str,
|
fides/api/util/aws_util.py
CHANGED
@@ -22,10 +22,6 @@ def get_aws_session(
|
|
22
22
|
if storage_secrets is None:
|
23
23
|
# set to an empty dict to allow for more dynamic code downstream
|
24
24
|
storage_secrets = {}
|
25
|
-
|
26
|
-
stored_region_name = storage_secrets.get("region_name") # type: ignore
|
27
|
-
stored_assume_role_arn: Optional[str] = storage_secrets.get("assume_role_arn") # type: ignore
|
28
|
-
|
29
25
|
if auth_method == AWSAuthMethod.SECRET_KEYS.value:
|
30
26
|
if not storage_secrets:
|
31
27
|
err_msg = "Storage secrets not found for S3 storage."
|
@@ -37,10 +33,12 @@ def get_aws_session(
|
|
37
33
|
aws_secret_access_key=storage_secrets[
|
38
34
|
StorageSecrets.AWS_SECRET_ACCESS_KEY.value # type: ignore
|
39
35
|
],
|
40
|
-
region_name=
|
36
|
+
region_name=storage_secrets.get("region_name"), # type: ignore
|
41
37
|
)
|
42
38
|
elif auth_method == AWSAuthMethod.AUTOMATIC.value:
|
43
|
-
session = Session(
|
39
|
+
session = Session(
|
40
|
+
region_name=storage_secrets.get("region_name"), # type: ignore
|
41
|
+
)
|
44
42
|
logger.info("Successfully created automatic session")
|
45
43
|
else:
|
46
44
|
logger.error("AWS auth method not supported: {}", auth_method)
|
@@ -50,13 +48,20 @@ def get_aws_session(
|
|
50
48
|
sts_client = session.client("sts")
|
51
49
|
sts_client.get_caller_identity()
|
52
50
|
|
53
|
-
|
54
|
-
if target_assume_role_arn:
|
51
|
+
if assume_role_arn:
|
55
52
|
try:
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
53
|
+
response = sts_client.assume_role(
|
54
|
+
RoleArn=assume_role_arn, RoleSessionName="FidesAssumeRoleSession"
|
55
|
+
)
|
56
|
+
temp_credentials = response["Credentials"]
|
57
|
+
logger.info(
|
58
|
+
f"Assumed role {assume_role_arn} and got temporary credentials."
|
59
|
+
)
|
60
|
+
return Session(
|
61
|
+
aws_access_key_id=temp_credentials["AccessKeyId"],
|
62
|
+
aws_secret_access_key=temp_credentials["SecretAccessKey"],
|
63
|
+
aws_session_token=temp_credentials["SessionToken"],
|
64
|
+
region_name=storage_secrets.get("region_name"), # type: ignore
|
60
65
|
)
|
61
66
|
except ClientError as error:
|
62
67
|
logger.exception(
|
@@ -67,22 +72,6 @@ def get_aws_session(
|
|
67
72
|
return session
|
68
73
|
|
69
74
|
|
70
|
-
def get_assumed_role_session(
|
71
|
-
assume_role_arn: str, sts_client: Any, region_name: Optional[str] = None
|
72
|
-
) -> Session:
|
73
|
-
response = sts_client.assume_role(
|
74
|
-
RoleArn=assume_role_arn, RoleSessionName="FidesAssumeRoleSession"
|
75
|
-
)
|
76
|
-
temp_credentials = response["Credentials"]
|
77
|
-
logger.info(f"Assumed role {assume_role_arn} and got temporary credentials.")
|
78
|
-
return Session(
|
79
|
-
aws_access_key_id=temp_credentials["AccessKeyId"],
|
80
|
-
aws_secret_access_key=temp_credentials["SecretAccessKey"],
|
81
|
-
aws_session_token=temp_credentials["SessionToken"],
|
82
|
-
region_name=region_name,
|
83
|
-
)
|
84
|
-
|
85
|
-
|
86
75
|
def get_s3_client(
|
87
76
|
auth_method: str,
|
88
77
|
storage_secrets: Optional[Dict[StorageSecrets, Any]],
|
fides/api/util/consent_util.py
CHANGED
@@ -64,7 +64,7 @@ def build_user_consent_and_filtered_preferences_for_service(
|
|
64
64
|
session: Session,
|
65
65
|
is_notice_based: bool = False,
|
66
66
|
) -> Tuple[
|
67
|
-
Optional[Union[bool, Dict[str,
|
67
|
+
Optional[Union[bool, Dict[str, UserConsentPreference]]],
|
68
68
|
List[PrivacyPreferenceHistory],
|
69
69
|
]:
|
70
70
|
"""
|
@@ -109,7 +109,7 @@ def build_user_consent_and_filtered_preferences_for_service(
|
|
109
109
|
|
110
110
|
# 1. NOTICE-BASED WORKFLOW
|
111
111
|
if is_notice_based:
|
112
|
-
|
112
|
+
notice_id_to_preference_map: Dict[str, UserConsentPreference] = {}
|
113
113
|
# retrieve notices from the DB if they are associated with a relevant preference
|
114
114
|
notices_with_preference: Query = session.query(PrivacyNotice).filter(
|
115
115
|
PrivacyNotice.notice_key.in_(
|
@@ -125,16 +125,10 @@ def build_user_consent_and_filtered_preferences_for_service(
|
|
125
125
|
]
|
126
126
|
# we only expect max 1 preference in this list
|
127
127
|
if preference and preference[0]:
|
128
|
-
|
129
|
-
"preference": preference[0].preference,
|
130
|
-
"notice_key": notice.notice_key,
|
131
|
-
}
|
128
|
+
notice_id_to_preference_map[notice.id] = preference[0].preference # type: ignore[assignment]
|
132
129
|
filtered_preferences.append(preference[0])
|
133
130
|
|
134
|
-
return
|
135
|
-
notice_preference_map,
|
136
|
-
filtered_preferences,
|
137
|
-
)
|
131
|
+
return notice_id_to_preference_map, filtered_preferences
|
138
132
|
|
139
133
|
# 2. GLOBAL (OPT-IN/OUT) WORKFLOW
|
140
134
|
preference_to_propagate: UserConsentPreference = (
|
fides/api/util/storage_util.py
CHANGED
@@ -6,7 +6,6 @@ from pydantic import ValidationError
|
|
6
6
|
|
7
7
|
from fides.api.schemas.storage.storage import (
|
8
8
|
SUPPORTED_STORAGE_SECRETS,
|
9
|
-
StorageSecretsGCS,
|
10
9
|
StorageSecretsS3,
|
11
10
|
StorageType,
|
12
11
|
)
|
@@ -32,7 +31,6 @@ def get_schema_for_secrets(
|
|
32
31
|
try:
|
33
32
|
schema = {
|
34
33
|
StorageType.s3: StorageSecretsS3,
|
35
|
-
StorageType.gcs: StorageSecretsGCS,
|
36
34
|
}[storage_type]
|
37
35
|
except KeyError:
|
38
36
|
raise ValueError(
|
@@ -97,29 +97,27 @@ class AWS_SES_Service:
|
|
97
97
|
|
98
98
|
def validate_email_and_domain_status(self) -> None:
|
99
99
|
"""
|
100
|
-
Validate that
|
100
|
+
Validate that the email and domain are verified in SES.
|
101
101
|
"""
|
102
102
|
email = self.messaging_config_details.email_from
|
103
103
|
domain = self.messaging_config_details.domain
|
104
|
-
identities = list(filter(None, (email, domain)))
|
105
|
-
|
106
|
-
# Defensive code just in case, there should always be email_from or domain
|
107
|
-
if not identities:
|
108
|
-
raise AWS_SESException(
|
109
|
-
"No identity (email_from or domain) configured for SES validation."
|
110
|
-
)
|
111
104
|
|
112
105
|
ses_client = self.get_ses_client()
|
113
106
|
response = ses_client.get_identity_verification_attributes(
|
114
|
-
Identities=
|
107
|
+
Identities=[email, domain]
|
115
108
|
)
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
109
|
+
email_status = (
|
110
|
+
response["VerificationAttributes"].get(email, {}).get("VerificationStatus")
|
111
|
+
)
|
112
|
+
domain_status = (
|
113
|
+
response["VerificationAttributes"].get(domain, {}).get("VerificationStatus")
|
114
|
+
)
|
115
|
+
if email_status != "Success":
|
116
|
+
logger.error(f"Email {email} is not verified in SES.")
|
117
|
+
raise AWS_SESException(f"Email {email} is not verified in SES.")
|
118
|
+
if domain_status != "Success":
|
119
|
+
logger.error(f"Domain {domain} is not verified in SES.")
|
120
|
+
raise AWS_SESException(f"Domain {domain} is not verified in SES.")
|
123
121
|
|
124
122
|
def send_email(
|
125
123
|
self,
|
@@ -129,20 +127,13 @@ class AWS_SES_Service:
|
|
129
127
|
) -> None:
|
130
128
|
"""
|
131
129
|
Send an email using AWS SES.
|
132
|
-
|
130
|
+
Both the from_email and domain set in the messaging config must be verified in SES.
|
133
131
|
"""
|
134
132
|
self.validate_email_and_domain_status()
|
135
133
|
ses_client = self.get_ses_client()
|
136
134
|
|
137
|
-
from_address = self.messaging_config_details.email_from
|
138
|
-
if not from_address:
|
139
|
-
# If there is no email_from, there is a domain, and the domain was verified against SES.
|
140
|
-
# When you verify a domain identity, you can send email from any subdomain or email address of the
|
141
|
-
# verified domain without having to verify each one individually.
|
142
|
-
from_address = f"noreply@{self.messaging_config_details.domain}"
|
143
|
-
|
144
135
|
ses_client.send_email(
|
145
|
-
Source=
|
136
|
+
Source=self.messaging_config_details.email_from,
|
146
137
|
Destination={"ToAddresses": [to.strip()]},
|
147
138
|
Message={
|
148
139
|
"Subject": {"Data": subject},
|
@@ -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/
|
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/687135955af5b7e1.css" as="style"/><link rel="stylesheet" href="/_next/static/css/687135955af5b7e1.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-03e375f6d6b2c71b.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-1ce747bb4aa843da.js" defer=""></script><script src="/_next/static/chunks/pages/404-29560aa2e6a60963.js" defer=""></script><script src="/_next/static/P3RkpoojridGfvvbDI91a/_buildManifest.js" defer=""></script><script src="/_next/static/P3RkpoojridGfvvbDI91a/_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":"/404","query":{},"buildId":"P3RkpoojridGfvvbDI91a","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
|
@@ -0,0 +1 @@
|
|
1
|
+
self.__BUILD_MANIFEST=function(s,t,a,e,c,n,i,d,o,r,u,g,p,f,b,j,k,h,m,y,l,v,I,U,_,w,q,x,N,B,F,z,A,D,E,L,M,S,T,C,P,G,H,J,K,O,Q){return{__rewrites:{afterFiles:[],beforeFiles:[],fallback:[]},"/":[w,"static/chunks/pages/index-e72904e316ede1b0.js"],"/404":["static/chunks/pages/404-29560aa2e6a60963.js"],"/_error":["static/chunks/pages/_error-bede3a8288930dcf.js"],"/add-systems":[w,"static/chunks/pages/add-systems-a6926f7ec7ad10cf.js"],"/add-systems/manual":[s,t,e,c,n,b,a,r,j,k,y,q,i,"static/chunks/pages/add-systems/manual-58e9256e86916ecd.js"],"/add-systems/multiple":[s,t,a,r,l,x,"static/chunks/pages/add-systems/multiple-2392e3a101fae073.js"],"/ant-poc":["static/chunks/pages/ant-poc-404f3c9018952800.js"],"/consent":["static/chunks/pages/consent-75395dfc224cf44b.js"],"/consent/configure":[s,t,a,r,l,"static/chunks/pages/consent/configure-dba7848b760ba227.js"],"/consent/configure/add-vendors":[s,t,a,r,l,x,"static/chunks/pages/consent/configure/add-vendors-7dfe37b9f0ff9a3c.js"],"/consent/privacy-experience":[s,t,b,a,N,"static/chunks/pages/consent/privacy-experience-7eeeee3769e73f78.js"],"/consent/privacy-experience/new":[e,c,g,B,d,h,F,"static/chunks/pages/consent/privacy-experience/new-c02b14c50b19bd91.js"],"/consent/privacy-experience/[id]":[e,c,g,B,d,h,F,"static/chunks/pages/consent/privacy-experience/[id]-78de4bde88e18b0f.js"],"/consent/privacy-notices":[s,t,a,N,"static/chunks/pages/consent/privacy-notices-65091908d6296afc.js"],"/consent/privacy-notices/new":[e,c,g,z,d,h,A,"static/chunks/pages/consent/privacy-notices/new-487ae57dc7e2ded2.js"],"/consent/privacy-notices/[id]":[e,c,g,z,d,h,A,"static/chunks/pages/consent/privacy-notices/[id]-75c2ed6ba3de48cd.js"],"/consent/properties":[s,t,a,D,"static/chunks/pages/consent/properties-f67fda6a71d0a46b.js"],"/consent/reporting":[s,t,e,a,"static/chunks/pages/consent/reporting-7a1976c0d1aca8b6.js"],"/data-catalog":[s,t,e,c,n,a,"static/css/95ac327e5d70148d.css","static/chunks/pages/data-catalog-75989f9732d90793.js"],"/data-catalog/[systemId]/projects":[s,t,e,c,n,a,p,v,i,"static/chunks/pages/data-catalog/[systemId]/projects-e76a07ee6ee8d55f.js"],"/data-catalog/[systemId]/projects/[projectUrn]":[s,t,a,E,"static/chunks/pages/data-catalog/[systemId]/projects/[projectUrn]-fa65c67ec8c4b5e6.js"],"/data-catalog/[systemId]/projects/[projectUrn]/[resourceUrn]":[s,t,e,c,n,a,p,v,L,i,"static/chunks/pages/data-catalog/[systemId]/projects/[projectUrn]/[resourceUrn]-ac033a16f043e6f9.js"],"/data-catalog/[systemId]/resources":[s,t,a,E,"static/chunks/pages/data-catalog/[systemId]/resources-305555b74c357bf2.js"],"/data-catalog/[systemId]/resources/[resourceUrn]":[s,t,e,c,n,a,p,v,L,i,"static/chunks/pages/data-catalog/[systemId]/resources/[resourceUrn]-71e26d262afcaea5.js"],"/data-discovery/action-center":[s,t,a,"static/chunks/pages/data-discovery/action-center-38476c697da53480.js"],"/data-discovery/action-center/[monitorId]":[s,t,e,c,n,a,o,k,"static/chunks/pages/data-discovery/action-center/[monitorId]-61eafb8444bffb76.js"],"/data-discovery/action-center/[monitorId]/[systemId]":[s,t,e,c,n,a,o,r,k,y,i,"static/chunks/pages/data-discovery/action-center/[monitorId]/[systemId]-6b3d1fe762c747d8.js"],"/data-discovery/activity":[s,t,a,"static/chunks/pages/data-discovery/activity-e7869f658e3017b9.js"],"/data-discovery/detection":[s,t,a,o,m,M,"static/chunks/pages/data-discovery/detection-22f55dc12354b4c6.js"],"/data-discovery/detection/[resourceUrn]":[s,t,a,o,m,M,"static/chunks/pages/data-discovery/detection/[resourceUrn]-1bcaa606739ea1c5.js"],"/data-discovery/discovery":[s,t,e,c,n,a,o,p,m,S,i,"static/chunks/pages/data-discovery/discovery-853be75f08b9ab5c.js"],"/data-discovery/discovery/[resourceUrn]":[s,t,e,c,n,a,o,p,m,S,i,"static/chunks/pages/data-discovery/discovery/[resourceUrn]-86111c25dc30ef2b.js"],"/datamap":[s,t,"static/chunks/255-7db55b0e3a0f9dea.js",a,j,T,"static/chunks/pages/datamap-423172d31de8e9c6.js"],"/dataset":[s,t,u,a,f,"static/chunks/pages/dataset-f4d57b3432c57112.js"],"/dataset/new":[u,f,"static/chunks/pages/dataset/new-5aff1d01c6c30ad6.js"],"/dataset/[datasetId]":[s,t,"static/chunks/9729-fcf6ff4e3534e4a8.js",a,I,"static/chunks/pages/dataset/[datasetId]-eac517f43d5f53a8.js"],"/dataset/[datasetId]/[collectionName]":[s,t,e,c,n,U,a,I,i,"static/chunks/pages/dataset/[datasetId]/[collectionName]-06c19dca941edb14.js"],"/dataset/[datasetId]/[collectionName]/[...subfieldNames]":[s,t,e,c,n,U,a,I,i,"static/chunks/pages/dataset/[datasetId]/[collectionName]/[...subfieldNames]-704553f5329fb9d4.js"],"/datastore-connection":["static/css/5f393dea1c0d031c.css","static/chunks/pages/datastore-connection-0faa9b3c4555e585.js"],"/datastore-connection/new":[u,b,f,C,"static/chunks/pages/datastore-connection/new-c804349a417a888b.js"],"/datastore-connection/[id]":[u,f,C,"static/chunks/pages/datastore-connection/[id]-b2b1168d0361baa8.js"],"/fides-js-docs":["static/chunks/2fbcc6de-a6c61724c327e9fa.js","static/chunks/e3251fe7-5777b5d778e6fffa.js",e,c,n,u,U,P,"static/css/ab65b8cc3144bfc8.css","static/chunks/905-8ab919e7b274ed50.js","static/chunks/pages/fides-js-docs-80b241bf6cddb72e.js"],"/integrations":[e,c,n,"static/chunks/6834-dcda0a8ed484775e.js",G,"static/chunks/pages/integrations-88e51c81a380ebad.js"],"/integrations/[id]":[s,t,e,c,n,a,G,"static/css/92c81f666644c594.css","static/chunks/pages/integrations/[id]-17191a759e167ca8.js"],"/login":["static/chunks/pages/login-0cb0eb44bf2dd24c.js"],"/login/[provider]":["static/chunks/pages/login/[provider]-c58beef131c3a82d.js"],"/messaging":[s,t,e,c,n,a,"static/chunks/pages/messaging-eef56c95b08aa24c.js"],"/messaging/add-template":[d,H,"static/chunks/pages/messaging/add-template-d441abb1f045940f.js"],"/messaging/[id]":[d,H,"static/chunks/pages/messaging/[id]-66f5fbadd8455805.js"],"/privacy-requests":[s,t,a,J,"static/chunks/pages/privacy-requests-3ac47981f1e2b0aa.js"],"/privacy-requests/configure":["static/chunks/pages/privacy-requests/configure-b8c94b10ab90b061.js"],"/privacy-requests/configure/messaging":["static/chunks/pages/privacy-requests/configure/messaging-d889076067104e56.js"],"/privacy-requests/configure/storage":["static/chunks/pages/privacy-requests/configure/storage-3355b4803b2916f3.js"],"/privacy-requests/[id]":[e,c,n,J,"static/css/b89fc4b36b501cf6.css","static/chunks/pages/privacy-requests/[id]-54ea39f203182c53.js"],"/properties":[s,t,a,D,"static/chunks/pages/properties-9a7ac623370b7c00.js"],"/properties/add-property":[d,K,"static/chunks/pages/properties/add-property-bccb6ffab25aa214.js"],"/properties/[id]":[d,K,"static/chunks/pages/properties/[id]-f4fb941df069b7bf.js"],"/reporting/datamap":[s,t,e,c,n,P,a,j,T,"static/chunks/pages/reporting/datamap-fe743440d7eb007b.js"],"/settings/about":["static/chunks/pages/settings/about-4412a7b468b6d4bf.js"],"/settings/consent":["static/chunks/pages/settings/consent-cdc866af93898716.js"],"/settings/custom-fields":[s,t,a,"static/chunks/pages/settings/custom-fields-a7dc8113067dff42.js"],"/settings/domain-records":[s,t,a,"static/chunks/pages/settings/domain-records-d9088f5cd9fb2822.js"],"/settings/domains":["static/chunks/pages/settings/domains-2f03e981234c40ad.js"],"/settings/email-templates":["static/chunks/pages/settings/email-templates-cf09ad896c7396a6.js"],"/settings/locations":[s,O,"static/chunks/pages/settings/locations-759564ca0ae62840.js"],"/settings/organization":["static/chunks/pages/settings/organization-5bcc7a6976e01a56.js"],"/settings/regulations":[s,O,"static/chunks/pages/settings/regulations-2dce4501fca920b3.js"],"/systems":[s,t,a,"static/chunks/pages/systems-820893393f1516ee.js"],"/systems/configure/[id]":[s,t,e,c,n,b,a,o,r,j,k,y,q,i,"static/chunks/pages/systems/configure/[id]-dd053a3bf2a9ca6c.js"],"/systems/configure/[id]/test-datasets":[u,f,"static/chunks/pages/systems/configure/[id]/test-datasets-0b47ff26897c1d9a.js"],"/taxonomy":["static/chunks/678d4732-50255cc09048e643.js",e,c,n,g,"static/chunks/570-c99f07161bd339cd.js","static/css/34a7eb08b86ddb57.css","static/chunks/pages/taxonomy-8fccd670220dbf60.js"],"/user-management":[_,"static/chunks/pages/user-management-facb8c0128a44cb1.js"],"/user-management/new":[_,Q,"static/chunks/pages/user-management/new-082c3156175f9267.js"],"/user-management/profile/[id]":[_,Q,"static/chunks/pages/user-management/profile/[id]-d527d1d1635541df.js"],sortedPages:["/","/404","/_app","/_error","/add-systems","/add-systems/manual","/add-systems/multiple","/ant-poc","/consent","/consent/configure","/consent/configure/add-vendors","/consent/privacy-experience","/consent/privacy-experience/new","/consent/privacy-experience/[id]","/consent/privacy-notices","/consent/privacy-notices/new","/consent/privacy-notices/[id]","/consent/properties","/consent/reporting","/data-catalog","/data-catalog/[systemId]/projects","/data-catalog/[systemId]/projects/[projectUrn]","/data-catalog/[systemId]/projects/[projectUrn]/[resourceUrn]","/data-catalog/[systemId]/resources","/data-catalog/[systemId]/resources/[resourceUrn]","/data-discovery/action-center","/data-discovery/action-center/[monitorId]","/data-discovery/action-center/[monitorId]/[systemId]","/data-discovery/activity","/data-discovery/detection","/data-discovery/detection/[resourceUrn]","/data-discovery/discovery","/data-discovery/discovery/[resourceUrn]","/datamap","/dataset","/dataset/new","/dataset/[datasetId]","/dataset/[datasetId]/[collectionName]","/dataset/[datasetId]/[collectionName]/[...subfieldNames]","/datastore-connection","/datastore-connection/new","/datastore-connection/[id]","/fides-js-docs","/integrations","/integrations/[id]","/login","/login/[provider]","/messaging","/messaging/add-template","/messaging/[id]","/privacy-requests","/privacy-requests/configure","/privacy-requests/configure/messaging","/privacy-requests/configure/storage","/privacy-requests/[id]","/properties","/properties/add-property","/properties/[id]","/reporting/datamap","/settings/about","/settings/consent","/settings/custom-fields","/settings/domain-records","/settings/domains","/settings/email-templates","/settings/locations","/settings/organization","/settings/regulations","/systems","/systems/configure/[id]","/systems/configure/[id]/test-datasets","/taxonomy","/user-management","/user-management/new","/user-management/profile/[id]"]}}("static/chunks/c78d26b1-88a3e1bacb2a03c2.js","static/chunks/6060-cb1ab5be7067bf7b.js","static/chunks/4481-288d74a33473cff7.js","static/chunks/2858-0b44609b6be7850b.js","static/chunks/2866-a73888c17a195cbe.js","static/chunks/9278-9b1b5970f0702668.js","static/css/d2d4e9a6923e6730.css","static/chunks/9282-1a48b10b114d01f4.js","static/chunks/6395-4224d6d26d1e8bb7.js","static/chunks/401-50974f107c2712fc.js","static/chunks/6527-0eed08abe252a918.js","static/chunks/4294-5b3aa9d605217915.js","static/chunks/6372-2aee10b79089521a.js","static/chunks/9327-4970d356f7000c0b.js","static/chunks/5277-e8a036319456127f.js","static/chunks/9951-66aad0602aadfbe2.js","static/chunks/146-d1820217dc36d46d.js","static/chunks/1376-92890c17ce39ca0d.js","static/chunks/3702-3d814671c31eaca3.js","static/chunks/5102-626b9ff42e904276.js","static/chunks/8934-ffa2b0509bc7a845.js","static/chunks/7751-3913b8c055f599e5.js","static/chunks/5487-9a2aecb0ec63d567.js","static/chunks/8702-d1c8296f9f6afc10.js","static/chunks/5480-1623dbacdf4e6794.js","static/css/972dc7eef106ee7c.css","static/chunks/3244-3d94bf3393366412.js","static/chunks/5826-1f4f74bf3b5348e4.js","static/chunks/6853-ca5dacd25c9ccb7c.js","static/chunks/9014-eeae6f581158e645.js","static/chunks/1817-6abbe957a53026d7.js","static/chunks/3615-5e2d062d684b8fa1.js","static/chunks/6954-127745bfdc5bc0b3.js","static/chunks/79-77cfed02164241ca.js","static/chunks/3872-c53d74aebd12cfd3.js","static/chunks/3855-237afbbea7f54707.js","static/chunks/2479-b4f7a1c7c711cb65.js","static/chunks/1904-281183a117e26585.js","static/chunks/9572-2b9b10e146130c85.js","static/chunks/9767-bf415d0daea960cd.js","static/chunks/9187-851756440f79cd75.js","static/chunks/5973-942ce645a4279587.js","static/chunks/1100-45c0634b4f51d10c.js","static/chunks/8433-c4c765833ab9cc07.js","static/chunks/4060-52fd85fb1e15a2b8.js","static/chunks/3086-d1ba90bc6ac9174b.js","static/chunks/4121-476f657b03a78965.js"),self.__BUILD_MANIFEST_CB&&self.__BUILD_MANIFEST_CB();
|
@@ -0,0 +1 @@
|
|
1
|
+
"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[1100],{58754:function(e,t,n){var r=n(24246),i=n(77181),s=n(70788);t.Z=e=>{let{heading:t,breadcrumbItems:n,isSticky:a=!0,children:o,rightContent:l,style:u,...c}=e;return(0,r.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",...u}:{paddingBottom:"24px",...u},children:[(0,r.jsxs)(i.jqI,{justify:"space-between",children:["string"==typeof t?(0,r.jsx)(i.X6q,{className:n||o?"pb-4":void 0,fontSize:"2xl","data-testid":"page-heading",children:t}):t,l&&(0,r.jsx)("div",{"data-testid":"page-header-right-content",children:l})]}),!!n&&(0,r.jsx)(s.m,{className:o?"pb-4":void 0,items:n,"data-testid":"page-breadcrumb"}),o]})}},10342:function(e,t,n){var r=n(24246),i=n(77181),s=n(91613);t.Z=e=>{let{title:t,tooltip:n,children:a,...o}=e;return(0,r.jsxs)(i.xuv,{borderRadius:"md",border:"1px solid",borderColor:"gray.200",...o,children:[(0,r.jsxs)(i.X6q,{as:"h3",fontSize:"sm",fontWeight:"semibold",color:"gray.700",py:4,px:6,backgroundColor:"gray.50",borderRadius:"md",textAlign:"left",children:[t,n?(0,r.jsx)(i.xvT,{as:"span",mx:1,children:(0,r.jsx)(s.Z,{label:n})}):void 0]}),(0,r.jsx)(i.Kqy,{p:6,spacing:6,children:a})]})}},70788:function(e,t,n){n.d(t,{m:function(){return u}});var r=n(24246),i=n(77181),s=n(79894),a=n.n(s),o=n(27378);let{Text:l}=i.AntTypography,u=e=>{let{items:t,...n}=e,s=(0,o.useMemo)(()=>null==t?void 0:t.map((e,n)=>{let s=n===t.length-1,o={...e},u=o.onClick&&!o.href;return("string"==typeof o.title&&(o.title=(0,r.jsx)(l,{style:{color:"inherit",maxWidth:s?void 0:400},ellipsis:!s,children:o.title})),u)?o.title=(0,r.jsx)(i.wpx,{type:"text",size:"small",icon:o.icon,onClick:o.onClick,className:"ant-breadcrumb-link -mt-px px-1 text-inherit",children:o.title}):(o.icon&&(o.title=(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("span",{className:"anticon align-text-bottom",children:o.icon}),o.title]})),o.href&&o.title&&(o.title=(0,r.jsx)(a(),{href:o.href,className:"ant-breadcrumb-link",children:o.title}),delete o.href)),o}),[t]);return(0,r.jsx)(i.zrq,{items:s,...n})}},67810:function(e,t,n){n.d(t,{Z:function(){return s}}),(r=i||(i={})).PRIVACY_REQUEST_REVIEW_APPROVE="privacy_request_review_approve",r.PRIVACY_REQUEST_REVIEW_DENY="privacy_request_review_deny",r.PRIVACY_REQUEST_RECEIPT="privacy_request_receipt",r.PRIVACY_REQUEST_COMPLETE_ACCESS="privacy_request_complete_access",r.PRIVACY_REQUEST_COMPLETE_DELETION="privacy_request_complete_deletion",r.SUBJECT_IDENTITY_VERIFICATION="subject_identity_verification";var r,i,s={[i.PRIVACY_REQUEST_COMPLETE_ACCESS]:"Access request completed",[i.PRIVACY_REQUEST_COMPLETE_DELETION]:"Erasure request completed",[i.PRIVACY_REQUEST_RECEIPT]:"Privacy request received",[i.PRIVACY_REQUEST_REVIEW_APPROVE]:"Privacy request approved",[i.PRIVACY_REQUEST_REVIEW_DENY]:"Privacy request denied",[i.SUBJECT_IDENTITY_VERIFICATION]:"Subject identity verification"}},20149:function(e,t,n){var r=n(24246),i=n(77830),s=n(77181),a=n(34090),o=n(86677),l=n(16134),u=n(10342),c=n(40324),d=n(51472),p=n(67810),m=n(64826);let g=()=>{var e;let t=(0,l.C)(m.Zp),n=(0,l.C)(m.G1);(0,m.gz)({page:t,size:n});let i=(0,l.C)(m.YO),{values:s,setFieldValue:o}=(0,a.u6)();return(0,r.jsx)(d.Z,{label:"Associated properties",addButtonLabel:"Add property",idField:"id",nameField:"name",allItems:i.map(e=>({id:e.id,name:e.name})),values:null!==(e=s.properties)&&void 0!==e?e:[],setValues:e=>o("properties",e),draggable:!0,maxHeight:100,baseTestId:"property"})};t.Z=e=>{let{template:t,handleSubmit:n,handleDelete:l}=e,d=(0,o.useRouter)(),m=()=>{d.push(i.q)},f={type:t.type,content:t.content,properties:t.properties||[],is_enabled:t.is_enabled,id:t.id||""};return(0,r.jsx)(a.J9,{enableReinitialize:!0,initialValues:f,onSubmit:n,children:e=>{let{dirty:t,isValid:n,isSubmitting:i}=e;return(0,r.jsxs)(a.l0,{style:{paddingTop:"12px",paddingBottom:"12px"},children:[(0,r.jsx)(s.xuv,{py:3,children:(0,r.jsxs)(u.Z,{title:"".concat(p.Z[f.type]),children:[(0,r.jsx)(c.j0,{isRequired:!0,label:"Email subject",name:"content.subject",variant:"stacked"}),(0,r.jsx)(c.Ks,{isRequired:!0,label:"Message body",name:"content.body",value:"test",variant:"stacked",resize:!0}),(0,r.jsx)(s.xuv,{py:3,children:(0,r.jsx)(g,{})}),(0,r.jsx)(c.w8,{name:"is_enabled",label:"Enable message",variant:"switchFirst"})]})}),(0,r.jsxs)(s.kCb,{justifyContent:"space-between",width:"100%",paddingTop:2,children:[f.id&&l&&(0,r.jsx)(s.wpx,{"data-testid":"delete-template-button",loading:!1,className:"mr-3",onClick:l,children:"Delete"}),(0,r.jsxs)(s.kCb,{justifyContent:"right",width:"100%",paddingTop:2,children:[(0,r.jsx)(s.wpx,{loading:!1,className:"mr-3",onClick:m,children:"Cancel"}),(0,r.jsx)(s.wpx,{htmlType:"submit",type:"primary",disabled:i||!t||!n,loading:i,"data-testid":"submit-btn",children:"Save"})]})]})]})}})}},5058:function(e,t,n){n.d(t,{Vw:function(){return s},ms:function(){return r},pS:function(){return i},vm:function(){return a}});let{useGetSummaryMessagingTemplatesQuery:r,usePutMessagingTemplateByIdMutation:i,useCreateMessagingTemplateByTypeMutation:s,usePatchMessagingTemplateByIdMutation:a}=n(78780).u.injectEndpoints({endpoints:e=>({getSummaryMessagingTemplates:e.query({query:e=>({method:"GET",url:"plus/messaging/templates/summary",params:e}),providesTags:()=>["Property-Specific Messaging Templates"]}),putMessagingTemplateById:e.mutation({query:e=>{let{templateId:t,template:n}=e;return{url:"plus/messaging/templates/".concat(t),method:"PUT",body:n}},invalidatesTags:()=>["Property-Specific Messaging Templates"]}),patchMessagingTemplateById:e.mutation({query:e=>{let{templateId:t,template:n}=e;return{url:"plus/messaging/templates/".concat(t),method:"PATCH",body:n}},invalidatesTags:()=>["Property-Specific Messaging Templates"]}),createMessagingTemplateByType:e.mutation({query:e=>{let{templateType:t,template:n}=e;return{url:"plus/messaging/templates/".concat(t),method:"POST",body:n}},invalidatesTags:()=>["Property-Specific Messaging Templates"]})})})},47466:function(e,t,n){n.d(t,{KC:function(){return a},ew:function(){return o},gQ:function(){return s},jM:function(){return r},lE:function(){return i}});let{useGetMessagingTemplatesQuery:r,useUpdateMessagingTemplatesMutation:i,useGetMessagingTemplateByIdQuery:s,useGetMessagingTemplateDefaultQuery:a,useDeleteMessagingTemplateByIdMutation:o}=n(78780).u.injectEndpoints({endpoints:e=>({getMessagingTemplates:e.query({query:()=>({url:"messaging/templates"}),providesTags:()=>["Messaging Templates"]}),updateMessagingTemplates:e.mutation({query:e=>({url:"messaging/templates",method:"PUT",body:e}),invalidatesTags:()=>["Messaging Templates"]}),getMessagingTemplateById:e.query({query:e=>({url:"/messaging/templates/".concat(e)}),providesTags:()=>["Property-Specific Messaging Templates"]}),getMessagingTemplateDefault:e.query({query:e=>({url:"/messaging/templates/default/".concat(e)})}),deleteMessagingTemplateById:e.mutation({query:e=>({url:"/messaging/templates/".concat(e),method:"DELETE"}),invalidatesTags:()=>["Property-Specific Messaging Templates"]})})})},31883:function(e,t,n){n.d(t,{Bw:function(){return r.Bw},D4:function(){return r.D4}});var r=n(19043)},11055:function(e,t,n){n.d(t,{M:function(){return d}});var r=n(24246),i=n(29427),s=n(27378),a=n(40976),o=n(18397),l=n(42308),u=n(25431),c=n(39556);let d=(0,s.forwardRef)(function({children:e,as:t="ul",axis:n="y",onReorder:d,values:g,...f},y){let h=(0,l.h)(()=>o.E[t]),x=[],E=(0,s.useRef)(!1);return(0,i.k)(!!g,"Reorder.Group must be provided a values prop"),(0,s.useEffect)(()=>{E.current=!1}),(0,r.jsx)(h,{...f,ref:y,ignoreStrict:!0,children:(0,r.jsx)(a.Y.Provider,{value:{axis:n,registerItem:(e,t)=>{let r=x.findIndex(t=>e===t.value);-1!==r?x[r].layout=t[n]:x.push({value:e,layout:t[n]}),x.sort(m)},updateOrder:(e,t,n)=>{if(E.current)return;let r=function(e,t,n,r){if(!r)return e;let i=e.findIndex(e=>e.value===t);if(-1===i)return e;let s=r>0?1:-1,a=e[i+s];if(!a)return e;let o=e[i],l=a.layout,d=(0,c.t)(l.min,l.max,.5);return 1===s&&o.layout.max+n>d||-1===s&&o.layout.min+n<d?(0,u.uo)(e,i,i+s):e}(x,e,t,n);x!==r&&(E.current=!0,d(r.map(p).filter(e=>-1!==g.indexOf(e))))}},children:e})})});function p(e){return e.value}function m(e,t){return e.layout.min-t.layout.min}},7078:function(e,t,n){n.d(t,{e:function(){return T}});var r=n(24246),i=n(29427),s=n(27378),a=n(40976),o=n(18397),l=n(42308),u=n(69222),c=n(67412);function d(e){let t=(0,l.h)(()=>(0,u.BX)(e)),{isStatic:n}=(0,s.useContext)(c._);if(n){let[,n]=(0,s.useState)(e);(0,s.useEffect)(()=>t.on("change",n),[])}return t}var p=n(13998);let m=e=>e&&"object"==typeof e&&e.mix,g=e=>m(e)?e.mix:void 0;var f=n(64306),y=n(95984);function h(e,t){let n=d(t()),r=()=>n.set(t());return r(),(0,f.L)(()=>{let t=()=>y.Wi.preRender(r,!1,!0),n=e.map(e=>e.on("change",t));return()=>{n.forEach(e=>e()),(0,y.Pn)(r)}}),n}function x(e,t){let n=(0,l.h)(()=>[]);return h(e,()=>{n.length=0;let r=e.length;for(let t=0;t<r;t++)n[t]=e[t].get();return t(n)})}var E=n(3522);function v(e,t=0){return(0,E.i)(e)?e:d(t)}let T=(0,s.forwardRef)(function({children:e,style:t={},value:n,as:c="li",onDrag:d,layout:m=!0,...f},y){let E=(0,l.h)(()=>o.E[c]),T=(0,s.useContext)(a.Y),b={x:v(t.x),y:v(t.y)},_=function(e,t,n,r){if("function"==typeof e)return function(e){u.S1.current=[],e();let t=h(u.S1.current,e);return u.S1.current=void 0,t}(e);let i="function"==typeof t?t:function(...e){let t=!Array.isArray(e[0]),n=t?0:-1,r=e[0+n],i=e[1+n],s=e[2+n],a=e[3+n],o=(0,p.s)(i,s,{mixer:g(s[0]),...a});return t?o(r):o}(t,void 0,void 0);return Array.isArray(e)?x(e,i):x([e],([e])=>i(e))}([b.x,b.y],([e,t])=>e||t?1:"unset");(0,i.k)(!!T,"Reorder.Item must be a child of Reorder.Group");let{axis:C,registerItem:j,updateOrder:R}=T;return(0,r.jsx)(E,{drag:C,...f,dragSnapToOrigin:!0,style:{...t,x:b.x,y:b.y,zIndex:_},layout:m,onDrag:(e,t)=>{let{velocity:r}=t;r[C]&&R(n,b[C].get(),r[C]),d&&d(e,t)},onLayoutMeasure:e=>j(n,e),ref:y,ignoreStrict:!0,children:e})})},40976:function(e,t,n){n.d(t,{Y:function(){return r}});let r=(0,n(27378).createContext)(null)},47397:function(e,t,n){n.d(t,{o:function(){return a}});var r=n(42308);class i{constructor(){this.componentControls=new Set}subscribe(e){return this.componentControls.add(e),()=>this.componentControls.delete(e)}start(e,t){this.componentControls.forEach(n=>{n.start(e.nativeEvent||e,t)})}}let s=()=>new i;function a(){return(0,r.h)(s)}},76649:function(e,t,n){n.d(t,{Ln:function(){return r}});let r=(e,t)=>s(e,t),i=Symbol("SOME"),s=(e,t)=>"string"==typeof e?e===typeof t:Array.isArray(e)?i in e?e.some(e=>s(e,t)):!!Array.isArray(t)&&(0===e.length||t.every(t=>e.some(e=>s(e,t)))):"object"==typeof t&&null!==t&&Object.entries(e).every(([e,n])=>s(n,t[e]));class a{static narrow(e){return new a(t=>r(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,n=e instanceof a?e.NF:e instanceof Function?e:t=>r(e,t);return new a(e=>t(e)&&n(e))}}new a(e=>!0)}}]);
|