ethyca-fides 2.58.2rc0__py2.py3-none-any.whl → 2.58.3b1__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.58.2rc0.dist-info → ethyca_fides-2.58.3b1.dist-info}/METADATA +20 -11
- {ethyca_fides-2.58.2rc0.dist-info → ethyca_fides-2.58.3b1.dist-info}/RECORD +225 -216
- {ethyca_fides-2.58.2rc0.dist-info → ethyca_fides-2.58.3b1.dist-info}/WHEEL +1 -1
- {ethyca_fides-2.58.2rc0.dist-info → ethyca_fides-2.58.3b1.dist-info}/entry_points.txt +0 -1
- fides/_version.py +3 -3
- fides/api/alembic/migrations/versions/67d01c4e124e_add_reject_all_mechanism_to_privacy_.py +56 -0
- fides/api/alembic/migrations/versions/6e565c16dae1_add_tcf_publisher_restrictions.py +107 -0
- fides/api/alembic/migrations/versions/9288f729cac4_add_tcf_configuration_fk_to_experience_.py +62 -0
- fides/api/alembic/migrations/versions/99c603c1b8f9_add_password_login_enabled_and_totp_secret_to_fidesuser.py +45 -0
- fides/api/api/deps.py +38 -2
- fides/api/api/v1/endpoints/user_endpoints.py +8 -12
- fides/api/cryptography/identity_salt.py +12 -13
- fides/api/custom_types.py +6 -1
- fides/api/db/base.py +5 -0
- fides/api/db/system.py +1 -3
- fides/api/migrations/hash_migration_job.py +2 -2
- fides/api/models/attachment.py +80 -11
- fides/api/models/comment.py +45 -15
- fides/api/models/detection_discovery.py +31 -0
- fides/api/models/fides_user.py +26 -9
- fides/api/models/fides_user_invite.py +2 -0
- fides/api/models/privacy_experience.py +68 -0
- fides/api/models/privacy_request/privacy_request.py +23 -6
- fides/api/models/tcf_publisher_restrictions.py +465 -0
- fides/api/schemas/connection_configuration/connection_config.py +30 -16
- fides/api/schemas/user.py +5 -1
- fides/api/service/deps.py +9 -0
- fides/api/service/storage/s3.py +14 -1
- fides/api/task/graph_task.py +1 -1
- fides/api/util/collection_util.py +48 -9
- fides/cli/commands/pull.py +77 -13
- fides/config/database_settings.py +46 -0
- fides/core/api.py +2 -1
- fides/core/pull.py +38 -7
- fides/service/error_handling/__init__.py +0 -0
- fides/service/error_handling/error_handler.py +202 -0
- fides/service/user/__init__.py +0 -0
- fides/service/user/user_service.py +140 -0
- fides/ui-build/static/admin/404.html +1 -1
- fides/ui-build/static/admin/_next/static/Phr0wJQrVglnj5svYDeUY/_buildManifest.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/1376-f2e68d1cfdacfd48.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/146-9567a3d2f9e21b83.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/1817-5c32a7592d18a859.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/1904-689b67a43153d56c.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/2479-bf5586191c72fb2b.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/3244-c728351365b77871.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/3702-70f90912a76ecef3.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/{3855-b6b7865dedd7bc2a.js → 3855-c02445526594fc1f.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/{3872-4e053c20d546f027.js → 3872-0b61e674a790491b.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/401-839481005c1ba95e.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/{4060-8d165e1236ea521a.js → 4060-fd2f97afa5ba80d4.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/4121-28beb1c0ce3330b6.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/4481-865277e9623e6014.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-f49696df5e8ae500.js → 5480-ff3e05a015ee2799.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/{5487-3ad50d21cdbc9209.js → 5487-f281d138cb89b5c9.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/5973-28d2af853d8498d7.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/{6372-ca9c12ac8902365b.js → 6372-8479ec83d73af02b.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-8941824350c3c1a8.js → 6853-3562089cc16a6799.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/{6954-3b887fb444f9228c.js → 6954-23438f7f9729748b.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/{7751-a8f31c062d4cb09d.js → 7751-95349028f1ee3fb5.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/{79-f9b948ebb186900f.js → 79-488979db197d250c.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/8934-ffa2b0509bc7a845.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/9572-82484a4dd5ebc57e.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/9767-d1d54cb9b74c0693.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/9951-8425f24ce61496bd.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/{main-24f422f93845a596.js → main-090643377c8254e6.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/{main-app-94a0711202e08b15.js → main-app-59156a9331ac7bce.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/{_app-fc89ce7bed454c84.js → _app-fadef5a6a65d3ec4.js} +8 -8
- 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-ba975134a85588f8.js → multiple-2392e3a101fae073.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/{add-systems-d258f0c25fa020bf.js → add-systems-661ff00f91fe62df.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/configure/{add-vendors-b34e5324461d0c87.js → add-vendors-7dfe37b9f0ff9a3c.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/{configure-723cc3d4f5740ea6.js → configure-dba7848b760ba227.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-experience/[id]-78de4bde88e18b0f.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-experience/{new-a9d9402c219d13e5.js → new-c02b14c50b19bd91.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-experience-7dcbcd6f74029d90.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-notices-c27810fc7d8ad4c0.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/{reporting-788cf0e34829af46.js → reporting-71c8a8557a0fb316.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/{data-catalog-900004e402c31797.js → data-catalog-6dae602b509b00b5.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/[monitorId]/[systemId]-f149a0df946c05db.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/[monitorId]-c5b3283cddb68c19.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-36ce3e322670e082.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/detection/{[resourceUrn]-054ca46a782e99a5.js → [resourceUrn]-1bcaa606739ea1c5.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/{detection-b75dd3e4306ac18e.js → detection-22f55dc12354b4c6.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/discovery/{[resourceUrn]-1da20aeb6fc995e4.js → [resourceUrn]-86111c25dc30ef2b.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/{discovery-cad50b0cc6d1050c.js → discovery-853be75f08b9ab5c.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/{datamap-8cb714cdd44ac40e.js → datamap-423172d31de8e9c6.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/dataset/{new-803c1b577ab17ae3.js → new-afb5d98731bc1bb1.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/{dataset-fa743ddc7f89d76b.js → dataset-13e06b0a4a8c114c.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection/{[id]-bbe1ca2793798e6b.js → [id]-d796cf4c25d0b988.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection/{new-abc17fef69cd951b.js → new-814849a549132ffa.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection-be295129568a929c.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/{index-bfaacdb55a5a6c9f.js → index-b0926c4083d4ac88.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/integrations/[id]-dadebdf2d6fbcc64.js +1 -0
- 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]-b1d39bb680cfd6d2.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure/messaging-ea8c82f36520e542.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure/storage-2a56dc41a292a468.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/{privacy-requests-d85c0d16ba09ba35.js → privacy-requests-f394d59981a4f50c.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/reporting/{datamap-afedc48ef4e7f858.js → datamap-4e04234aa5dff9f8.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/consent-b359f061d3b9d455.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/custom-fields-dcf102352d4d4d98.js +1 -0
- 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/{organization-a08693d0d1e10bc8.js → organization-b208f9fd45ebb829.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/systems/configure/[id]/{test-datasets-151571cff4e85894.js → test-datasets-37c8930711ca2b8e.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/systems/configure/[id]-dd053a3bf2a9ca6c.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/{systems-abd68fc5ddde5482.js → systems-4f07a39a7def714a.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/taxonomy-ec35b1f86d536b75.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/user-management/{new-be690621a944bfe2.js → new-082c3156175f9267.js} +1 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/user-management/profile/[id]-963b0dbbf93b9e49.js +1 -0
- fides/ui-build/static/admin/_next/static/chunks/pages/{user-management-6c9ad62479a7d03e.js → user-management-cb40808c1509f191.js} +1 -1
- fides/ui-build/static/admin/_next/static/css/687135955af5b7e1.css +1 -0
- fides/ui-build/static/admin/_next/static/css/b89fc4b36b501cf6.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/images/connector-logos/website.svg +10 -0
- 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-tcf.js +4 -4
- fides/ui-build/static/admin/lib/fides.js +3 -3
- 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/service/user/fides_user_service.py +0 -128
- fides/ui-build/static/admin/_next/static/chunks/1150-035a721a04f4451e.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/1376-5cea5ef9362215e8.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/2397-ee53235fb21b5e97.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/3412-7ec8751b8182e1bf.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/355-8a77c9a1cd027f2e.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/4450-36234280bee624ff.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/4481-aab99ff80f707473.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/4723-0a3c5e2ce143a7d0.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/5258-0658dc2274df6832.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/5973-52aee296edc44f7e.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/6315-fa1519cdf080f42d.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/7453-39761c38da31257e.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/7980-4bd08957448dea32.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/8499-43606100edf42fdf.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/9046-04bd7becea207cb1.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/9767-1a23925d2cb27b51.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/9999-637e0e5341f15f4a.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/add-systems/manual-9acaab973dfe86e2.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-experience/[id]-fb75fa0aea77678d.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-experience-c946b33b0322b8ad.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-notices-ea57f9d6ad17e957.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/[monitorId]/[systemId]-b66831fdafcdf67c.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/[monitorId]-5f9ef1f99818117c.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center-d001337d1bb73bd1.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/activity-11b3ce9f61d9bfe9.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection-a78a73b65929853a.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/integrations/[id]-d4329043219fed9b.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/messaging-1e60754abec1ee6b.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/[id]-fe765154315782cf.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure/messaging-f5f7a8069909ef24.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure/storage-9f7eaad05e5b9292.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/consent-89524101b7279f6e.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/custom-fields-52d030b1db2ca1b9.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/settings/domains-24cba38685dc872c.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/systems/configure/[id]-4f5a28226575c976.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/taxonomy-16b4d75c49276add.js +0 -1
- fides/ui-build/static/admin/_next/static/chunks/pages/user-management/profile/[id]-78eaf933f755bfe8.js +0 -1
- fides/ui-build/static/admin/_next/static/css/113d823fe71f6af0.css +0 -1
- fides/ui-build/static/admin/_next/static/css/15fb7d4837a1de34.css +0 -1
- fides/ui-build/static/admin/_next/static/o0mKeH0cB6eAYV6qOlVD0/_buildManifest.js +0 -1
- {ethyca_fides-2.58.2rc0.dist-info → ethyca_fides-2.58.3b1.dist-info/licenses}/LICENSE +0 -0
- {ethyca_fides-2.58.2rc0.dist-info → ethyca_fides-2.58.3b1.dist-info}/top_level.txt +0 -0
- /fides/ui-build/static/admin/_next/static/{o0mKeH0cB6eAYV6qOlVD0 → Phr0wJQrVglnj5svYDeUY}/_ssgManifest.js +0 -0
- /fides/ui-build/static/admin/_next/static/chunks/{1100-053fc6b76c65a00f.js → 1100-45c0634b4f51d10c.js} +0 -0
- /fides/ui-build/static/admin/_next/static/chunks/{3086-b5054ec2c75700b9.js → 3086-d1ba90bc6ac9174b.js} +0 -0
- /fides/ui-build/static/admin/_next/static/chunks/{5826-e5dcb4e68cfe6289.js → 5826-1f4f74bf3b5348e4.js} +0 -0
- /fides/ui-build/static/admin/_next/static/chunks/{8433-b3008ecaf9834e7f.js → 8433-c4c765833ab9cc07.js} +0 -0
- /fides/ui-build/static/admin/_next/static/chunks/{9282-2bfbdca45e84e810.js → 9282-1a48b10b114d01f4.js} +0 -0
- /fides/ui-build/static/admin/_next/static/chunks/{9327-2cba327d10586683.js → 9327-4970d356f7000c0b.js} +0 -0
- /fides/ui-build/static/admin/_next/static/chunks/pages/{404-b202c0d8f6fc75c3.js → 404-29560aa2e6a60963.js} +0 -0
- /fides/ui-build/static/admin/_next/static/chunks/pages/{ant-poc-b9932971a479f3a7.js → ant-poc-404f3c9018952800.js} +0 -0
- /fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-notices/{[id]-72251b48e2e03a1e.js → [id]-75c2ed6ba3de48cd.js} +0 -0
- /fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-notices/{new-9611dd42856d6062.js → new-487ae57dc7e2ded2.js} +0 -0
- /fides/ui-build/static/admin/_next/static/chunks/pages/consent/{properties-e5748812ba055a56.js → properties-f67fda6a71d0a46b.js} +0 -0
- /fides/ui-build/static/admin/_next/static/chunks/pages/{consent-39d65f13cc8f1cf8.js → consent-75395dfc224cf44b.js} +0 -0
- /fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/projects/{[projectUrn]-a29850536c85d4b8.js → [projectUrn]-fa65c67ec8c4b5e6.js} +0 -0
- /fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/{projects-c44ce244122e96d5.js → projects-e76a07ee6ee8d55f.js} +0 -0
- /fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]/[collectionName]/{[...subfieldNames]-d79551d4c64c398c.js → [...subfieldNames]-704553f5329fb9d4.js} +0 -0
- /fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]/{[collectionName]-7e5df4a0de7540bb.js → [collectionName]-06c19dca941edb14.js} +0 -0
- /fides/ui-build/static/admin/_next/static/chunks/pages/dataset/{[datasetId]-6ba18f92ba561114.js → [datasetId]-eac517f43d5f53a8.js} +0 -0
- /fides/ui-build/static/admin/_next/static/chunks/pages/{integrations-ef8000d7388dc915.js → integrations-373fb3a596099fc9.js} +0 -0
- /fides/ui-build/static/admin/_next/static/chunks/pages/messaging/{[id]-ad02e019b2467958.js → [id]-66f5fbadd8455805.js} +0 -0
- /fides/ui-build/static/admin/_next/static/chunks/pages/messaging/{add-template-f9693cb6a0b7ded8.js → add-template-d441abb1f045940f.js} +0 -0
- /fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/{configure-2987edc77388e85a.js → configure-b8c94b10ab90b061.js} +0 -0
- /fides/ui-build/static/admin/_next/static/chunks/pages/properties/{[id]-94e2faa73dd6a3e6.js → [id]-f4fb941df069b7bf.js} +0 -0
- /fides/ui-build/static/admin/_next/static/chunks/pages/properties/{add-property-630a6a3dd6502ba6.js → add-property-bccb6ffab25aa214.js} +0 -0
- /fides/ui-build/static/admin/_next/static/chunks/pages/{properties-20ca2f963906674b.js → properties-9a7ac623370b7c00.js} +0 -0
- /fides/ui-build/static/admin/_next/static/chunks/pages/settings/{about-a49d0f84cf0cf05e.js → about-4412a7b468b6d4bf.js} +0 -0
- /fides/ui-build/static/admin/_next/static/chunks/pages/settings/{domain-records-fa42d8f18df44927.js → domain-records-d9088f5cd9fb2822.js} +0 -0
- /fides/ui-build/static/admin/_next/static/chunks/pages/settings/{email-templates-6fd6071e2009b8f2.js → email-templates-cf09ad896c7396a6.js} +0 -0
- /fides/ui-build/static/admin/_next/static/chunks/pages/settings/{locations-66c757325cb58467.js → locations-759564ca0ae62840.js} +0 -0
- /fides/ui-build/static/admin/_next/static/chunks/pages/settings/{regulations-c6c239996cfa6ae8.js → regulations-2dce4501fca920b3.js} +0 -0
- /fides/ui-build/static/admin/_next/static/chunks/{webpack-2c7ccac5843c4d8e.js → webpack-03e375f6d6b2c71b.js} +0 -0
fides/_version.py
CHANGED
@@ -8,11 +8,11 @@ import json
|
|
8
8
|
|
9
9
|
version_json = '''
|
10
10
|
{
|
11
|
-
"date": "2025-04-
|
11
|
+
"date": "2025-04-09T09:35:48-0700",
|
12
12
|
"dirty": false,
|
13
13
|
"error": null,
|
14
|
-
"full-revisionid": "
|
15
|
-
"version": "2.58.
|
14
|
+
"full-revisionid": "ad12d73be3bfe01cd2fd5a4a1145760b09639d83",
|
15
|
+
"version": "2.58.3b1"
|
16
16
|
}
|
17
17
|
''' # END VERSION_JSON
|
18
18
|
|
@@ -0,0 +1,56 @@
|
|
1
|
+
"""add_reject_all_mechanism_to_privacy_experience_config
|
2
|
+
|
3
|
+
Revision ID: 67d01c4e124e
|
4
|
+
Revises: 1d2f04ac19f2
|
5
|
+
Create Date: 2025-03-27 15:26:24.635947
|
6
|
+
|
7
|
+
"""
|
8
|
+
|
9
|
+
import sqlalchemy as sa
|
10
|
+
from alembic import op
|
11
|
+
from sqlalchemy.dialects import postgresql
|
12
|
+
|
13
|
+
# revision identifiers, used by Alembic.
|
14
|
+
revision = "67d01c4e124e"
|
15
|
+
down_revision = "1d2f04ac19f2"
|
16
|
+
branch_labels = None
|
17
|
+
depends_on = None
|
18
|
+
|
19
|
+
|
20
|
+
def upgrade():
|
21
|
+
# ### commands auto generated by Alembic - please adjust! ###
|
22
|
+
|
23
|
+
# Add the reject all mechanism enum and column
|
24
|
+
op.execute(
|
25
|
+
"CREATE TYPE rejectallmechanism AS ENUM ('REJECT_ALL', 'REJECT_CONSENT_ONLY')"
|
26
|
+
)
|
27
|
+
op.add_column(
|
28
|
+
"privacyexperienceconfig",
|
29
|
+
sa.Column(
|
30
|
+
"reject_all_mechanism",
|
31
|
+
sa.Enum("REJECT_ALL", "REJECT_CONSENT_ONLY", name="rejectallmechanism"),
|
32
|
+
nullable=True,
|
33
|
+
),
|
34
|
+
)
|
35
|
+
op.add_column(
|
36
|
+
"privacyexperienceconfighistory",
|
37
|
+
sa.Column(
|
38
|
+
"reject_all_mechanism",
|
39
|
+
sa.Enum("REJECT_ALL", "REJECT_CONSENT_ONLY", name="rejectallmechanism"),
|
40
|
+
nullable=True,
|
41
|
+
),
|
42
|
+
)
|
43
|
+
|
44
|
+
# Data migration - set the reject_all_mechanism for all TCF experience configs to REJECT_ALL
|
45
|
+
op.execute(
|
46
|
+
"UPDATE privacyexperienceconfig SET reject_all_mechanism = 'REJECT_ALL' WHERE component = 'tcf_overlay'"
|
47
|
+
)
|
48
|
+
# ### end Alembic commands ###
|
49
|
+
|
50
|
+
|
51
|
+
def downgrade():
|
52
|
+
# ### commands auto generated by Alembic - please adjust! ###
|
53
|
+
op.drop_column("privacyexperienceconfig", "reject_all_mechanism")
|
54
|
+
op.drop_column("privacyexperienceconfighistory", "reject_all_mechanism")
|
55
|
+
op.execute("DROP TYPE IF EXISTS rejectallmechanism")
|
56
|
+
# ### end Alembic commands ###
|
@@ -0,0 +1,107 @@
|
|
1
|
+
"""Add TCF Publisher Restrictions
|
2
|
+
|
3
|
+
Revision ID: 6e565c16dae1
|
4
|
+
Revises: 67d01c4e124e
|
5
|
+
Create Date: 2025-04-02 12:35:34.105607
|
6
|
+
|
7
|
+
"""
|
8
|
+
|
9
|
+
import sqlalchemy as sa
|
10
|
+
from alembic import op
|
11
|
+
from sqlalchemy.dialects import postgresql
|
12
|
+
|
13
|
+
# revision identifiers, used by Alembic.
|
14
|
+
revision = "6e565c16dae1"
|
15
|
+
down_revision = "67d01c4e124e"
|
16
|
+
branch_labels = None
|
17
|
+
depends_on = None
|
18
|
+
|
19
|
+
|
20
|
+
def upgrade():
|
21
|
+
# Create tcf_configuration table
|
22
|
+
op.create_table(
|
23
|
+
"tcf_configuration",
|
24
|
+
sa.Column("id", sa.String(length=255), nullable=False),
|
25
|
+
sa.Column(
|
26
|
+
"created_at",
|
27
|
+
sa.DateTime(timezone=True),
|
28
|
+
server_default=sa.text("now()"),
|
29
|
+
nullable=True,
|
30
|
+
),
|
31
|
+
sa.Column(
|
32
|
+
"updated_at",
|
33
|
+
sa.DateTime(timezone=True),
|
34
|
+
server_default=sa.text("now()"),
|
35
|
+
nullable=True,
|
36
|
+
),
|
37
|
+
sa.Column("name", sa.String(), nullable=False),
|
38
|
+
sa.PrimaryKeyConstraint("id"),
|
39
|
+
sa.UniqueConstraint("name"),
|
40
|
+
)
|
41
|
+
# Create tcf_publisher_restriction table
|
42
|
+
op.create_table(
|
43
|
+
"tcf_publisher_restriction",
|
44
|
+
sa.Column("id", sa.String(length=255), nullable=False),
|
45
|
+
sa.Column(
|
46
|
+
"created_at",
|
47
|
+
sa.DateTime(timezone=True),
|
48
|
+
server_default=sa.text("now()"),
|
49
|
+
nullable=True,
|
50
|
+
),
|
51
|
+
sa.Column(
|
52
|
+
"updated_at",
|
53
|
+
sa.DateTime(timezone=True),
|
54
|
+
server_default=sa.text("now()"),
|
55
|
+
nullable=True,
|
56
|
+
),
|
57
|
+
sa.Column("tcf_configuration_id", sa.String(255), nullable=False),
|
58
|
+
sa.Column("purpose_id", sa.Integer(), nullable=False),
|
59
|
+
sa.Column(
|
60
|
+
"restriction_type",
|
61
|
+
sa.Enum(
|
62
|
+
"purpose_restriction",
|
63
|
+
"require_consent",
|
64
|
+
"require_legitimate_interest",
|
65
|
+
name="tcfrestrictiontype",
|
66
|
+
),
|
67
|
+
nullable=False,
|
68
|
+
),
|
69
|
+
sa.Column(
|
70
|
+
"vendor_restriction",
|
71
|
+
sa.Enum(
|
72
|
+
"restrict_all_vendors",
|
73
|
+
"allow_specific_vendors",
|
74
|
+
"restrict_specific_vendors",
|
75
|
+
name="tcfvendorrestriction",
|
76
|
+
),
|
77
|
+
nullable=False,
|
78
|
+
),
|
79
|
+
sa.Column(
|
80
|
+
"range_entries",
|
81
|
+
postgresql.ARRAY(postgresql.JSONB(astext_type=sa.Text())),
|
82
|
+
server_default="{}",
|
83
|
+
nullable=False,
|
84
|
+
),
|
85
|
+
sa.ForeignKeyConstraint(
|
86
|
+
["tcf_configuration_id"],
|
87
|
+
["tcf_configuration.id"],
|
88
|
+
ondelete="CASCADE",
|
89
|
+
),
|
90
|
+
sa.PrimaryKeyConstraint("id"),
|
91
|
+
)
|
92
|
+
op.create_index(
|
93
|
+
op.f("ix_tcf_publisher_restriction_config_purpose"),
|
94
|
+
"tcf_publisher_restriction",
|
95
|
+
["tcf_configuration_id", "purpose_id"],
|
96
|
+
unique=False,
|
97
|
+
)
|
98
|
+
|
99
|
+
|
100
|
+
def downgrade():
|
101
|
+
# Drop tables
|
102
|
+
op.drop_table("tcf_publisher_restriction")
|
103
|
+
op.drop_table("tcf_configuration")
|
104
|
+
|
105
|
+
# Drop enums
|
106
|
+
op.execute("DROP TYPE tcfrestrictiontype")
|
107
|
+
op.execute("DROP TYPE tcfvendorrestriction")
|
@@ -0,0 +1,62 @@
|
|
1
|
+
"""Add tcf_configuration FK to experience config
|
2
|
+
|
3
|
+
Revision ID: 9288f729cac4
|
4
|
+
Revises: 99c603c1b8f9
|
5
|
+
Create Date: 2025-04-07 18:49:31.843362
|
6
|
+
|
7
|
+
"""
|
8
|
+
|
9
|
+
import sqlalchemy as sa
|
10
|
+
from alembic import op
|
11
|
+
|
12
|
+
# revision identifiers, used by Alembic.
|
13
|
+
revision = "9288f729cac4"
|
14
|
+
down_revision = "99c603c1b8f9"
|
15
|
+
branch_labels = None
|
16
|
+
depends_on = None
|
17
|
+
|
18
|
+
|
19
|
+
def upgrade():
|
20
|
+
# ### commands auto generated by Alembic - please adjust! ###
|
21
|
+
op.add_column(
|
22
|
+
"privacyexperienceconfig",
|
23
|
+
sa.Column("tcf_configuration_id", sa.String(), nullable=True),
|
24
|
+
)
|
25
|
+
op.create_foreign_key(
|
26
|
+
"privacyexperienceconfig_tcf_configuration_fkey",
|
27
|
+
"privacyexperienceconfig",
|
28
|
+
"tcf_configuration",
|
29
|
+
["tcf_configuration_id"],
|
30
|
+
["id"],
|
31
|
+
ondelete="SET NULL",
|
32
|
+
)
|
33
|
+
op.add_column(
|
34
|
+
"privacyexperienceconfighistory",
|
35
|
+
sa.Column("tcf_configuration_id", sa.String(), nullable=True),
|
36
|
+
)
|
37
|
+
op.create_foreign_key(
|
38
|
+
"privacyexperienceconfighistory_tcf_configuration_fkey",
|
39
|
+
"privacyexperienceconfighistory",
|
40
|
+
"tcf_configuration",
|
41
|
+
["tcf_configuration_id"],
|
42
|
+
["id"],
|
43
|
+
ondelete="SET NULL",
|
44
|
+
)
|
45
|
+
# ### end Alembic commands ###
|
46
|
+
|
47
|
+
|
48
|
+
def downgrade():
|
49
|
+
# ### commands auto generated by Alembic - please adjust! ###
|
50
|
+
op.drop_constraint(
|
51
|
+
"privacyexperienceconfighistory_tcf_configuration_fkey",
|
52
|
+
"privacyexperienceconfighistory",
|
53
|
+
type_="foreignkey",
|
54
|
+
)
|
55
|
+
op.drop_column("privacyexperienceconfighistory", "tcf_configuration_id")
|
56
|
+
op.drop_constraint(
|
57
|
+
"privacyexperienceconfig_tcf_configuration_fkey",
|
58
|
+
"privacyexperienceconfig",
|
59
|
+
type_="foreignkey",
|
60
|
+
)
|
61
|
+
op.drop_column("privacyexperienceconfig", "tcf_configuration_id")
|
62
|
+
# ### end Alembic commands ###
|
@@ -0,0 +1,45 @@
|
|
1
|
+
"""add password login enabled and totp secret to fidesuser
|
2
|
+
|
3
|
+
Revision ID: 99c603c1b8f9
|
4
|
+
Revises: 6e565c16dae1
|
5
|
+
Create Date: 2025-04-02 01:55:57.890545
|
6
|
+
|
7
|
+
"""
|
8
|
+
|
9
|
+
import sqlalchemy as sa
|
10
|
+
import sqlalchemy_utils
|
11
|
+
from alembic import op
|
12
|
+
|
13
|
+
# revision identifiers, used by Alembic.
|
14
|
+
revision = "99c603c1b8f9"
|
15
|
+
down_revision = "6e565c16dae1"
|
16
|
+
branch_labels = None
|
17
|
+
depends_on = None
|
18
|
+
|
19
|
+
|
20
|
+
def upgrade():
|
21
|
+
op.add_column(
|
22
|
+
"fidesuser",
|
23
|
+
sa.Column(
|
24
|
+
"password_login_enabled",
|
25
|
+
sa.Boolean(),
|
26
|
+
nullable=True,
|
27
|
+
),
|
28
|
+
)
|
29
|
+
op.add_column(
|
30
|
+
"fidesuser",
|
31
|
+
sa.Column(
|
32
|
+
"totp_secret",
|
33
|
+
sqlalchemy_utils.types.encrypted.encrypted_type.StringEncryptedType(),
|
34
|
+
nullable=True,
|
35
|
+
),
|
36
|
+
)
|
37
|
+
op.alter_column("fidesuser", "hashed_password", nullable=True)
|
38
|
+
op.alter_column("fidesuser", "salt", nullable=True)
|
39
|
+
|
40
|
+
|
41
|
+
def downgrade():
|
42
|
+
op.alter_column("fidesuser", "hashed_password", nullable=False)
|
43
|
+
op.alter_column("fidesuser", "salt", nullable=False)
|
44
|
+
op.drop_column("fidesuser", "totp_secret")
|
45
|
+
op.drop_column("fidesuser", "password_login_enabled")
|
fides/api/api/deps.py
CHANGED
@@ -12,6 +12,7 @@ from fides.config import get_config as get_app_config
|
|
12
12
|
from fides.config.config_proxy import ConfigProxy
|
13
13
|
|
14
14
|
_engine = None
|
15
|
+
_readonly_engine = None
|
15
16
|
|
16
17
|
|
17
18
|
def get_config() -> FidesConfig:
|
@@ -28,9 +29,24 @@ def get_db() -> Generator:
|
|
28
29
|
db.close()
|
29
30
|
|
30
31
|
|
32
|
+
def get_readonly_db() -> Generator:
|
33
|
+
"""Return our readonly database session"""
|
34
|
+
try:
|
35
|
+
db = get_readonly_api_session()
|
36
|
+
yield db
|
37
|
+
finally:
|
38
|
+
db.close()
|
39
|
+
|
40
|
+
|
31
41
|
@contextmanager
|
32
|
-
def
|
33
|
-
"""
|
42
|
+
def get_autoclose_db_session() -> Generator[Session, None, None]:
|
43
|
+
"""
|
44
|
+
Return a database session as a context manager that automatically closes when the context exits.
|
45
|
+
|
46
|
+
Unlike get_api_session which is managed by FastAPI's dependency injection,
|
47
|
+
this context manager explicitly closes the session when exiting the context.
|
48
|
+
Use this when you need manual control over the session lifecycle outside of API endpoints.
|
49
|
+
"""
|
34
50
|
try:
|
35
51
|
db = get_api_session()
|
36
52
|
yield db
|
@@ -55,6 +71,26 @@ def get_api_session() -> Session:
|
|
55
71
|
return db
|
56
72
|
|
57
73
|
|
74
|
+
def get_readonly_api_session() -> Session:
|
75
|
+
"""Gets the shared read-only database session to use for API functionality"""
|
76
|
+
if not CONFIG.database.sqlalchemy_readonly_database_uri:
|
77
|
+
return get_api_session()
|
78
|
+
|
79
|
+
global _readonly_engine # pylint: disable=W0603
|
80
|
+
if not _readonly_engine:
|
81
|
+
_readonly_engine = get_db_engine(
|
82
|
+
database_uri=CONFIG.database.sqlalchemy_readonly_database_uri,
|
83
|
+
pool_size=CONFIG.database.api_engine_pool_size,
|
84
|
+
max_overflow=CONFIG.database.api_engine_max_overflow,
|
85
|
+
keepalives_idle=CONFIG.database.api_engine_keepalives_idle,
|
86
|
+
keepalives_interval=CONFIG.database.api_engine_keepalives_interval,
|
87
|
+
keepalives_count=CONFIG.database.api_engine_keepalives_count,
|
88
|
+
)
|
89
|
+
SessionLocal = get_db_session(CONFIG, engine=_readonly_engine)
|
90
|
+
db = SessionLocal()
|
91
|
+
return db
|
92
|
+
|
93
|
+
|
58
94
|
def get_config_proxy(db: Session = Depends(get_db)) -> ConfigProxy:
|
59
95
|
return ConfigProxy(db)
|
60
96
|
|
@@ -54,11 +54,7 @@ from fides.api.schemas.user import (
|
|
54
54
|
UserResponse,
|
55
55
|
UserUpdate,
|
56
56
|
)
|
57
|
-
from fides.api.service.
|
58
|
-
accept_invite,
|
59
|
-
invite_user,
|
60
|
-
perform_login,
|
61
|
-
)
|
57
|
+
from fides.api.service.deps import get_user_service
|
62
58
|
from fides.api.util.api_router import APIRouter
|
63
59
|
from fides.common.api.scope_registry import (
|
64
60
|
SCOPE_REGISTRY,
|
@@ -75,6 +71,7 @@ from fides.common.api.v1 import urn_registry as urls
|
|
75
71
|
from fides.common.api.v1.urn_registry import V1_URL_PREFIX
|
76
72
|
from fides.config import CONFIG, FidesConfig, get_config
|
77
73
|
from fides.config.config_proxy import ConfigProxy
|
74
|
+
from fides.service.user.user_service import UserService
|
78
75
|
|
79
76
|
router = APIRouter(tags=["Users"], prefix=V1_URL_PREFIX)
|
80
77
|
|
@@ -423,6 +420,7 @@ def create_user(
|
|
423
420
|
db: Session = Depends(get_db),
|
424
421
|
user_data: UserCreate,
|
425
422
|
config_proxy: ConfigProxy = Depends(get_config_proxy),
|
423
|
+
user_service: UserService = Depends(get_user_service),
|
426
424
|
) -> FidesUser:
|
427
425
|
"""
|
428
426
|
Create a user given a username and password.
|
@@ -461,7 +459,7 @@ def create_user(
|
|
461
459
|
user = FidesUser.create(db=db, data=user_data.model_dump(mode="json"))
|
462
460
|
|
463
461
|
# invite user via email
|
464
|
-
invite_user(
|
462
|
+
user_service.invite_user(user)
|
465
463
|
|
466
464
|
logger.info("Created user with id: '{}'.", user.id)
|
467
465
|
FidesUserPermissions.create(
|
@@ -544,6 +542,7 @@ def user_login(
|
|
544
542
|
db: Session = Depends(get_db),
|
545
543
|
config: FidesConfig = Depends(get_config),
|
546
544
|
user_data: UserLogin,
|
545
|
+
user_service: UserService = Depends(get_user_service),
|
547
546
|
) -> UserLoginResponse:
|
548
547
|
"""Login the user by creating a client if it doesn't exist, and have that client
|
549
548
|
generate a token."""
|
@@ -602,8 +601,7 @@ def user_login(
|
|
602
601
|
# from complaining.
|
603
602
|
user = user_check
|
604
603
|
|
605
|
-
client = perform_login(
|
606
|
-
db,
|
604
|
+
client = user_service.perform_login(
|
607
605
|
config.security.oauth_client_id_length_bytes,
|
608
606
|
config.security.oauth_client_secret_length_bytes,
|
609
607
|
user,
|
@@ -666,9 +664,9 @@ def verify_invite_code(
|
|
666
664
|
def accept_user_invite(
|
667
665
|
*,
|
668
666
|
db: Session = Depends(get_db),
|
669
|
-
config: FidesConfig = Depends(get_config),
|
670
667
|
user_data: UserForcePasswordReset,
|
671
668
|
verified_invite: FidesUserInvite = Depends(verify_invite_code),
|
669
|
+
user_service: UserService = Depends(get_user_service),
|
672
670
|
) -> UserLoginResponse:
|
673
671
|
"""Sets the password and enables the user if a valid username and invite code are provided."""
|
674
672
|
|
@@ -681,9 +679,7 @@ def accept_user_invite(
|
|
681
679
|
detail=f"User with username {verified_invite.username} does not exist.",
|
682
680
|
)
|
683
681
|
|
684
|
-
user, access_code = accept_invite(
|
685
|
-
db=db, config=config, user=user, new_password=user_data.new_password
|
686
|
-
)
|
682
|
+
user, access_code = user_service.accept_invite(user, user_data.new_password)
|
687
683
|
|
688
684
|
return UserLoginResponse(
|
689
685
|
user_data=user,
|
@@ -3,9 +3,8 @@ from functools import cache
|
|
3
3
|
|
4
4
|
from loguru import logger
|
5
5
|
|
6
|
-
from fides.api.
|
6
|
+
from fides.api.api.deps import get_autoclose_db_session
|
7
7
|
from fides.api.models.identity_salt import IdentitySalt
|
8
|
-
from fides.config import CONFIG
|
9
8
|
|
10
9
|
|
11
10
|
@cache
|
@@ -15,14 +14,14 @@ def get_identity_salt() -> str:
|
|
15
14
|
This function is cached to avoid repeated calls to the database for the same value.
|
16
15
|
"""
|
17
16
|
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
17
|
+
with get_autoclose_db_session() as db:
|
18
|
+
existing_salt = db.query(IdentitySalt).first()
|
19
|
+
if existing_salt is None:
|
20
|
+
new_salt = IdentitySalt.create(
|
21
|
+
db, data={"encrypted_value": {"value": secrets.token_hex(32)}}
|
22
|
+
)
|
23
|
+
logger.info("Created new identity salt.")
|
24
|
+
return new_salt.encrypted_value.get("value")
|
25
|
+
|
26
|
+
logger.info("Caching existing identity salt.")
|
27
|
+
return existing_salt.encrypted_value.get("value")
|
fides/api/custom_types.py
CHANGED
@@ -66,8 +66,13 @@ def validate_html_str(val: str) -> str:
|
|
66
66
|
"strong",
|
67
67
|
"u",
|
68
68
|
}
|
69
|
+
|
70
|
+
ALLOWED_ATTRIBUTES = {
|
71
|
+
"a": {"href", "hreflang", "target"},
|
72
|
+
}
|
73
|
+
|
69
74
|
if val:
|
70
|
-
return clean(val, tags=ALLOWED_HTML_TAGS)
|
75
|
+
return clean(val, tags=ALLOWED_HTML_TAGS, attributes=ALLOWED_ATTRIBUTES)
|
71
76
|
return val
|
72
77
|
|
73
78
|
|
fides/api/db/base.py
CHANGED
@@ -8,6 +8,7 @@ from fides.api.models.attachment import Attachment, AttachmentReference
|
|
8
8
|
from fides.api.models.audit_log import AuditLog
|
9
9
|
from fides.api.models.authentication_request import AuthenticationRequest
|
10
10
|
from fides.api.models.client import ClientDetail
|
11
|
+
from fides.api.models.comment import Comment, CommentReference
|
11
12
|
from fides.api.models.connectionconfig import ConnectionConfig
|
12
13
|
from fides.api.models.consent_automation import ConsentAutomation
|
13
14
|
from fides.api.models.custom_asset import CustomAsset
|
@@ -58,4 +59,8 @@ from fides.api.models.storage import StorageConfig
|
|
58
59
|
from fides.api.models.system_compass_sync import SystemCompassSync
|
59
60
|
from fides.api.models.system_history import SystemHistory
|
60
61
|
from fides.api.models.system_manager import SystemManager
|
62
|
+
from fides.api.models.tcf_publisher_restrictions import (
|
63
|
+
TCFConfiguration,
|
64
|
+
TCFPublisherRestriction,
|
65
|
+
)
|
61
66
|
from fides.api.models.tcf_purpose_overrides import TCFPurposeOverride
|
fides/api/db/system.py
CHANGED
@@ -406,9 +406,7 @@ async def create_system(
|
|
406
406
|
|
407
407
|
# create the system resource using generic creation
|
408
408
|
# the system must be created before the privacy declarations so that it can be referenced
|
409
|
-
resource_dict = resource.model_dump(
|
410
|
-
mode="json"
|
411
|
-
) # mode=json helps Url fields be converted to strings before saving to db
|
409
|
+
resource_dict = resource.model_dump()
|
412
410
|
|
413
411
|
# set the current user's ID
|
414
412
|
resource_dict["user_id"] = current_user_id
|
@@ -2,7 +2,7 @@ from loguru import logger
|
|
2
2
|
from sqlalchemy import text
|
3
3
|
from sqlalchemy.orm import Session
|
4
4
|
|
5
|
-
from fides.api.api.deps import
|
5
|
+
from fides.api.api.deps import get_autoclose_db_session
|
6
6
|
from fides.api.db.base_class import FidesBase
|
7
7
|
from fides.api.migrations.hash_migration_mixin import HashMigrationMixin
|
8
8
|
from fides.api.migrations.hash_migration_tracker import HashMigrationTracker
|
@@ -47,7 +47,7 @@ def bcrypt_migration_task() -> None:
|
|
47
47
|
Job to migrate all the tables using bcrypt hashes for general data (excludes tables with credentials).
|
48
48
|
"""
|
49
49
|
|
50
|
-
with
|
50
|
+
with get_autoclose_db_session() as db:
|
51
51
|
# Do a single pass to check if any of the models have already been migrated.
|
52
52
|
# This will allow us to optimize searching for these models by not calling
|
53
53
|
# the previously used bcrypt hash.
|