ethyca-fides 2.66.2b0__py2.py3-none-any.whl → 2.66.2b1__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.

Potentially problematic release.


This version of ethyca-fides might be problematic. Click here for more details.

Files changed (145) hide show
  1. {ethyca_fides-2.66.2b0.dist-info → ethyca_fides-2.66.2b1.dist-info}/METADATA +1 -1
  2. {ethyca_fides-2.66.2b0.dist-info → ethyca_fides-2.66.2b1.dist-info}/RECORD +142 -141
  3. fides/_version.py +3 -3
  4. fides/api/alembic/migrations/versions/a7065df4dcf1_add_finalized_fields_to_privacy_request.py +65 -0
  5. fides/api/api/v1/endpoints/privacy_request_endpoints.py +44 -1
  6. fides/api/models/privacy_request/execution_log.py +1 -0
  7. fides/api/models/privacy_request/privacy_request.py +6 -0
  8. fides/api/schemas/policy.py +1 -0
  9. fides/api/schemas/privacy_request.py +5 -0
  10. fides/api/service/privacy_request/request_runner_service.py +116 -53
  11. fides/common/api/v1/urn_registry.py +1 -1
  12. fides/config/execution_settings.py +4 -0
  13. fides/ui-build/static/admin/404.html +1 -1
  14. fides/ui-build/static/admin/_next/static/{QGhYEMWDATmdofDzIl0_2 → CQD5hIjm-4lH18YYESYuD}/_buildManifest.js +1 -1
  15. fides/ui-build/static/admin/_next/static/chunks/{203-d9fe5384a6e94799.js → 203-4e777c324a01dbec.js} +1 -1
  16. fides/ui-build/static/admin/_next/static/chunks/pages/{_app-65e47e67bee20654.js → _app-be7889cec5a0f5cd.js} +1 -1
  17. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/{[id]-f18b2b83c4592f03.js → [id]-1caa552a8f11f2f2.js} +1 -1
  18. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure/messaging-7498d1d5974a78b0.js +1 -0
  19. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure/storage-2d3a2d967767a131.js +1 -0
  20. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests-6a9068df48bdee05.js +1 -0
  21. fides/ui-build/static/admin/add-systems/manual.html +1 -1
  22. fides/ui-build/static/admin/add-systems/multiple.html +1 -1
  23. fides/ui-build/static/admin/add-systems.html +1 -1
  24. fides/ui-build/static/admin/consent/configure/add-vendors.html +1 -1
  25. fides/ui-build/static/admin/consent/configure.html +1 -1
  26. fides/ui-build/static/admin/consent/privacy-experience/[id].html +1 -1
  27. fides/ui-build/static/admin/consent/privacy-experience/new.html +1 -1
  28. fides/ui-build/static/admin/consent/privacy-experience.html +1 -1
  29. fides/ui-build/static/admin/consent/privacy-notices/[id].html +1 -1
  30. fides/ui-build/static/admin/consent/privacy-notices/new.html +1 -1
  31. fides/ui-build/static/admin/consent/privacy-notices.html +1 -1
  32. fides/ui-build/static/admin/consent/properties.html +1 -1
  33. fides/ui-build/static/admin/consent/reporting.html +1 -1
  34. fides/ui-build/static/admin/consent.html +1 -1
  35. fides/ui-build/static/admin/data-catalog/[systemId]/projects/[projectUrn]/[resourceUrn].html +1 -1
  36. fides/ui-build/static/admin/data-catalog/[systemId]/projects/[projectUrn].html +1 -1
  37. fides/ui-build/static/admin/data-catalog/[systemId]/projects.html +1 -1
  38. fides/ui-build/static/admin/data-catalog/[systemId]/resources/[resourceUrn].html +1 -1
  39. fides/ui-build/static/admin/data-catalog/[systemId]/resources.html +1 -1
  40. fides/ui-build/static/admin/data-catalog.html +1 -1
  41. fides/ui-build/static/admin/data-discovery/action-center/[monitorId]/[systemId].html +1 -1
  42. fides/ui-build/static/admin/data-discovery/action-center/[monitorId].html +1 -1
  43. fides/ui-build/static/admin/data-discovery/action-center.html +1 -1
  44. fides/ui-build/static/admin/data-discovery/activity.html +1 -1
  45. fides/ui-build/static/admin/data-discovery/detection/[resourceUrn].html +1 -1
  46. fides/ui-build/static/admin/data-discovery/detection.html +1 -1
  47. fides/ui-build/static/admin/data-discovery/discovery/[resourceUrn].html +1 -1
  48. fides/ui-build/static/admin/data-discovery/discovery.html +1 -1
  49. fides/ui-build/static/admin/datamap.html +1 -1
  50. fides/ui-build/static/admin/dataset/[datasetId]/[collectionName]/[...subfieldNames].html +1 -1
  51. fides/ui-build/static/admin/dataset/[datasetId]/[collectionName].html +1 -1
  52. fides/ui-build/static/admin/dataset/[datasetId].html +1 -1
  53. fides/ui-build/static/admin/dataset/new.html +1 -1
  54. fides/ui-build/static/admin/dataset.html +1 -1
  55. fides/ui-build/static/admin/datastore-connection/[id].html +1 -1
  56. fides/ui-build/static/admin/datastore-connection/new.html +1 -1
  57. fides/ui-build/static/admin/datastore-connection.html +1 -1
  58. fides/ui-build/static/admin/index.html +1 -1
  59. fides/ui-build/static/admin/integrations/[id].html +1 -1
  60. fides/ui-build/static/admin/integrations.html +1 -1
  61. fides/ui-build/static/admin/lib/fides-preview.js +1 -1
  62. fides/ui-build/static/admin/lib/fides-tcf.js +1 -1
  63. fides/ui-build/static/admin/lib/fides.js +1 -1
  64. fides/ui-build/static/admin/login/[provider].html +1 -1
  65. fides/ui-build/static/admin/login.html +1 -1
  66. fides/ui-build/static/admin/messaging/[id].html +1 -1
  67. fides/ui-build/static/admin/messaging/add-template.html +1 -1
  68. fides/ui-build/static/admin/messaging.html +1 -1
  69. fides/ui-build/static/admin/poc/ant-components.html +1 -1
  70. fides/ui-build/static/admin/poc/form-experiments/AntForm.html +1 -1
  71. fides/ui-build/static/admin/poc/form-experiments/FormikAntFormItem.html +1 -1
  72. fides/ui-build/static/admin/poc/form-experiments/FormikControlled.html +1 -1
  73. fides/ui-build/static/admin/poc/form-experiments/FormikField.html +1 -1
  74. fides/ui-build/static/admin/poc/form-experiments/FormikSpreadField.html +1 -1
  75. fides/ui-build/static/admin/poc/forms.html +1 -1
  76. fides/ui-build/static/admin/poc/table-migration.html +1 -1
  77. fides/ui-build/static/admin/privacy-requests/[id].html +1 -1
  78. fides/ui-build/static/admin/privacy-requests/configure/messaging.html +1 -1
  79. fides/ui-build/static/admin/privacy-requests/configure/storage.html +1 -1
  80. fides/ui-build/static/admin/privacy-requests/configure.html +1 -1
  81. fides/ui-build/static/admin/privacy-requests.html +1 -1
  82. fides/ui-build/static/admin/properties/[id].html +1 -1
  83. fides/ui-build/static/admin/properties/add-property.html +1 -1
  84. fides/ui-build/static/admin/properties.html +1 -1
  85. fides/ui-build/static/admin/reporting/datamap.html +1 -1
  86. fides/ui-build/static/admin/settings/about/alpha.html +1 -1
  87. fides/ui-build/static/admin/settings/about.html +1 -1
  88. fides/ui-build/static/admin/settings/consent/[configuration_id]/[purpose_id].html +1 -1
  89. fides/ui-build/static/admin/settings/consent.html +1 -1
  90. fides/ui-build/static/admin/settings/custom-fields.html +1 -1
  91. fides/ui-build/static/admin/settings/domain-records.html +1 -1
  92. fides/ui-build/static/admin/settings/domains.html +1 -1
  93. fides/ui-build/static/admin/settings/email-templates.html +1 -1
  94. fides/ui-build/static/admin/settings/locations.html +1 -1
  95. fides/ui-build/static/admin/settings/organization.html +1 -1
  96. fides/ui-build/static/admin/settings/regulations.html +1 -1
  97. fides/ui-build/static/admin/systems/configure/[id]/test-datasets.html +1 -1
  98. fides/ui-build/static/admin/systems/configure/[id].html +1 -1
  99. fides/ui-build/static/admin/systems.html +1 -1
  100. fides/ui-build/static/admin/taxonomy.html +1 -1
  101. fides/ui-build/static/admin/user-management/new.html +1 -1
  102. fides/ui-build/static/admin/user-management/profile/[id].html +1 -1
  103. fides/ui-build/static/admin/user-management.html +1 -1
  104. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure/messaging-f9be923340cd99cf.js +0 -1
  105. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure/storage-eb1ccc8a5dbf0fe5.js +0 -1
  106. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests-1daa805a3099c6d4.js +0 -1
  107. {ethyca_fides-2.66.2b0.dist-info → ethyca_fides-2.66.2b1.dist-info}/WHEEL +0 -0
  108. {ethyca_fides-2.66.2b0.dist-info → ethyca_fides-2.66.2b1.dist-info}/entry_points.txt +0 -0
  109. {ethyca_fides-2.66.2b0.dist-info → ethyca_fides-2.66.2b1.dist-info}/licenses/LICENSE +0 -0
  110. {ethyca_fides-2.66.2b0.dist-info → ethyca_fides-2.66.2b1.dist-info}/top_level.txt +0 -0
  111. /fides/ui-build/static/admin/_next/static/{QGhYEMWDATmdofDzIl0_2 → CQD5hIjm-4lH18YYESYuD}/_ssgManifest.js +0 -0
  112. /fides/ui-build/static/admin/_next/static/chunks/{3450-f7bb8d46fbe4e78d.js → 3450-1cc2bb07ed142203.js} +0 -0
  113. /fides/ui-build/static/admin/_next/static/chunks/{3872-08c855f3edb230c4.js → 3872-84b7e380b88b4454.js} +0 -0
  114. /fides/ui-build/static/admin/_next/static/chunks/{5574-a7d8a753d273b11a.js → 5574-9312f97b637d9ee2.js} +0 -0
  115. /fides/ui-build/static/admin/_next/static/chunks/{6084-a872a8bc704c980f.js → 6084-5d7598b7bcb548cf.js} +0 -0
  116. /fides/ui-build/static/admin/_next/static/chunks/{6662-4a7805f74af51f1d.js → 6662-efb2cf74641647f2.js} +0 -0
  117. /fides/ui-build/static/admin/_next/static/chunks/{6882-85c6277d9531a83a.js → 6882-586b84aeb02d5830.js} +0 -0
  118. /fides/ui-build/static/admin/_next/static/chunks/{7476-cfe41e915f0c4f40.js → 7476-d206c11823c91088.js} +0 -0
  119. /fides/ui-build/static/admin/_next/static/chunks/{7630-7a8039aa37893129.js → 7630-b1c93688013ef013.js} +0 -0
  120. /fides/ui-build/static/admin/_next/static/chunks/{787-d05b25c73f49b6af.js → 787-cbe2d0bfb513d90a.js} +0 -0
  121. /fides/ui-build/static/admin/_next/static/chunks/{79-1952e8aab93b7209.js → 79-3db1941d274f40c7.js} +0 -0
  122. /fides/ui-build/static/admin/_next/static/chunks/{796-d2876f4d09a6d81f.js → 796-98d4bd68909fbe1e.js} +0 -0
  123. /fides/ui-build/static/admin/_next/static/chunks/{9226-7a799c930b73f217.js → 9226-72ad691ca57b83ef.js} +0 -0
  124. /fides/ui-build/static/admin/_next/static/chunks/{9826-b7d5467e3a3225c8.js → 9826-3c578665c6d3b21d.js} +0 -0
  125. /fides/ui-build/static/admin/_next/static/chunks/pages/{add-systems-f28841affa791975.js → add-systems-0943633a8e422695.js} +0 -0
  126. /fides/ui-build/static/admin/_next/static/chunks/pages/consent/{configure-50d21e23b607688b.js → configure-0e1ca0f4c8e7f4da.js} +0 -0
  127. /fides/ui-build/static/admin/_next/static/chunks/pages/{consent-509691da6b06f834.js → consent-e17c56eec8d91371.js} +0 -0
  128. /fides/ui-build/static/admin/_next/static/chunks/pages/{data-catalog-2f43cfefc869b85f.js → data-catalog-8a7f9285da66b965.js} +0 -0
  129. /fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/{action-center-409694b8441bd8fb.js → action-center-85e140788e251272.js} +0 -0
  130. /fides/ui-build/static/admin/_next/static/chunks/pages/{datamap-e707dc714452498e.js → datamap-d2b275d83089820d.js} +0 -0
  131. /fides/ui-build/static/admin/_next/static/chunks/pages/{datastore-connection-6865aa958f3da342.js → datastore-connection-0f29b47402292070.js} +0 -0
  132. /fides/ui-build/static/admin/_next/static/chunks/pages/{index-f127ebaac4689d10.js → index-12ac3e317fc86f21.js} +0 -0
  133. /fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/{configure-295bfe6880b209f2.js → configure-e551a860ec727802.js} +0 -0
  134. /fides/ui-build/static/admin/_next/static/chunks/pages/settings/about/{alpha-8152e5828469cf91.js → alpha-8f98a4895e74725e.js} +0 -0
  135. /fides/ui-build/static/admin/_next/static/chunks/pages/settings/{about-9839e544924ac1f2.js → about-8155a35a62fdb5ae.js} +0 -0
  136. /fides/ui-build/static/admin/_next/static/chunks/pages/settings/{consent-f7a0f8367129cd70.js → consent-a989532a12c40dcf.js} +0 -0
  137. /fides/ui-build/static/admin/_next/static/chunks/pages/settings/{custom-fields-10df8d6fdc8bc149.js → custom-fields-45bea76ff7eda3cb.js} +0 -0
  138. /fides/ui-build/static/admin/_next/static/chunks/pages/settings/{domain-records-4056a3323cdc7042.js → domain-records-51333dbd21cb37c8.js} +0 -0
  139. /fides/ui-build/static/admin/_next/static/chunks/pages/settings/{domains-5a3691559262e874.js → domains-bde86e5f6c09da5a.js} +0 -0
  140. /fides/ui-build/static/admin/_next/static/chunks/pages/settings/{email-templates-e1d3c3d0ab878812.js → email-templates-4f9a5cc8bea7725b.js} +0 -0
  141. /fides/ui-build/static/admin/_next/static/chunks/pages/settings/{organization-26df33de21fb11b3.js → organization-55a10e01dffc8039.js} +0 -0
  142. /fides/ui-build/static/admin/_next/static/chunks/pages/systems/configure/[id]/{test-datasets-170c9c55f65ffb0f.js → test-datasets-f91f22cf96566ed4.js} +0 -0
  143. /fides/ui-build/static/admin/_next/static/chunks/pages/{systems-2112c006765c66b6.js → systems-648a0ff4920579ce.js} +0 -0
  144. /fides/ui-build/static/admin/_next/static/chunks/pages/{taxonomy-a53e89319582ce58.js → taxonomy-0b9d1a24188f65a9.js} +0 -0
  145. /fides/ui-build/static/admin/_next/static/chunks/{webpack-ff4c22c9f0840531.js → webpack-63a0c45b150a1037.js} +0 -0
@@ -4,7 +4,7 @@ import csv
4
4
  import io
5
5
  import json
6
6
  from collections import defaultdict
7
- from datetime import datetime
7
+ from datetime import datetime, timezone
8
8
  from typing import (
9
9
  Annotated,
10
10
  Any,
@@ -146,6 +146,7 @@ from fides.common.api.v1.urn_registry import (
146
146
  PRIVACY_REQUEST_BULK_SOFT_DELETE,
147
147
  PRIVACY_REQUEST_DENY,
148
148
  PRIVACY_REQUEST_FILTERED_RESULTS,
149
+ PRIVACY_REQUEST_FINALIZE,
149
150
  PRIVACY_REQUEST_MANUAL_WEBHOOK_ACCESS_INPUT,
150
151
  PRIVACY_REQUEST_MANUAL_WEBHOOK_ERASURE_INPUT,
151
152
  PRIVACY_REQUEST_NOTIFICATIONS,
@@ -1862,6 +1863,48 @@ def resume_privacy_request_from_requires_input(
1862
1863
  return privacy_request # type: ignore[return-value]
1863
1864
 
1864
1865
 
1866
+ @router.post(
1867
+ PRIVACY_REQUEST_FINALIZE,
1868
+ status_code=HTTP_200_OK,
1869
+ response_model=PrivacyRequestResponse,
1870
+ dependencies=[Security(verify_oauth_client, scopes=[PRIVACY_REQUEST_REVIEW])],
1871
+ )
1872
+ def finalize_privacy_request(
1873
+ privacy_request_id: str,
1874
+ *,
1875
+ db: Session = Depends(deps.get_db),
1876
+ client: ClientDetail = Security(
1877
+ verify_oauth_client,
1878
+ scopes=[PRIVACY_REQUEST_REVIEW],
1879
+ ),
1880
+ ) -> PrivacyRequestResponse:
1881
+ """
1882
+ Finalizes a privacy request, moving it from the 'requires_finalization' state to 'complete'.
1883
+ This is done by re-queueing the request, which will then hit the finalization logic in the
1884
+ request runner service. This logic marks the privacy request as complete
1885
+ and sends out any configured messaging to the user.
1886
+ """
1887
+ privacy_request = get_privacy_request_or_error(db, privacy_request_id)
1888
+
1889
+ if privacy_request.status != PrivacyRequestStatus.requires_manual_finalization:
1890
+ raise HTTPException(
1891
+ status_code=HTTP_400_BAD_REQUEST,
1892
+ detail=f"Cannot manually finalize privacy request '{privacy_request_id}': status is {privacy_request.status}, not requires_manual_finalization.",
1893
+ )
1894
+
1895
+ # Set finalized_by and finalized_at here, so the request runner service knows not to
1896
+ # put the request back into the requires_finalization state.
1897
+ privacy_request.finalized_at = datetime.now(timezone.utc)
1898
+ privacy_request.finalized_by = client.user_id
1899
+ privacy_request.save(db=db)
1900
+
1901
+ queue_privacy_request(
1902
+ privacy_request_id=privacy_request_id,
1903
+ )
1904
+
1905
+ return privacy_request # type: ignore[return-value]
1906
+
1907
+
1865
1908
  @router.get(
1866
1909
  REQUEST_TASKS,
1867
1910
  dependencies=[Security(verify_oauth_client, scopes=[PRIVACY_REQUEST_READ])],
@@ -24,6 +24,7 @@ EXECUTION_CHECKPOINTS = [
24
24
  CurrentStep.finalize_consent,
25
25
  CurrentStep.email_post_send,
26
26
  CurrentStep.post_webhooks,
27
+ CurrentStep.finalization,
27
28
  ]
28
29
 
29
30
  COMPLETED_EXECUTION_LOG_STATUSES = [
@@ -145,6 +145,12 @@ class PrivacyRequest(
145
145
  ForeignKey(FidesUser.id_field_path, ondelete="SET NULL"),
146
146
  nullable=True,
147
147
  )
148
+ finalized_at = Column(DateTime(timezone=True), nullable=True)
149
+ finalized_by = Column(
150
+ String,
151
+ ForeignKey(FidesUser.id_field_path, ondelete="SET NULL"),
152
+ nullable=True,
153
+ )
148
154
  submitted_by = Column(
149
155
  String,
150
156
  ForeignKey(FidesUser.id_field_path, ondelete="SET NULL"),
@@ -28,6 +28,7 @@ class CurrentStep(EnumType):
28
28
  finalize_consent = "finalize_consent"
29
29
  email_post_send = "email_post_send"
30
30
  post_webhooks = "post_webhooks"
31
+ finalization = "finalization"
31
32
 
32
33
 
33
34
  # action types we actively support in policies/requests
@@ -124,6 +124,8 @@ class PrivacyRequestResubmit(PrivacyRequestCreate):
124
124
  identity_verified_at: Optional[datetime] = None
125
125
  custom_privacy_request_fields_approved_at: Optional[datetime] = None
126
126
  custom_privacy_request_fields_approved_by: Optional[str] = None
127
+ finalized_at: Optional[datetime] = None
128
+ finalized_by: Optional[str] = None
127
129
 
128
130
 
129
131
  class ConsentRequestCreate(FidesSchema):
@@ -287,6 +289,7 @@ class PrivacyRequestStatus(str, EnumType):
287
289
  complete = "complete"
288
290
  paused = "paused"
289
291
  awaiting_email_send = "awaiting_email_send"
292
+ requires_manual_finalization = "requires_manual_finalization"
290
293
  canceled = "canceled"
291
294
  error = "error"
292
295
 
@@ -320,6 +323,8 @@ class PrivacyRequestResponse(FidesSchema):
320
323
  source: Optional[PrivacyRequestSource] = None
321
324
  deleted_at: Optional[datetime] = None
322
325
  deleted_by: Optional[str] = None
326
+ finalized_at: Optional[datetime] = None
327
+ finalized_by: Optional[str] = None
323
328
  model_config = ConfigDict(from_attributes=True, use_enum_values=True)
324
329
 
325
330
 
@@ -480,12 +480,21 @@ def run_privacy_request(
480
480
  connection_configs
481
481
  )
482
482
 
483
+ # If the privacy request requires manual finalization and has not yet been finalized, we exit here
484
+ if (
485
+ privacy_request.status
486
+ == PrivacyRequestStatus.requires_manual_finalization
487
+ and privacy_request.finalized_at is None
488
+ ):
489
+ return
490
+
483
491
  # Access CHECKPOINT
484
492
  if (
485
493
  policy.get_rules_for_action(action_type=ActionType.access)
486
494
  or policy.get_rules_for_action(action_type=ActionType.erasure)
487
495
  ) and can_run_checkpoint(
488
- request_checkpoint=CurrentStep.access, from_checkpoint=resume_step
496
+ request_checkpoint=CurrentStep.access,
497
+ from_checkpoint=resume_step,
489
498
  ):
490
499
  privacy_request.cache_failed_checkpoint_details(CurrentStep.access)
491
500
  access_runner(
@@ -530,7 +539,8 @@ def run_privacy_request(
530
539
  if policy.get_rules_for_action(
531
540
  action_type=ActionType.erasure
532
541
  ) and can_run_checkpoint(
533
- request_checkpoint=CurrentStep.erasure, from_checkpoint=resume_step
542
+ request_checkpoint=CurrentStep.erasure,
543
+ from_checkpoint=resume_step,
534
544
  ):
535
545
  privacy_request.cache_failed_checkpoint_details(CurrentStep.erasure)
536
546
  _verify_masking_secrets(policy, privacy_request, resume_step)
@@ -656,58 +666,111 @@ def run_privacy_request(
656
666
  if not proceed:
657
667
  return
658
668
 
659
- legacy_request_completion_enabled = ConfigProxy(
660
- session
661
- ).notifications.send_request_completion_notification
662
-
663
- action_type = (
664
- MessagingActionType.PRIVACY_REQUEST_COMPLETE_ACCESS
665
- if policy.get_rules_for_action(action_type=ActionType.access)
666
- else MessagingActionType.PRIVACY_REQUEST_COMPLETE_DELETION
667
- )
668
-
669
- if message_send_enabled(
670
- session,
671
- privacy_request.property_id,
672
- action_type,
673
- legacy_request_completion_enabled,
674
- ) and not policy.get_rules_for_action(action_type=ActionType.consent):
675
- try:
676
- if not access_result_urls:
677
- # For DSR 3.0, if the request had both access and erasure rules, this needs to be fetched
678
- # from the database because the Privacy Request would have exited
679
- # processing and lost access to the access_result_urls in memory
680
- access_result_urls = (
681
- privacy_request.access_result_urls or {}
682
- ).get("access_result_urls", [])
683
- initiate_privacy_request_completion_email(
684
- session,
685
- policy,
686
- access_result_urls,
687
- identity_data,
688
- privacy_request.property_id,
689
- )
690
- except (IdentityNotFoundException, MessageDispatchException) as e:
691
- privacy_request.error_processing(db=session)
692
- # If dev mode, log traceback
693
- _log_exception(e, CONFIG.dev_mode)
694
- return
695
-
696
- # Only mark as complete if not in error state
697
- if privacy_request.status != PrivacyRequestStatus.error:
698
- privacy_request.finished_processing_at = datetime.utcnow()
699
- AuditLog.create(
700
- db=session,
701
- data={
702
- "user_id": "system",
703
- "privacy_request_id": privacy_request.id,
704
- "action": AuditLogAction.finished,
705
- "message": "",
706
- },
669
+ # Request finalization CHECKPOINT
670
+ if can_run_checkpoint(
671
+ request_checkpoint=CurrentStep.finalization,
672
+ from_checkpoint=resume_step,
673
+ ):
674
+ privacy_request.cache_failed_checkpoint_details(
675
+ CurrentStep.finalization,
707
676
  )
708
- privacy_request.status = PrivacyRequestStatus.complete
709
- logger.info("Privacy request run completed.")
710
- privacy_request.save(db=session)
677
+ if privacy_request.status != PrivacyRequestStatus.error:
678
+ erasure_rules = policy.get_rules_for_action(
679
+ action_type=ActionType.erasure
680
+ )
681
+ if (
682
+ privacy_request.finalized_at is None
683
+ and erasure_rules
684
+ and CONFIG.execution.erasure_request_finalization_required
685
+ ):
686
+ logger.info(
687
+ "Marking privacy request '{}' as requires manual finalization.",
688
+ privacy_request.id,
689
+ )
690
+ privacy_request.status = (
691
+ PrivacyRequestStatus.requires_manual_finalization
692
+ )
693
+ privacy_request.save(db=session)
694
+ return
695
+
696
+ # Finally, mark the request as complete
697
+ if privacy_request.finalized_at:
698
+ logger.info(
699
+ "Marking privacy request '{}' as finalized.",
700
+ privacy_request.id,
701
+ )
702
+ privacy_request.add_success_execution_log(
703
+ session,
704
+ connection_key=None,
705
+ dataset_name="Request finalized",
706
+ collection_name=None,
707
+ message=f"Request finalized for privacy request: {privacy_request.id}",
708
+ action_type=privacy_request.policy.get_action_type(), # type: ignore
709
+ )
710
+
711
+ logger.info(
712
+ "Marking privacy request '{}' as complete.",
713
+ privacy_request.id,
714
+ )
715
+ AuditLog.create(
716
+ db=session,
717
+ data={
718
+ "user_id": "system",
719
+ "privacy_request_id": privacy_request.id,
720
+ "action": AuditLogAction.finished,
721
+ "message": "",
722
+ },
723
+ )
724
+ privacy_request.status = PrivacyRequestStatus.complete
725
+ privacy_request.finished_processing_at = datetime.utcnow()
726
+ privacy_request.save(db=session)
727
+
728
+ # Send a final email to the user confirming request completion
729
+ if privacy_request.status == PrivacyRequestStatus.complete:
730
+ legacy_request_completion_enabled = ConfigProxy(
731
+ session
732
+ ).notifications.send_request_completion_notification
733
+
734
+ action_type = (
735
+ MessagingActionType.PRIVACY_REQUEST_COMPLETE_ACCESS
736
+ if policy.get_rules_for_action(
737
+ action_type=ActionType.access
738
+ )
739
+ else MessagingActionType.PRIVACY_REQUEST_COMPLETE_DELETION
740
+ )
741
+
742
+ if message_send_enabled(
743
+ session,
744
+ privacy_request.property_id,
745
+ action_type,
746
+ legacy_request_completion_enabled,
747
+ ) and not policy.get_rules_for_action(
748
+ action_type=ActionType.consent
749
+ ):
750
+ if not access_result_urls:
751
+ # For DSR 3.0, if the request had both access and erasure rules, this needs to be fetched
752
+ # from the database because the Privacy Request would have exited
753
+ # processing and lost access to the access_result_urls in memory
754
+ access_result_urls = (
755
+ privacy_request.access_result_urls or {}
756
+ ).get("access_result_urls", [])
757
+
758
+ try:
759
+ initiate_privacy_request_completion_email(
760
+ session,
761
+ policy,
762
+ access_result_urls,
763
+ identity_data,
764
+ privacy_request.property_id,
765
+ )
766
+ except (
767
+ IdentityNotFoundException,
768
+ MessageDispatchException,
769
+ ) as e:
770
+ privacy_request.error_processing(db=session)
771
+ # If dev mode, log traceback
772
+ _log_exception(e, CONFIG.dev_mode)
773
+ return
711
774
 
712
775
 
713
776
  def initiate_privacy_request_completion_email(
@@ -93,7 +93,7 @@ PRIVACY_REQUEST_ACCESS_RESULTS = "/privacy-request/{privacy_request_id}/access-r
93
93
  PRIVACY_REQUEST_FILTERED_RESULTS = (
94
94
  "/privacy-request/{privacy_request_id}/filtered-results"
95
95
  )
96
-
96
+ PRIVACY_REQUEST_FINALIZE = "/privacy-request/{privacy_request_id}/finalize"
97
97
  PRIVACY_REQUEST_VERIFY_IDENTITY = "/privacy-request/{privacy_request_id}/verify"
98
98
  PRIVACY_REQUEST_RESUME = "/privacy-request/{privacy_request_id}/resume"
99
99
  PRIVACY_REQUEST_NOTIFICATIONS = "/privacy-request/notification"
@@ -61,6 +61,10 @@ class ExecutionSettings(FidesSettings):
61
61
  default=False,
62
62
  description="Temporary flag to switch to using DSR 3.0 to process your tasks.",
63
63
  )
64
+ erasure_request_finalization_required: bool = Field(
65
+ default=False,
66
+ description="Whether erasure requests require an additional finalization step after all collections have been executed.",
67
+ )
64
68
  fuzzy_search_enabled: bool = Field(
65
69
  default=True,
66
70
  description="Whether fuzzy search is enabled for privacy request lookups.",
@@ -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/b81194f2c3930152.css" as="style"/><link rel="stylesheet" href="/_next/static/css/b81194f2c3930152.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-ff4c22c9f0840531.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-65e47e67bee20654.js" defer=""></script><script src="/_next/static/chunks/pages/404-2d803dab6a00f353.js" defer=""></script><script src="/_next/static/QGhYEMWDATmdofDzIl0_2/_buildManifest.js" defer=""></script><script src="/_next/static/QGhYEMWDATmdofDzIl0_2/_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":"QGhYEMWDATmdofDzIl0_2","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
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/b81194f2c3930152.css" as="style"/><link rel="stylesheet" href="/_next/static/css/b81194f2c3930152.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-63a0c45b150a1037.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-be7889cec5a0f5cd.js" defer=""></script><script src="/_next/static/chunks/pages/404-2d803dab6a00f353.js" defer=""></script><script src="/_next/static/CQD5hIjm-4lH18YYESYuD/_buildManifest.js" defer=""></script><script src="/_next/static/CQD5hIjm-4lH18YYESYuD/_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":"CQD5hIjm-4lH18YYESYuD","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
@@ -1 +1 @@
1
- self.__BUILD_MANIFEST=function(s,e,t,a,c,n,i,d,o,r,p,f,u,g,m,j,k,b,h,y,l,v,I,F,x,_,U,w,q,N,A,S,B,C,z,D,E,L,M,T,P,G,H,J,K,O,Q){return{__rewrites:{afterFiles:[],beforeFiles:[],fallback:[]},"/":[l,"static/chunks/pages/index-f127ebaac4689d10.js"],"/404":["static/chunks/pages/404-2d803dab6a00f353.js"],"/_error":["static/chunks/pages/_error-bede3a8288930dcf.js"],"/add-systems":[l,"static/chunks/pages/add-systems-f28841affa791975.js"],"/add-systems/manual":[s,e,t,c,p,a,i,f,j,v,I,"static/chunks/pages/add-systems/manual-acb59f8b5e97512a.js"],"/add-systems/multiple":[i,u,F,"static/chunks/pages/add-systems/multiple-8ff7f37913ad736a.js"],"/consent":["static/chunks/pages/consent-509691da6b06f834.js"],"/consent/configure":[i,u,"static/chunks/pages/consent/configure-50d21e23b607688b.js"],"/consent/configure/add-vendors":[i,u,F,"static/chunks/pages/consent/configure/add-vendors-d00c9034cdeb0236.js"],"/consent/privacy-experience":[p,x,"static/chunks/pages/consent/privacy-experience-09d4408014bcfe1c.js"],"/consent/privacy-experience/new":[s,e,d,_,g,U,"static/chunks/pages/consent/privacy-experience/new-06bb3b0bf097fcdb.js"],"/consent/privacy-experience/[id]":[s,e,d,_,g,U,"static/chunks/pages/consent/privacy-experience/[id]-fc3a011154a2e1de.js"],"/consent/privacy-notices":[x,"static/chunks/pages/consent/privacy-notices-23e9dcd4590312d2.js"],"/consent/privacy-notices/new":[s,e,d,w,g,q,"static/chunks/pages/consent/privacy-notices/new-3f20e8a316bb3d5b.js"],"/consent/privacy-notices/[id]":[s,e,d,w,g,q,"static/chunks/pages/consent/privacy-notices/[id]-d67542783ef5ddac.js"],"/consent/properties":[N,"static/chunks/pages/consent/properties-057cad65e7414a44.js"],"/consent/reporting":[s,"static/chunks/pages/consent/reporting-8f891957c8944137.js"],"/data-catalog":[s,e,t,a,"static/css/95ac327e5d70148d.css","static/chunks/pages/data-catalog-2f43cfefc869b85f.js"],"/data-catalog/[systemId]/projects":[s,e,t,a,k,n,"static/chunks/pages/data-catalog/[systemId]/projects-774fecea22ba8852.js"],"/data-catalog/[systemId]/projects/[projectUrn]":[A,"static/chunks/pages/data-catalog/[systemId]/projects/[projectUrn]-80a6cc8e8573514a.js"],"/data-catalog/[systemId]/projects/[projectUrn]/[resourceUrn]":[s,e,t,a,k,S,n,"static/chunks/pages/data-catalog/[systemId]/projects/[projectUrn]/[resourceUrn]-99c9092d65c94807.js"],"/data-catalog/[systemId]/resources":[A,"static/chunks/pages/data-catalog/[systemId]/resources-6c3714ee97a718c1.js"],"/data-catalog/[systemId]/resources/[resourceUrn]":[s,e,t,a,k,S,n,"static/chunks/pages/data-catalog/[systemId]/resources/[resourceUrn]-f6bd6aff389cb9fe.js"],"/data-discovery/action-center":["static/chunks/pages/data-discovery/action-center-409694b8441bd8fb.js"],"/data-discovery/action-center/[monitorId]":[s,e,t,B,b,"static/chunks/pages/data-discovery/action-center/[monitorId]-7e63ac744c45f6da.js"],"/data-discovery/action-center/[monitorId]/[systemId]":[s,e,t,i,j,B,"static/css/23cf870196941c9a.css","static/chunks/pages/data-discovery/action-center/[monitorId]/[systemId]-71579a199158952e.js"],"/data-discovery/activity":[r,"static/chunks/pages/data-discovery/activity-5af9381f02b2aff6.js"],"/data-discovery/detection":[r,C,"static/chunks/pages/data-discovery/detection-2822a423a7ad0550.js"],"/data-discovery/detection/[resourceUrn]":[r,C,"static/chunks/pages/data-discovery/detection/[resourceUrn]-31e6c54794a9883e.js"],"/data-discovery/discovery":[s,e,t,a,r,z,n,"static/chunks/pages/data-discovery/discovery-3eac407ac5181a3c.js"],"/data-discovery/discovery/[resourceUrn]":[s,e,t,a,r,z,n,"static/chunks/pages/data-discovery/discovery/[resourceUrn]-6421ce247549c5d6.js"],"/datamap":["static/chunks/255-7db55b0e3a0f9dea.js",f,D,"static/chunks/pages/datamap-e707dc714452498e.js"],"/dataset":[o,m,"static/chunks/pages/dataset-747b7a13289f1cd7.js"],"/dataset/new":[o,m,"static/chunks/pages/dataset/new-513c862c3a707735.js"],"/dataset/[datasetId]":["static/chunks/9729-fcf6ff4e3534e4a8.js",h,"static/chunks/pages/dataset/[datasetId]-a8e8b5f4ee7af86c.js"],"/dataset/[datasetId]/[collectionName]":[s,e,t,c,a,h,n,"static/chunks/pages/dataset/[datasetId]/[collectionName]-e548cabda7da32c9.js"],"/dataset/[datasetId]/[collectionName]/[...subfieldNames]":[s,e,t,c,a,h,n,"static/chunks/pages/dataset/[datasetId]/[collectionName]/[...subfieldNames]-1c98bd0959d9570a.js"],"/datastore-connection":["static/css/5f393dea1c0d031c.css","static/chunks/pages/datastore-connection-6865aa958f3da342.js"],"/datastore-connection/new":[s,c,o,p,E,m,L,"static/chunks/pages/datastore-connection/new-d2cad97495e86adb.js"],"/datastore-connection/[id]":[s,c,o,E,m,L,"static/chunks/pages/datastore-connection/[id]-3d22525b3c327b2e.js"],"/fides-js-docs":["static/chunks/2fbcc6de-a6c61724c327e9fa.js","static/chunks/e3251fe7-5777b5d778e6fffa.js",s,e,t,c,o,M,"static/css/ab65b8cc3144bfc8.css","static/chunks/905-ffdbd0b14167e8bd.js","static/chunks/pages/fides-js-docs-5d8fd1af75f19e2f.js"],"/integrations":[s,e,t,c,d,T,P,n,"static/chunks/pages/integrations-f10a7dcf7541c865.js"],"/integrations/[id]":[s,e,t,c,d,T,P,n,"static/chunks/pages/integrations/[id]-8d83a5518c00fcfc.js"],"/login":["static/chunks/pages/login-0cb0eb44bf2dd24c.js"],"/login/[provider]":["static/chunks/pages/login/[provider]-c58beef131c3a82d.js"],"/messaging":[s,e,t,"static/chunks/pages/messaging-c1bd3e7adbe8d2d3.js"],"/messaging/add-template":[G,"static/chunks/pages/messaging/add-template-feca66ad5c5fe54a.js"],"/messaging/[id]":[G,"static/chunks/pages/messaging/[id]-5627d0d0668077f9.js"],"/poc/ant-components":["static/chunks/pages/poc/ant-components-64a322d01aae5ca7.js"],"/poc/form-experiments/AntForm":["static/chunks/pages/poc/form-experiments/AntForm-8bca16a7726e7eb2.js"],"/poc/form-experiments/FormikAntFormItem":["static/chunks/pages/poc/form-experiments/FormikAntFormItem-b0f246fc3b67ebf7.js"],"/poc/form-experiments/FormikControlled":["static/chunks/pages/poc/form-experiments/FormikControlled-1a0852b090bfc392.js"],"/poc/form-experiments/FormikField":["static/chunks/pages/poc/form-experiments/FormikField-11f3de1b45e36583.js"],"/poc/form-experiments/FormikSpreadField":[H,"static/chunks/pages/poc/form-experiments/FormikSpreadField-af097d661f6abcf4.js"],"/poc/forms":[H,"static/chunks/pages/poc/forms-1b73a1c2b6c6285f.js"],"/poc/table-migration":[i,u,"static/chunks/pages/poc/table-migration-05616e2ae20ff4f8.js"],"/privacy-requests":[s,e,J,"static/chunks/pages/privacy-requests-1daa805a3099c6d4.js"],"/privacy-requests/configure":["static/chunks/pages/privacy-requests/configure-295bfe6880b209f2.js"],"/privacy-requests/configure/messaging":["static/chunks/pages/privacy-requests/configure/messaging-f9be923340cd99cf.js"],"/privacy-requests/configure/storage":["static/chunks/pages/privacy-requests/configure/storage-eb1ccc8a5dbf0fe5.js"],"/privacy-requests/[id]":[J,"static/css/94965f224bc991e9.css","static/chunks/pages/privacy-requests/[id]-f18b2b83c4592f03.js"],"/properties":[N,"static/chunks/pages/properties-e959378bb32b6b73.js"],"/properties/add-property":[K,"static/chunks/pages/properties/add-property-0bdbc1fcbf553b8f.js"],"/properties/[id]":[K,"static/chunks/pages/properties/[id]-dd99183f93763ae4.js"],"/reporting/datamap":[s,e,t,M,f,D,"static/chunks/pages/reporting/datamap-2a98bd257edd8f47.js"],"/settings/about":["static/chunks/pages/settings/about-9839e544924ac1f2.js"],"/settings/about/alpha":["static/chunks/pages/settings/about/alpha-8152e5828469cf91.js"],"/settings/consent":["static/chunks/pages/settings/consent-f7a0f8367129cd70.js"],"/settings/consent/[configuration_id]/[purpose_id]":["static/chunks/pages/settings/consent/[configuration_id]/[purpose_id]-668d74c041d74650.js"],"/settings/custom-fields":["static/chunks/pages/settings/custom-fields-10df8d6fdc8bc149.js"],"/settings/domain-records":["static/chunks/pages/settings/domain-records-4056a3323cdc7042.js"],"/settings/domains":["static/chunks/pages/settings/domains-5a3691559262e874.js"],"/settings/email-templates":["static/chunks/pages/settings/email-templates-e1d3c3d0ab878812.js"],"/settings/locations":[O,b,"static/chunks/pages/settings/locations-6946e78a5d43e654.js"],"/settings/organization":["static/chunks/pages/settings/organization-26df33de21fb11b3.js"],"/settings/regulations":[O,b,"static/chunks/pages/settings/regulations-102efd9199e87124.js"],"/systems":["static/chunks/pages/systems-2112c006765c66b6.js"],"/systems/configure/[id]":[s,e,t,c,p,a,i,f,j,v,I,"static/chunks/pages/systems/configure/[id]-d4a57ea18935dd70.js"],"/systems/configure/[id]/test-datasets":[o,"static/chunks/pages/systems/configure/[id]/test-datasets-170c9c55f65ffb0f.js"],"/taxonomy":["static/chunks/678d4732-50255cc09048e643.js",s,e,t,d,"static/chunks/570-c99f07161bd339cd.js","static/css/34a7eb08b86ddb57.css","static/chunks/pages/taxonomy-a53e89319582ce58.js"],"/user-management":[y,"static/chunks/pages/user-management-45bfa04e45a7d13f.js"],"/user-management/new":[y,Q,"static/chunks/pages/user-management/new-bc4eb541906781e6.js"],"/user-management/profile/[id]":[y,Q,"static/chunks/pages/user-management/profile/[id]-fe58cebba358119d.js"],sortedPages:["/","/404","/_app","/_error","/add-systems","/add-systems/manual","/add-systems/multiple","/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]","/poc/ant-components","/poc/form-experiments/AntForm","/poc/form-experiments/FormikAntFormItem","/poc/form-experiments/FormikControlled","/poc/form-experiments/FormikField","/poc/form-experiments/FormikSpreadField","/poc/forms","/poc/table-migration","/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/about/alpha","/settings/consent","/settings/consent/[configuration_id]/[purpose_id]","/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/2858-0b44609b6be7850b.js","static/chunks/2866-a73888c17a195cbe.js","static/chunks/9278-9b1b5970f0702668.js","static/chunks/409-45a125437261580c.js","static/chunks/699-8ca44b0de9fa20f0.js","static/css/d2d4e9a6923e6730.css","static/chunks/401-3cc1fee61494e3bd.js","static/chunks/3662-f6a1ddca5ee42076.js","static/chunks/6527-0eed08abe252a918.js","static/chunks/431-ade3e312fac3430b.js","static/chunks/5277-e8a036319456127f.js","static/chunks/9951-595d0f1588215081.js","static/chunks/3923-13a6b4da2d51bf8f.js","static/chunks/6084-a872a8bc704c980f.js","static/chunks/5574-a7d8a753d273b11a.js","static/chunks/6780-4b687168dd8daa84.js","static/chunks/6882-85c6277d9531a83a.js","static/css/10994e916bc9a00a.css","static/chunks/9226-7a799c930b73f217.js","static/chunks/7476-cfe41e915f0c4f40.js","static/css/972dc7eef106ee7c.css","static/chunks/3450-f7bb8d46fbe4e78d.js","static/css/304c6f148886a8d4.css","static/chunks/796-d2876f4d09a6d81f.js","static/chunks/6853-4f8bf6558f8c6a46.js","static/chunks/9014-eeae6f581158e645.js","static/chunks/1817-6f35f58cd08b04ae.js","static/chunks/3615-5e2d062d684b8fa1.js","static/chunks/6954-34e062e4bffc7e71.js","static/chunks/79-1952e8aab93b7209.js","static/chunks/3872-08c855f3edb230c4.js","static/chunks/3855-e2fa6db53d32c3de.js","static/chunks/8237-55049f8f5fd5e058.js","static/chunks/5309-67bdf9001531e972.js","static/chunks/9046-54877976a0529de2.js","static/chunks/4230-840c287045c88b34.js","static/chunks/1807-3beab149351d5ded.js","static/chunks/4608-a8e3100e2806dbff.js","static/chunks/2599-6c4d22e75028d8b6.js","static/chunks/1316-6cc72a45ebf7ff81.js","static/chunks/6662-4a7805f74af51f1d.js","static/chunks/7630-7a8039aa37893129.js","static/chunks/2921-86f1547ac40a5cdf.js","static/chunks/203-d9fe5384a6e94799.js","static/chunks/787-d05b25c73f49b6af.js","static/chunks/9826-b7d5467e3a3225c8.js","static/chunks/4121-f50675521dfee6eb.js"),self.__BUILD_MANIFEST_CB&&self.__BUILD_MANIFEST_CB();
1
+ self.__BUILD_MANIFEST=function(s,e,t,a,c,n,i,d,o,r,p,u,g,f,m,j,b,k,h,y,l,v,I,F,x,_,U,w,q,N,A,S,B,C,z,D,E,L,M,T,P,G,H,J,K,O,Q){return{__rewrites:{afterFiles:[],beforeFiles:[],fallback:[]},"/":[l,"static/chunks/pages/index-12ac3e317fc86f21.js"],"/404":["static/chunks/pages/404-2d803dab6a00f353.js"],"/_error":["static/chunks/pages/_error-bede3a8288930dcf.js"],"/add-systems":[l,"static/chunks/pages/add-systems-0943633a8e422695.js"],"/add-systems/manual":[s,e,t,c,p,a,i,u,j,v,I,"static/chunks/pages/add-systems/manual-acb59f8b5e97512a.js"],"/add-systems/multiple":[i,g,F,"static/chunks/pages/add-systems/multiple-8ff7f37913ad736a.js"],"/consent":["static/chunks/pages/consent-e17c56eec8d91371.js"],"/consent/configure":[i,g,"static/chunks/pages/consent/configure-0e1ca0f4c8e7f4da.js"],"/consent/configure/add-vendors":[i,g,F,"static/chunks/pages/consent/configure/add-vendors-d00c9034cdeb0236.js"],"/consent/privacy-experience":[p,x,"static/chunks/pages/consent/privacy-experience-09d4408014bcfe1c.js"],"/consent/privacy-experience/new":[s,e,d,_,f,U,"static/chunks/pages/consent/privacy-experience/new-06bb3b0bf097fcdb.js"],"/consent/privacy-experience/[id]":[s,e,d,_,f,U,"static/chunks/pages/consent/privacy-experience/[id]-fc3a011154a2e1de.js"],"/consent/privacy-notices":[x,"static/chunks/pages/consent/privacy-notices-23e9dcd4590312d2.js"],"/consent/privacy-notices/new":[s,e,d,w,f,q,"static/chunks/pages/consent/privacy-notices/new-3f20e8a316bb3d5b.js"],"/consent/privacy-notices/[id]":[s,e,d,w,f,q,"static/chunks/pages/consent/privacy-notices/[id]-d67542783ef5ddac.js"],"/consent/properties":[N,"static/chunks/pages/consent/properties-057cad65e7414a44.js"],"/consent/reporting":[s,"static/chunks/pages/consent/reporting-8f891957c8944137.js"],"/data-catalog":[s,e,t,a,"static/css/95ac327e5d70148d.css","static/chunks/pages/data-catalog-8a7f9285da66b965.js"],"/data-catalog/[systemId]/projects":[s,e,t,a,b,n,"static/chunks/pages/data-catalog/[systemId]/projects-774fecea22ba8852.js"],"/data-catalog/[systemId]/projects/[projectUrn]":[A,"static/chunks/pages/data-catalog/[systemId]/projects/[projectUrn]-80a6cc8e8573514a.js"],"/data-catalog/[systemId]/projects/[projectUrn]/[resourceUrn]":[s,e,t,a,b,S,n,"static/chunks/pages/data-catalog/[systemId]/projects/[projectUrn]/[resourceUrn]-99c9092d65c94807.js"],"/data-catalog/[systemId]/resources":[A,"static/chunks/pages/data-catalog/[systemId]/resources-6c3714ee97a718c1.js"],"/data-catalog/[systemId]/resources/[resourceUrn]":[s,e,t,a,b,S,n,"static/chunks/pages/data-catalog/[systemId]/resources/[resourceUrn]-f6bd6aff389cb9fe.js"],"/data-discovery/action-center":["static/chunks/pages/data-discovery/action-center-85e140788e251272.js"],"/data-discovery/action-center/[monitorId]":[s,e,t,B,k,"static/chunks/pages/data-discovery/action-center/[monitorId]-7e63ac744c45f6da.js"],"/data-discovery/action-center/[monitorId]/[systemId]":[s,e,t,i,j,B,"static/css/23cf870196941c9a.css","static/chunks/pages/data-discovery/action-center/[monitorId]/[systemId]-71579a199158952e.js"],"/data-discovery/activity":[r,"static/chunks/pages/data-discovery/activity-5af9381f02b2aff6.js"],"/data-discovery/detection":[r,C,"static/chunks/pages/data-discovery/detection-2822a423a7ad0550.js"],"/data-discovery/detection/[resourceUrn]":[r,C,"static/chunks/pages/data-discovery/detection/[resourceUrn]-31e6c54794a9883e.js"],"/data-discovery/discovery":[s,e,t,a,r,z,n,"static/chunks/pages/data-discovery/discovery-3eac407ac5181a3c.js"],"/data-discovery/discovery/[resourceUrn]":[s,e,t,a,r,z,n,"static/chunks/pages/data-discovery/discovery/[resourceUrn]-6421ce247549c5d6.js"],"/datamap":["static/chunks/255-7db55b0e3a0f9dea.js",u,D,"static/chunks/pages/datamap-d2b275d83089820d.js"],"/dataset":[o,m,"static/chunks/pages/dataset-747b7a13289f1cd7.js"],"/dataset/new":[o,m,"static/chunks/pages/dataset/new-513c862c3a707735.js"],"/dataset/[datasetId]":["static/chunks/9729-fcf6ff4e3534e4a8.js",h,"static/chunks/pages/dataset/[datasetId]-a8e8b5f4ee7af86c.js"],"/dataset/[datasetId]/[collectionName]":[s,e,t,c,a,h,n,"static/chunks/pages/dataset/[datasetId]/[collectionName]-e548cabda7da32c9.js"],"/dataset/[datasetId]/[collectionName]/[...subfieldNames]":[s,e,t,c,a,h,n,"static/chunks/pages/dataset/[datasetId]/[collectionName]/[...subfieldNames]-1c98bd0959d9570a.js"],"/datastore-connection":["static/css/5f393dea1c0d031c.css","static/chunks/pages/datastore-connection-0f29b47402292070.js"],"/datastore-connection/new":[s,c,o,p,E,m,L,"static/chunks/pages/datastore-connection/new-d2cad97495e86adb.js"],"/datastore-connection/[id]":[s,c,o,E,m,L,"static/chunks/pages/datastore-connection/[id]-3d22525b3c327b2e.js"],"/fides-js-docs":["static/chunks/2fbcc6de-a6c61724c327e9fa.js","static/chunks/e3251fe7-5777b5d778e6fffa.js",s,e,t,c,o,M,"static/css/ab65b8cc3144bfc8.css","static/chunks/905-ffdbd0b14167e8bd.js","static/chunks/pages/fides-js-docs-5d8fd1af75f19e2f.js"],"/integrations":[s,e,t,c,d,T,P,n,"static/chunks/pages/integrations-f10a7dcf7541c865.js"],"/integrations/[id]":[s,e,t,c,d,T,P,n,"static/chunks/pages/integrations/[id]-8d83a5518c00fcfc.js"],"/login":["static/chunks/pages/login-0cb0eb44bf2dd24c.js"],"/login/[provider]":["static/chunks/pages/login/[provider]-c58beef131c3a82d.js"],"/messaging":[s,e,t,"static/chunks/pages/messaging-c1bd3e7adbe8d2d3.js"],"/messaging/add-template":[G,"static/chunks/pages/messaging/add-template-feca66ad5c5fe54a.js"],"/messaging/[id]":[G,"static/chunks/pages/messaging/[id]-5627d0d0668077f9.js"],"/poc/ant-components":["static/chunks/pages/poc/ant-components-64a322d01aae5ca7.js"],"/poc/form-experiments/AntForm":["static/chunks/pages/poc/form-experiments/AntForm-8bca16a7726e7eb2.js"],"/poc/form-experiments/FormikAntFormItem":["static/chunks/pages/poc/form-experiments/FormikAntFormItem-b0f246fc3b67ebf7.js"],"/poc/form-experiments/FormikControlled":["static/chunks/pages/poc/form-experiments/FormikControlled-1a0852b090bfc392.js"],"/poc/form-experiments/FormikField":["static/chunks/pages/poc/form-experiments/FormikField-11f3de1b45e36583.js"],"/poc/form-experiments/FormikSpreadField":[H,"static/chunks/pages/poc/form-experiments/FormikSpreadField-af097d661f6abcf4.js"],"/poc/forms":[H,"static/chunks/pages/poc/forms-1b73a1c2b6c6285f.js"],"/poc/table-migration":[i,g,"static/chunks/pages/poc/table-migration-05616e2ae20ff4f8.js"],"/privacy-requests":[s,e,J,"static/chunks/pages/privacy-requests-6a9068df48bdee05.js"],"/privacy-requests/configure":["static/chunks/pages/privacy-requests/configure-e551a860ec727802.js"],"/privacy-requests/configure/messaging":["static/chunks/pages/privacy-requests/configure/messaging-7498d1d5974a78b0.js"],"/privacy-requests/configure/storage":["static/chunks/pages/privacy-requests/configure/storage-2d3a2d967767a131.js"],"/privacy-requests/[id]":[J,"static/css/94965f224bc991e9.css","static/chunks/pages/privacy-requests/[id]-1caa552a8f11f2f2.js"],"/properties":[N,"static/chunks/pages/properties-e959378bb32b6b73.js"],"/properties/add-property":[K,"static/chunks/pages/properties/add-property-0bdbc1fcbf553b8f.js"],"/properties/[id]":[K,"static/chunks/pages/properties/[id]-dd99183f93763ae4.js"],"/reporting/datamap":[s,e,t,M,u,D,"static/chunks/pages/reporting/datamap-2a98bd257edd8f47.js"],"/settings/about":["static/chunks/pages/settings/about-8155a35a62fdb5ae.js"],"/settings/about/alpha":["static/chunks/pages/settings/about/alpha-8f98a4895e74725e.js"],"/settings/consent":["static/chunks/pages/settings/consent-a989532a12c40dcf.js"],"/settings/consent/[configuration_id]/[purpose_id]":["static/chunks/pages/settings/consent/[configuration_id]/[purpose_id]-668d74c041d74650.js"],"/settings/custom-fields":["static/chunks/pages/settings/custom-fields-45bea76ff7eda3cb.js"],"/settings/domain-records":["static/chunks/pages/settings/domain-records-51333dbd21cb37c8.js"],"/settings/domains":["static/chunks/pages/settings/domains-bde86e5f6c09da5a.js"],"/settings/email-templates":["static/chunks/pages/settings/email-templates-4f9a5cc8bea7725b.js"],"/settings/locations":[O,k,"static/chunks/pages/settings/locations-6946e78a5d43e654.js"],"/settings/organization":["static/chunks/pages/settings/organization-55a10e01dffc8039.js"],"/settings/regulations":[O,k,"static/chunks/pages/settings/regulations-102efd9199e87124.js"],"/systems":["static/chunks/pages/systems-648a0ff4920579ce.js"],"/systems/configure/[id]":[s,e,t,c,p,a,i,u,j,v,I,"static/chunks/pages/systems/configure/[id]-d4a57ea18935dd70.js"],"/systems/configure/[id]/test-datasets":[o,"static/chunks/pages/systems/configure/[id]/test-datasets-f91f22cf96566ed4.js"],"/taxonomy":["static/chunks/678d4732-50255cc09048e643.js",s,e,t,d,"static/chunks/570-c99f07161bd339cd.js","static/css/34a7eb08b86ddb57.css","static/chunks/pages/taxonomy-0b9d1a24188f65a9.js"],"/user-management":[y,"static/chunks/pages/user-management-45bfa04e45a7d13f.js"],"/user-management/new":[y,Q,"static/chunks/pages/user-management/new-bc4eb541906781e6.js"],"/user-management/profile/[id]":[y,Q,"static/chunks/pages/user-management/profile/[id]-fe58cebba358119d.js"],sortedPages:["/","/404","/_app","/_error","/add-systems","/add-systems/manual","/add-systems/multiple","/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]","/poc/ant-components","/poc/form-experiments/AntForm","/poc/form-experiments/FormikAntFormItem","/poc/form-experiments/FormikControlled","/poc/form-experiments/FormikField","/poc/form-experiments/FormikSpreadField","/poc/forms","/poc/table-migration","/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/about/alpha","/settings/consent","/settings/consent/[configuration_id]/[purpose_id]","/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/2858-0b44609b6be7850b.js","static/chunks/2866-a73888c17a195cbe.js","static/chunks/9278-9b1b5970f0702668.js","static/chunks/409-45a125437261580c.js","static/chunks/699-8ca44b0de9fa20f0.js","static/css/d2d4e9a6923e6730.css","static/chunks/401-3cc1fee61494e3bd.js","static/chunks/3662-f6a1ddca5ee42076.js","static/chunks/6527-0eed08abe252a918.js","static/chunks/431-ade3e312fac3430b.js","static/chunks/5277-e8a036319456127f.js","static/chunks/9951-595d0f1588215081.js","static/chunks/3923-13a6b4da2d51bf8f.js","static/chunks/6084-5d7598b7bcb548cf.js","static/chunks/5574-9312f97b637d9ee2.js","static/chunks/6780-4b687168dd8daa84.js","static/chunks/6882-586b84aeb02d5830.js","static/css/10994e916bc9a00a.css","static/chunks/9226-72ad691ca57b83ef.js","static/chunks/7476-d206c11823c91088.js","static/css/972dc7eef106ee7c.css","static/chunks/3450-1cc2bb07ed142203.js","static/css/304c6f148886a8d4.css","static/chunks/796-98d4bd68909fbe1e.js","static/chunks/6853-4f8bf6558f8c6a46.js","static/chunks/9014-eeae6f581158e645.js","static/chunks/1817-6f35f58cd08b04ae.js","static/chunks/3615-5e2d062d684b8fa1.js","static/chunks/6954-34e062e4bffc7e71.js","static/chunks/79-3db1941d274f40c7.js","static/chunks/3872-84b7e380b88b4454.js","static/chunks/3855-e2fa6db53d32c3de.js","static/chunks/8237-55049f8f5fd5e058.js","static/chunks/5309-67bdf9001531e972.js","static/chunks/9046-54877976a0529de2.js","static/chunks/4230-840c287045c88b34.js","static/chunks/1807-3beab149351d5ded.js","static/chunks/4608-a8e3100e2806dbff.js","static/chunks/2599-6c4d22e75028d8b6.js","static/chunks/1316-6cc72a45ebf7ff81.js","static/chunks/6662-efb2cf74641647f2.js","static/chunks/7630-b1c93688013ef013.js","static/chunks/2921-86f1547ac40a5cdf.js","static/chunks/203-4e777c324a01dbec.js","static/chunks/787-cbe2d0bfb513d90a.js","static/chunks/9826-3c578665c6d3b21d.js","static/chunks/4121-f50675521dfee6eb.js"),self.__BUILD_MANIFEST_CB&&self.__BUILD_MANIFEST_CB();
@@ -1 +1 @@
1
- "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[203],{59969:function(e,t,i){var n=i(24246),r=i(13577);i(27378);var l=i(8557);t.Z=e=>{let{daysLeft:t,includeText:i,status:s}=e;if(!t||s===l.q.COMPLETE||s===l.q.CANCELED||s===l.q.DENIED||s===l.q.IDENTITY_UNVERIFIED)return(0,n.jsx)("span",{children:"-"});let a="";switch(!0){case t>=10:a="success";break;case t<10&&t>4:a="warning";break;case t<5:a="error"}return(0,n.jsx)(r.j8w,{color:a,children:i?"".concat(t," days left"):t})}},18225:function(e,t,i){var n=i(24246),r=i(13577);t.Z=e=>{let{alignment:t="center",...i}=e;return(0,n.jsx)(r.kCb,{boxSize:"full",align:"center",justify:t,children:(0,n.jsx)(r.$jN,{color:"primary",...i})})}},58754:function(e,t,i){var n=i(24246),r=i(13577),l=i(70788);t.Z=e=>{let{heading:t,breadcrumbItems:i,isSticky:s=!0,children:a,rightContent:d,style:o,...c}=e;return(0,n.jsxs)("div",{...c,style:s?{position:"sticky",top:"-24px",paddingTop:"24px",paddingBottom:"24px",paddingLeft:"40px",marginLeft:"-40px",paddingRight:"40px",marginRight:"-40px",marginTop:"-24px",left:0,zIndex:20,backgroundColor:"white",...o}:{paddingBottom:"24px",...o},children:[(0,n.jsxs)(r.jqI,{justify:"space-between",children:["string"==typeof t?(0,n.jsx)(r.lQT,{className:i||a?"pb-4":void 0,level:1,"data-testid":"page-heading",children:t}):t,d&&(0,n.jsx)("div",{"data-testid":"page-header-right-content",children:d})]}),!!i&&(0,n.jsx)(l.m,{className:a?"pb-4":void 0,items:i,"data-testid":"page-breadcrumb"}),a]})}},19904:function(e,t,i){i.d(t,{Tg:function(){return s}});var n=i(24246),r=i(16134),l=i(31793);let s=e=>(0,r.C)(l.uu).filter(t=>e.includes(t)).length>0;t.ZP=e=>{let{scopes:t,children:i}=e;return s(t)?(0,n.jsx)(n.Fragment,{children:i}):null}},14047:function(e,t,i){i.d(t,{H:function(){return l},V:function(){return n.V}});var n=i(84306),r=i(812);let l=()=>{let{errorAlert:e}=(0,n.V)();return{handleError:t=>{let i="An unexpected error occurred. Please try again.";(0,r.Ot)(t)?i=t.data.detail:(0,r.tB)(t)&&(i=t.data.detail[0].msg),e(i)}}}},84306:function(e,t,i){i.d(t,{V:function(){return l}});var n=i(24246),r=i(13577);let l=()=>{let e=(0,r.pmc)();return{errorAlert:(t,i,l)=>{let s={...l,position:(null==l?void 0:l.position)||"top",render:e=>{let{onClose:l}=e;return(0,n.jsxs)(r.bZj,{alignItems:"normal",status:"error","data-testid":"error-alert",children:[(0,n.jsx)(r.zMQ,{}),(0,n.jsxs)(r.xuv,{children:[i&&(0,n.jsx)(r.CdC,{children:i}),(0,n.jsx)(r.XaZ,{children:t})]}),(0,n.jsx)(r.PZ7,{onClick:l,position:"relative",right:0,size:"sm",top:-1})]})}};(null==l?void 0:l.id)&&e.isActive(l.id)?e.update(l.id,s):e(s)},successAlert:(t,i,l)=>{let s={...l,position:(null==l?void 0:l.position)||"top",render:e=>{let{onClose:l}=e;return(0,n.jsxs)(r.bZj,{alignItems:"normal",status:"success",variant:"subtle","data-testid":"success-alert",children:[(0,n.jsx)(r.zMQ,{}),(0,n.jsxs)(r.xuv,{children:[i&&(0,n.jsx)(r.CdC,{children:i}),(0,n.jsx)(r.XaZ,{children:t})]}),(0,n.jsx)(r.PZ7,{onClick:l,position:"relative",right:0,size:"sm",top:-1})]})}};(null==l?void 0:l.id)&&e.isActive(l.id)?e.update(l.id,s):e(s)}}}},70788:function(e,t,i){i.d(t,{m:function(){return o}});var n=i(24246),r=i(13577),l=i(79894),s=i.n(l),a=i(27378);let{Text:d}=r.AntTypography,o=e=>{let{items:t,...i}=e,l=(0,a.useMemo)(()=>null==t?void 0:t.map((e,i)=>{let l=i===t.length-1,a={...e},o=a.onClick&&!a.href;return("string"==typeof a.title&&(a.title=(0,n.jsx)(d,{style:{color:"inherit",maxWidth:l?void 0:400},ellipsis:!l,children:a.title})),o)?a.title=(0,n.jsx)(r.wpx,{type:"text",size:"small",icon:a.icon,onClick:a.onClick,className:"ant-breadcrumb-link -mt-px px-1 text-inherit",children:a.title}):(a.icon&&(a.title=(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("span",{className:"anticon align-text-bottom",children:a.icon}),a.title]})),a.href&&a.title&&(a.title=(0,n.jsx)(s(),{href:a.href,className:"ant-breadcrumb-link",children:a.title}),delete a.href)),a}),[t]);return(0,n.jsx)(r.zrq,{items:l,...i})}},57526:function(e,t,i){var n=i(24246),r=i(13577),l=i(27378);t.Z=e=>{let{isOpen:t,onClose:i,onApproveRequest:s,isLoading:a,subjectRequest:d}=e,{identity:o,identity_verified_at:c,custom_privacy_request_fields:u}=d,h=(0,l.useCallback)(()=>{s().then(()=>{i()})},[s,i]);return(0,n.jsxs)(r.u_l,{isOpen:t,onClose:i,size:"lg",isCentered:!0,children:[(0,n.jsx)(r.ZAr,{}),(0,n.jsxs)(r.hzk,{children:[(0,n.jsx)(r.xBx,{children:"Privacy request approval"}),(0,n.jsxs)(r.fef,{paddingTop:0,paddingBottom:0,children:[(0,n.jsx)(r.xvT,{color:"gray.500",fontSize:"14px",marginBottom:4,children:"Are you sure you want to approve this privacy request?"}),(0,n.jsxs)(r.QI$,{children:[Object.entries(o).filter(e=>{let[,{value:t}]=e;return null!==t}).map(e=>{let[t,{value:i,label:l}]=e;return(0,n.jsx)(r.HCh,{children:(0,n.jsxs)(r.kCb,{alignItems:"flex-start",children:[(0,n.jsxs)(r.xvT,{mr:2,fontSize:"sm",color:"gray.900",fontWeight:"500",children:[l,":"]}),(0,n.jsx)(r.xvT,{color:"gray.600",fontWeight:"500",fontSize:"sm",mr:2,children:i}),"(",c?"Verified":"Unverified",")"]},t)},t)}),u&&Object.entries(u).filter(e=>{let[,t]=e;return t.value}).map(e=>{let[t,i]=e;return(0,n.jsx)(r.HCh,{children:(0,n.jsxs)(r.kCb,{alignItems:"flex-start",children:[(0,n.jsxs)(r.xvT,{mr:2,fontSize:"sm",color:"gray.900",fontWeight:"500",children:[i.label,":"]}),(0,n.jsxs)(r.xvT,{color:"gray.600",fontWeight:"500",fontSize:"sm",mr:2,children:[Array.isArray(i.value)?i.value.join(", "):i.value," "]}),"(Unverified)"]},t)},t)})]})]}),(0,n.jsx)(r.mzw,{children:(0,n.jsxs)(r.MIq,{columns:2,width:"100%",children:[(0,n.jsx)(r.wpx,{onClick:i,className:"mr-3","data-testid":"cancel-btn",children:"Cancel"}),(0,n.jsx)(r.wpx,{type:"primary","data-testid":"continue-btn",onClick:h,loading:a,children:"Confirm"})]})})]})]})}},66548:function(e,t,i){var n=i(24246),r=i(40324),l=i(13577),s=i(34090),a=i(27378),d=i(55484);let o={denialReason:""};t.Z=e=>{let{isOpen:t,onClose:i,onDenyRequest:c}=e,u=(0,a.useCallback)((e,t)=>{let{setSubmitting:n}=t;c(e.denialReason).then(()=>{n(!1),i()})},[c,i]);return(0,n.jsxs)(l.u_l,{isOpen:t,onClose:i,isCentered:!0,returnFocusOnClose:!1,children:[(0,n.jsx)(l.ZAr,{}),(0,n.jsx)(l.hzk,{width:"100%",maxWidth:"456px","data-testid":"deny-privacy-request-modal",children:(0,n.jsx)(s.J9,{initialValues:o,validationSchema:d.Ry({denialReason:d.Z_().required().label("Reason for denial")}),onSubmit:u,children:e=>{let{isSubmitting:t,dirty:a,isValid:d}=e;return(0,n.jsxs)(s.l0,{children:[(0,n.jsx)(l.xBx,{children:"Privacy request denial"}),(0,n.jsx)(l.fef,{color:"gray.500",fontSize:"14px",children:"Please enter a reason for denying this privacy request. Please note: this can be seen by the user in their notification email."}),(0,n.jsx)(l.fef,{children:(0,n.jsx)(r.Ks,{name:"denialReason",textAreaProps:{focusBorderColor:"primary.600",resize:"none"}})}),(0,n.jsxs)(l.mzw,{className:"flex w-full gap-4",children:[(0,n.jsx)(l.wpx,{disabled:t,onClick:i,className:"grow",children:"Cancel"}),(0,n.jsx)(l.wpx,{htmlType:"submit",type:"primary",disabled:!a||!d,loading:t,className:"grow","data-testid":"deny-privacy-request-modal-btn",children:"Confirm"})]})]})}})})]})}},45489:function(e,t,i){i.d(t,{Z:function(){return r}});var n=i(90867);let r=e=>{let{subjectRequest:t}=e,[i,r]=(0,n.RW)({fixedCacheKey:t.id}),[l,s]=(0,n.F1)({fixedCacheKey:t.id}),[a,d]=(0,n.rC)({fixedCacheKey:t.id}),o=s.isLoading||r.isLoading;return{approveRequest:i,approveRequestResult:r,denyRequest:l,denyRequestResult:s,handleApproveRequest:()=>i(t),handleDenyRequest:e=>l({id:t.id,reason:e}),handleDeleteRequest:()=>a(t),softDeleteRequestResult:d,isLoading:o}}},72281:function(e,t,i){i.d(t,{G:function(){return a},d:function(){return d}});var n=i(86677),r=i(27378),l=i(19904),s=i(73825);let a={REQUEST:"request",MANUAL_TASK:"manual-tasks"},d=()=>{let e=(0,n.useRouter)(),t=(0,l.Tg)([s.Sh.PRIVACY_REQUEST_READ]),i=(0,l.Tg)([s.Sh.MANUAL_FIELD_READ_OWN,s.Sh.MANUAL_FIELD_READ_ALL]),d=(0,r.useMemo)(()=>({request:t,manualTask:i}),[t,i]),[o,c]=(0,r.useState)(d.request?a.REQUEST:a.MANUAL_TASK),u=(0,r.useCallback)(()=>{let{tab:t}=e.query;return t&&"string"==typeof t&&Object.values(a).includes(t)?t:null},[e.query]),h=(0,r.useCallback)(t=>{e.replace({pathname:e.pathname,query:{tab:t}},void 0,{shallow:!0})},[e]);return(0,r.useEffect)(()=>{if(!e.isReady)return;let t=u();t&&(t===a.REQUEST||t===a.MANUAL_TASK&&d.manualTask)&&c(t)},[e.isReady,e.query,d,u,h]),{activeTab:o,handleTabChange:(0,r.useCallback)(e=>{Object.values(a).includes(e)&&(c(e),h(e))},[h]),availableTabs:d}}}}]);
1
+ "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[203],{59969:function(e,t,i){var n=i(24246),r=i(13577);i(27378);var s=i(8557);t.Z=e=>{let{daysLeft:t,includeText:i,status:l}=e;if(!t||l===s.q.COMPLETE||l===s.q.CANCELED||l===s.q.DENIED||l===s.q.IDENTITY_UNVERIFIED)return(0,n.jsx)("span",{children:"-"});let a="";switch(!0){case t>=10:a="success";break;case t<10&&t>4:a="warning";break;case t<5:a="error"}return(0,n.jsx)(r.j8w,{color:a,children:i?"".concat(t," days left"):t})}},18225:function(e,t,i){var n=i(24246),r=i(13577);t.Z=e=>{let{alignment:t="center",...i}=e;return(0,n.jsx)(r.kCb,{boxSize:"full",align:"center",justify:t,children:(0,n.jsx)(r.$jN,{color:"primary",...i})})}},58754:function(e,t,i){var n=i(24246),r=i(13577),s=i(70788);t.Z=e=>{let{heading:t,breadcrumbItems:i,isSticky:l=!0,children:a,rightContent:d,style:o,...c}=e;return(0,n.jsxs)("div",{...c,style:l?{position:"sticky",top:"-24px",paddingTop:"24px",paddingBottom:"24px",paddingLeft:"40px",marginLeft:"-40px",paddingRight:"40px",marginRight:"-40px",marginTop:"-24px",left:0,zIndex:20,backgroundColor:"white",...o}:{paddingBottom:"24px",...o},children:[(0,n.jsxs)(r.jqI,{justify:"space-between",children:["string"==typeof t?(0,n.jsx)(r.lQT,{className:i||a?"pb-4":void 0,level:1,"data-testid":"page-heading",children:t}):t,d&&(0,n.jsx)("div",{"data-testid":"page-header-right-content",children:d})]}),!!i&&(0,n.jsx)(s.m,{className:a?"pb-4":void 0,items:i,"data-testid":"page-breadcrumb"}),a]})}},19904:function(e,t,i){i.d(t,{Tg:function(){return l}});var n=i(24246),r=i(16134),s=i(31793);let l=e=>(0,r.C)(s.uu).filter(t=>e.includes(t)).length>0;t.ZP=e=>{let{scopes:t,children:i}=e;return l(t)?(0,n.jsx)(n.Fragment,{children:i}):null}},14047:function(e,t,i){i.d(t,{H:function(){return s},V:function(){return n.V}});var n=i(84306),r=i(812);let s=()=>{let{errorAlert:e}=(0,n.V)();return{handleError:t=>{let i="An unexpected error occurred. Please try again.";(0,r.Ot)(t)?i=t.data.detail:(0,r.tB)(t)&&(i=t.data.detail[0].msg),e(i)}}}},84306:function(e,t,i){i.d(t,{V:function(){return s}});var n=i(24246),r=i(13577);let s=()=>{let e=(0,r.pmc)();return{errorAlert:(t,i,s)=>{let l={...s,position:(null==s?void 0:s.position)||"top",render:e=>{let{onClose:s}=e;return(0,n.jsxs)(r.bZj,{alignItems:"normal",status:"error","data-testid":"error-alert",children:[(0,n.jsx)(r.zMQ,{}),(0,n.jsxs)(r.xuv,{children:[i&&(0,n.jsx)(r.CdC,{children:i}),(0,n.jsx)(r.XaZ,{children:t})]}),(0,n.jsx)(r.PZ7,{onClick:s,position:"relative",right:0,size:"sm",top:-1})]})}};(null==s?void 0:s.id)&&e.isActive(s.id)?e.update(s.id,l):e(l)},successAlert:(t,i,s)=>{let l={...s,position:(null==s?void 0:s.position)||"top",render:e=>{let{onClose:s}=e;return(0,n.jsxs)(r.bZj,{alignItems:"normal",status:"success",variant:"subtle","data-testid":"success-alert",children:[(0,n.jsx)(r.zMQ,{}),(0,n.jsxs)(r.xuv,{children:[i&&(0,n.jsx)(r.CdC,{children:i}),(0,n.jsx)(r.XaZ,{children:t})]}),(0,n.jsx)(r.PZ7,{onClick:s,position:"relative",right:0,size:"sm",top:-1})]})}};(null==s?void 0:s.id)&&e.isActive(s.id)?e.update(s.id,l):e(l)}}}},70788:function(e,t,i){i.d(t,{m:function(){return o}});var n=i(24246),r=i(13577),s=i(79894),l=i.n(s),a=i(27378);let{Text:d}=r.AntTypography,o=e=>{let{items:t,...i}=e,s=(0,a.useMemo)(()=>null==t?void 0:t.map((e,i)=>{let s=i===t.length-1,a={...e},o=a.onClick&&!a.href;return("string"==typeof a.title&&(a.title=(0,n.jsx)(d,{style:{color:"inherit",maxWidth:s?void 0:400},ellipsis:!s,children:a.title})),o)?a.title=(0,n.jsx)(r.wpx,{type:"text",size:"small",icon:a.icon,onClick:a.onClick,className:"ant-breadcrumb-link -mt-px px-1 text-inherit",children:a.title}):(a.icon&&(a.title=(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("span",{className:"anticon align-text-bottom",children:a.icon}),a.title]})),a.href&&a.title&&(a.title=(0,n.jsx)(l(),{href:a.href,className:"ant-breadcrumb-link",children:a.title}),delete a.href)),a}),[t]);return(0,n.jsx)(r.zrq,{items:s,...i})}},57526:function(e,t,i){var n=i(24246),r=i(13577),s=i(27378);t.Z=e=>{let{isOpen:t,onClose:i,onApproveRequest:l,isLoading:a,subjectRequest:d}=e,{identity:o,identity_verified_at:c,custom_privacy_request_fields:u}=d,h=(0,s.useCallback)(()=>{l().then(()=>{i()})},[l,i]);return(0,n.jsxs)(r.u_l,{isOpen:t,onClose:i,size:"lg",isCentered:!0,children:[(0,n.jsx)(r.ZAr,{}),(0,n.jsxs)(r.hzk,{children:[(0,n.jsx)(r.xBx,{children:"Privacy request approval"}),(0,n.jsxs)(r.fef,{paddingTop:0,paddingBottom:0,children:[(0,n.jsx)(r.xvT,{color:"gray.500",fontSize:"14px",marginBottom:4,children:"Are you sure you want to approve this privacy request?"}),(0,n.jsxs)(r.QI$,{children:[Object.entries(o).filter(e=>{let[,{value:t}]=e;return null!==t}).map(e=>{let[t,{value:i,label:s}]=e;return(0,n.jsx)(r.HCh,{children:(0,n.jsxs)(r.kCb,{alignItems:"flex-start",children:[(0,n.jsxs)(r.xvT,{mr:2,fontSize:"sm",color:"gray.900",fontWeight:"500",children:[s,":"]}),(0,n.jsx)(r.xvT,{color:"gray.600",fontWeight:"500",fontSize:"sm",mr:2,children:i}),"(",c?"Verified":"Unverified",")"]},t)},t)}),u&&Object.entries(u).filter(e=>{let[,t]=e;return t.value}).map(e=>{let[t,i]=e;return(0,n.jsx)(r.HCh,{children:(0,n.jsxs)(r.kCb,{alignItems:"flex-start",children:[(0,n.jsxs)(r.xvT,{mr:2,fontSize:"sm",color:"gray.900",fontWeight:"500",children:[i.label,":"]}),(0,n.jsxs)(r.xvT,{color:"gray.600",fontWeight:"500",fontSize:"sm",mr:2,children:[Array.isArray(i.value)?i.value.join(", "):i.value," "]}),"(Unverified)"]},t)},t)})]})]}),(0,n.jsx)(r.mzw,{children:(0,n.jsxs)(r.MIq,{columns:2,width:"100%",children:[(0,n.jsx)(r.wpx,{onClick:i,className:"mr-3","data-testid":"cancel-btn",children:"Cancel"}),(0,n.jsx)(r.wpx,{type:"primary","data-testid":"continue-btn",onClick:h,loading:a,children:"Confirm"})]})})]})]})}},66548:function(e,t,i){var n=i(24246),r=i(40324),s=i(13577),l=i(34090),a=i(27378),d=i(55484);let o={denialReason:""};t.Z=e=>{let{isOpen:t,onClose:i,onDenyRequest:c}=e,u=(0,a.useCallback)((e,t)=>{let{setSubmitting:n}=t;c(e.denialReason).then(()=>{n(!1),i()})},[c,i]);return(0,n.jsxs)(s.u_l,{isOpen:t,onClose:i,isCentered:!0,returnFocusOnClose:!1,children:[(0,n.jsx)(s.ZAr,{}),(0,n.jsx)(s.hzk,{width:"100%",maxWidth:"456px","data-testid":"deny-privacy-request-modal",children:(0,n.jsx)(l.J9,{initialValues:o,validationSchema:d.Ry({denialReason:d.Z_().required().label("Reason for denial")}),onSubmit:u,children:e=>{let{isSubmitting:t,dirty:a,isValid:d}=e;return(0,n.jsxs)(l.l0,{children:[(0,n.jsx)(s.xBx,{children:"Privacy request denial"}),(0,n.jsx)(s.fef,{color:"gray.500",fontSize:"14px",children:"Please enter a reason for denying this privacy request. Please note: this can be seen by the user in their notification email."}),(0,n.jsx)(s.fef,{children:(0,n.jsx)(r.Ks,{name:"denialReason",textAreaProps:{focusBorderColor:"primary.600",resize:"none"}})}),(0,n.jsxs)(s.mzw,{className:"flex w-full gap-4",children:[(0,n.jsx)(s.wpx,{disabled:t,onClick:i,className:"grow",children:"Cancel"}),(0,n.jsx)(s.wpx,{htmlType:"submit",type:"primary",disabled:!a||!d,loading:t,className:"grow","data-testid":"deny-privacy-request-modal-btn",children:"Confirm"})]})]})}})})]})}},45489:function(e,t,i){i.d(t,{Z:function(){return r}});var n=i(90867);let r=e=>{let{subjectRequest:t}=e,[i,r]=(0,n.RW)({fixedCacheKey:t.id}),[s,l]=(0,n.F1)({fixedCacheKey:t.id}),[a,d]=(0,n.rC)({fixedCacheKey:t.id}),[o,c]=(0,n.zB)({fixedCacheKey:t.id}),u=l.isLoading||r.isLoading||c.isLoading;return{approveRequest:i,approveRequestResult:r,denyRequest:s,denyRequestResult:l,handleApproveRequest:()=>i(t),handleDenyRequest:e=>s({id:t.id,reason:e}),handleDeleteRequest:()=>a(t),handleFinalizeRequest:()=>o({privacyRequestId:t.id}),softDeleteRequestResult:d,finalizeRequestResult:c,isLoading:u}}},72281:function(e,t,i){i.d(t,{G:function(){return a},d:function(){return d}});var n=i(86677),r=i(27378),s=i(19904),l=i(73825);let a={REQUEST:"request",MANUAL_TASK:"manual-tasks"},d=()=>{let e=(0,n.useRouter)(),t=(0,s.Tg)([l.Sh.PRIVACY_REQUEST_READ]),i=(0,s.Tg)([l.Sh.MANUAL_FIELD_READ_OWN,l.Sh.MANUAL_FIELD_READ_ALL]),d=(0,r.useMemo)(()=>({request:t,manualTask:i}),[t,i]),[o,c]=(0,r.useState)(d.request?a.REQUEST:a.MANUAL_TASK),u=(0,r.useCallback)(()=>{let{tab:t}=e.query;return t&&"string"==typeof t&&Object.values(a).includes(t)?t:null},[e.query]),h=(0,r.useCallback)(t=>{e.replace({pathname:e.pathname,query:{tab:t}},void 0,{shallow:!0})},[e]);return(0,r.useEffect)(()=>{if(!e.isReady)return;let t=u();t&&(t===a.REQUEST||t===a.MANUAL_TASK&&d.manualTask)&&c(t)},[e.isReady,e.query,d,u,h]),{activeTab:o,handleTabChange:(0,r.useCallback)(e=>{Object.values(a).includes(e)&&(c(e),h(e))},[h]),availableTabs:d}}}}]);