ethyca-fides 2.69.0rc0__py2.py3-none-any.whl → 2.69.1b0__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 (206) hide show
  1. {ethyca_fides-2.69.0rc0.dist-info → ethyca_fides-2.69.1b0.dist-info}/METADATA +1 -1
  2. {ethyca_fides-2.69.0rc0.dist-info → ethyca_fides-2.69.1b0.dist-info}/RECORD +204 -204
  3. fides/_version.py +3 -3
  4. fides/api/api/v1/endpoints/oauth_endpoints.py +3 -0
  5. fides/api/api/v1/endpoints/privacy_request_endpoints.py +1 -1
  6. fides/api/api/v1/endpoints/user_endpoints.py +31 -4
  7. fides/api/models/client.py +9 -5
  8. fides/api/models/fides_user.py +1 -2
  9. fides/api/oauth/utils.py +21 -2
  10. fides/api/schemas/saas/connector_template.py +5 -0
  11. fides/api/service/connectors/saas/connector_registry_service.py +7 -0
  12. fides/api/util/connection_type.py +3 -20
  13. fides/api/util/saas_util.py +12 -1
  14. fides/config/security_settings.py +7 -3
  15. fides/ui-build/static/admin/404.html +1 -1
  16. fides/ui-build/static/admin/_next/static/4lPKe7mco0KEv09aOQH9A/_buildManifest.js +1 -0
  17. fides/ui-build/static/admin/_next/static/chunks/4121-bb71a24d41d04a28.js +1 -0
  18. fides/ui-build/static/admin/_next/static/chunks/{5258-45ec38e6c3780f24.js → 5258-1a8b9f66b97761fc.js} +1 -1
  19. fides/ui-build/static/admin/_next/static/chunks/pages/{_app-36bec04369a1a7c4.js → _app-f18537fd2c4288e7.js} +9 -9
  20. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/{[id]-7e3f8b6eb83c5142.js → [id]-b379873a5771e55b.js} +1 -1
  21. fides/ui-build/static/admin/_next/static/chunks/pages/{privacy-requests-c9c1c02d7e68c4f8.js → privacy-requests-91f578139548652c.js} +1 -1
  22. fides/ui-build/static/admin/add-systems/manual.html +1 -1
  23. fides/ui-build/static/admin/add-systems/multiple.html +1 -1
  24. fides/ui-build/static/admin/add-systems.html +1 -1
  25. fides/ui-build/static/admin/consent/configure/add-vendors.html +1 -1
  26. fides/ui-build/static/admin/consent/configure.html +1 -1
  27. fides/ui-build/static/admin/consent/privacy-experience/[id].html +1 -1
  28. fides/ui-build/static/admin/consent/privacy-experience/new.html +1 -1
  29. fides/ui-build/static/admin/consent/privacy-experience.html +1 -1
  30. fides/ui-build/static/admin/consent/privacy-notices/[id].html +1 -1
  31. fides/ui-build/static/admin/consent/privacy-notices/new.html +1 -1
  32. fides/ui-build/static/admin/consent/privacy-notices.html +1 -1
  33. fides/ui-build/static/admin/consent/properties.html +1 -1
  34. fides/ui-build/static/admin/consent/reporting.html +1 -1
  35. fides/ui-build/static/admin/consent.html +1 -1
  36. fides/ui-build/static/admin/data-catalog/[systemId]/projects/[projectUrn]/[resourceUrn].html +1 -1
  37. fides/ui-build/static/admin/data-catalog/[systemId]/projects/[projectUrn].html +1 -1
  38. fides/ui-build/static/admin/data-catalog/[systemId]/projects.html +1 -1
  39. fides/ui-build/static/admin/data-catalog/[systemId]/resources/[resourceUrn].html +1 -1
  40. fides/ui-build/static/admin/data-catalog/[systemId]/resources.html +1 -1
  41. fides/ui-build/static/admin/data-catalog.html +1 -1
  42. fides/ui-build/static/admin/data-discovery/action-center/[monitorId]/[systemId].html +1 -1
  43. fides/ui-build/static/admin/data-discovery/action-center/[monitorId].html +1 -1
  44. fides/ui-build/static/admin/data-discovery/action-center.html +1 -1
  45. fides/ui-build/static/admin/data-discovery/activity.html +1 -1
  46. fides/ui-build/static/admin/data-discovery/detection/[resourceUrn].html +1 -1
  47. fides/ui-build/static/admin/data-discovery/detection.html +1 -1
  48. fides/ui-build/static/admin/data-discovery/discovery/[resourceUrn].html +1 -1
  49. fides/ui-build/static/admin/data-discovery/discovery.html +1 -1
  50. fides/ui-build/static/admin/datamap.html +1 -1
  51. fides/ui-build/static/admin/dataset/[datasetId]/[collectionName]/[...subfieldNames].html +1 -1
  52. fides/ui-build/static/admin/dataset/[datasetId]/[collectionName].html +1 -1
  53. fides/ui-build/static/admin/dataset/[datasetId].html +1 -1
  54. fides/ui-build/static/admin/dataset/new.html +1 -1
  55. fides/ui-build/static/admin/dataset.html +1 -1
  56. fides/ui-build/static/admin/datastore-connection/[id].html +1 -1
  57. fides/ui-build/static/admin/datastore-connection/new.html +1 -1
  58. fides/ui-build/static/admin/datastore-connection.html +1 -1
  59. fides/ui-build/static/admin/index.html +1 -1
  60. fides/ui-build/static/admin/integrations/[id].html +1 -1
  61. fides/ui-build/static/admin/integrations.html +1 -1
  62. fides/ui-build/static/admin/login/[provider].html +1 -1
  63. fides/ui-build/static/admin/login.html +1 -1
  64. fides/ui-build/static/admin/messaging/[id].html +1 -1
  65. fides/ui-build/static/admin/messaging/add-template.html +1 -1
  66. fides/ui-build/static/admin/messaging.html +1 -1
  67. fides/ui-build/static/admin/poc/ant-components.html +1 -1
  68. fides/ui-build/static/admin/poc/form-experiments/AntForm.html +1 -1
  69. fides/ui-build/static/admin/poc/form-experiments/FormikAntFormItem.html +1 -1
  70. fides/ui-build/static/admin/poc/form-experiments/FormikControlled.html +1 -1
  71. fides/ui-build/static/admin/poc/form-experiments/FormikField.html +1 -1
  72. fides/ui-build/static/admin/poc/form-experiments/FormikSpreadField.html +1 -1
  73. fides/ui-build/static/admin/poc/forms.html +1 -1
  74. fides/ui-build/static/admin/poc/table-migration.html +1 -1
  75. fides/ui-build/static/admin/privacy-requests/[id].html +1 -1
  76. fides/ui-build/static/admin/privacy-requests/configure/messaging.html +1 -1
  77. fides/ui-build/static/admin/privacy-requests/configure/storage.html +1 -1
  78. fides/ui-build/static/admin/privacy-requests/configure.html +1 -1
  79. fides/ui-build/static/admin/privacy-requests.html +1 -1
  80. fides/ui-build/static/admin/properties/[id].html +1 -1
  81. fides/ui-build/static/admin/properties/add-property.html +1 -1
  82. fides/ui-build/static/admin/properties.html +1 -1
  83. fides/ui-build/static/admin/reporting/datamap.html +1 -1
  84. fides/ui-build/static/admin/settings/about/alpha.html +1 -1
  85. fides/ui-build/static/admin/settings/about.html +1 -1
  86. fides/ui-build/static/admin/settings/consent/[configuration_id]/[purpose_id].html +1 -1
  87. fides/ui-build/static/admin/settings/consent.html +1 -1
  88. fides/ui-build/static/admin/settings/custom-fields.html +1 -1
  89. fides/ui-build/static/admin/settings/domain-records.html +1 -1
  90. fides/ui-build/static/admin/settings/domains.html +1 -1
  91. fides/ui-build/static/admin/settings/email-templates.html +1 -1
  92. fides/ui-build/static/admin/settings/locations.html +1 -1
  93. fides/ui-build/static/admin/settings/organization.html +1 -1
  94. fides/ui-build/static/admin/settings/regulations.html +1 -1
  95. fides/ui-build/static/admin/systems/configure/[id]/test-datasets.html +1 -1
  96. fides/ui-build/static/admin/systems/configure/[id].html +1 -1
  97. fides/ui-build/static/admin/systems.html +1 -1
  98. fides/ui-build/static/admin/taxonomy.html +1 -1
  99. fides/ui-build/static/admin/user-management/new.html +1 -1
  100. fides/ui-build/static/admin/user-management/profile/[id].html +1 -1
  101. fides/ui-build/static/admin/user-management.html +1 -1
  102. fides/ui-build/static/admin/_next/static/0uUBOyZCwjdyYdhNzpRkz/_buildManifest.js +0 -1
  103. fides/ui-build/static/admin/_next/static/chunks/4121-bbce1026a2ffe962.js +0 -1
  104. {ethyca_fides-2.69.0rc0.dist-info → ethyca_fides-2.69.1b0.dist-info}/WHEEL +0 -0
  105. {ethyca_fides-2.69.0rc0.dist-info → ethyca_fides-2.69.1b0.dist-info}/entry_points.txt +0 -0
  106. {ethyca_fides-2.69.0rc0.dist-info → ethyca_fides-2.69.1b0.dist-info}/licenses/LICENSE +0 -0
  107. {ethyca_fides-2.69.0rc0.dist-info → ethyca_fides-2.69.1b0.dist-info}/top_level.txt +0 -0
  108. /fides/ui-build/static/admin/_next/static/{0uUBOyZCwjdyYdhNzpRkz → 4lPKe7mco0KEv09aOQH9A}/_ssgManifest.js +0 -0
  109. /fides/ui-build/static/admin/_next/static/chunks/{1099-db533dd22b80bca6.js → 1099-c34f76b4da5f3d15.js} +0 -0
  110. /fides/ui-build/static/admin/_next/static/chunks/{1345-6986414ab6ad3389.js → 1345-04e37a66c0d40dc1.js} +0 -0
  111. /fides/ui-build/static/admin/_next/static/chunks/{1817-fcb2fd28034d5070.js → 1817-e6934e258111a961.js} +0 -0
  112. /fides/ui-build/static/admin/_next/static/chunks/{2921-8a63ec72fa8e1bc0.js → 2921-0696287bb8de1f0b.js} +0 -0
  113. /fides/ui-build/static/admin/_next/static/chunks/{3620-1fba74849114e70f.js → 3620-8c0ee3d0b19c342d.js} +0 -0
  114. /fides/ui-build/static/admin/_next/static/chunks/{3729-79255d8b0d22922d.js → 3729-f5f2976904dce90d.js} +0 -0
  115. /fides/ui-build/static/admin/_next/static/chunks/{3847-a868f83c065f54fb.js → 3847-2c0126e6eb54c526.js} +0 -0
  116. /fides/ui-build/static/admin/_next/static/chunks/{3855-3154d56888ac46ed.js → 3855-9dd54ded74f4036b.js} +0 -0
  117. /fides/ui-build/static/admin/_next/static/chunks/{3872-25eec062abd0f847.js → 3872-72ea3eb040366277.js} +0 -0
  118. /fides/ui-build/static/admin/_next/static/chunks/{3923-3be9b867f33e524c.js → 3923-c4f2b03706ddbe39.js} +0 -0
  119. /fides/ui-build/static/admin/_next/static/chunks/{401-029e2ff644cae40c.js → 401-959a15ed18a8abdf.js} +0 -0
  120. /fides/ui-build/static/admin/_next/static/chunks/{4608-99e453c666a7b89a.js → 4608-d101417a3abb4ad6.js} +0 -0
  121. /fides/ui-build/static/admin/_next/static/chunks/{4786-289c505d7d835feb.js → 4786-7aafb744445445b2.js} +0 -0
  122. /fides/ui-build/static/admin/_next/static/chunks/{4808-5b799757d4564807.js → 4808-357ca7ea7bbd24c6.js} +0 -0
  123. /fides/ui-build/static/admin/_next/static/chunks/{4844-a1784e2823ccd0ee.js → 4844-707b20a6c4b127cc.js} +0 -0
  124. /fides/ui-build/static/admin/_next/static/chunks/{5487-aad0e8a240a1979b.js → 5487-fd9724519f31caff.js} +0 -0
  125. /fides/ui-build/static/admin/_next/static/chunks/{549-81279a1a816487a7.js → 549-d3bef0990071230c.js} +0 -0
  126. /fides/ui-build/static/admin/_next/static/chunks/{6084-3379ca3c1fc77aa9.js → 6084-487d27d017c45e05.js} +0 -0
  127. /fides/ui-build/static/admin/_next/static/chunks/{6853-04b15a7b02b1fc19.js → 6853-f7ab74e30abbdeaf.js} +0 -0
  128. /fides/ui-build/static/admin/_next/static/chunks/{6954-0f5d6c1757013eb7.js → 6954-b0a7b8ac6db238f8.js} +0 -0
  129. /fides/ui-build/static/admin/_next/static/chunks/{7476-2227e21f574bee70.js → 7476-9a57db910472b48e.js} +0 -0
  130. /fides/ui-build/static/admin/_next/static/chunks/{7630-267de03b93bbae8d.js → 7630-46807321449479c7.js} +0 -0
  131. /fides/ui-build/static/admin/_next/static/chunks/{768-24269f30db223720.js → 768-7eac4b30d7477b0a.js} +0 -0
  132. /fides/ui-build/static/admin/_next/static/chunks/{787-0aa4d9802c976f92.js → 787-79e8e558bd80ece6.js} +0 -0
  133. /fides/ui-build/static/admin/_next/static/chunks/{79-0102f2711b8455cd.js → 79-3e5047415bee9391.js} +0 -0
  134. /fides/ui-build/static/admin/_next/static/chunks/{796-53f0ea567d1da2b9.js → 796-fb2af44165f37ecc.js} +0 -0
  135. /fides/ui-build/static/admin/_next/static/chunks/{8002-98ecd56535cdefa3.js → 8002-c1f66179adabece8.js} +0 -0
  136. /fides/ui-build/static/admin/_next/static/chunks/{9046-a349c22448593f94.js → 9046-058a4d8f0b5e08f9.js} +0 -0
  137. /fides/ui-build/static/admin/_next/static/chunks/{9826-f4755a75d00c1c8c.js → 9826-0d9a7f61c08ed88a.js} +0 -0
  138. /fides/ui-build/static/admin/_next/static/chunks/{9951-07989276d153c848.js → 9951-b954027a046ce553.js} +0 -0
  139. /fides/ui-build/static/admin/_next/static/chunks/pages/{404-fde1f56225d1ef4f.js → 404-9c9efb820bb6b432.js} +0 -0
  140. /fides/ui-build/static/admin/_next/static/chunks/pages/add-systems/{manual-aff671eda846719f.js → manual-20253dd047fb9736.js} +0 -0
  141. /fides/ui-build/static/admin/_next/static/chunks/pages/add-systems/{multiple-04894ddffc2a66fc.js → multiple-caadc3c0e86a7bfe.js} +0 -0
  142. /fides/ui-build/static/admin/_next/static/chunks/pages/{add-systems-e98c4154535bf37d.js → add-systems-169099ff7b305cf5.js} +0 -0
  143. /fides/ui-build/static/admin/_next/static/chunks/pages/consent/configure/{add-vendors-b2f80cdb75183bfa.js → add-vendors-acefb9e08c6c4082.js} +0 -0
  144. /fides/ui-build/static/admin/_next/static/chunks/pages/consent/{configure-207cabf1b5c453fc.js → configure-558fbb1667473abb.js} +0 -0
  145. /fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-experience/{[id]-b3db5610ae7e94fb.js → [id]-b1ff1c9683841815.js} +0 -0
  146. /fides/ui-build/static/admin/_next/static/chunks/pages/consent/{privacy-experience-3009481bdd479fd7.js → privacy-experience-674906d2d9a0a3a6.js} +0 -0
  147. /fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-notices/{[id]-72e3cd6740c5c5de.js → [id]-5b7aa7971f070513.js} +0 -0
  148. /fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-notices/{new-2aa4d13fb26b59ca.js → new-285958a12a66575e.js} +0 -0
  149. /fides/ui-build/static/admin/_next/static/chunks/pages/consent/{privacy-notices-6b0885a8c871804f.js → privacy-notices-dc56bbdb6dd7a670.js} +0 -0
  150. /fides/ui-build/static/admin/_next/static/chunks/pages/consent/{properties-20bc3cf67727dfd3.js → properties-0843757f00eeaaec.js} +0 -0
  151. /fides/ui-build/static/admin/_next/static/chunks/pages/consent/{reporting-77b491108663a2de.js → reporting-60e3394c887f3d5e.js} +0 -0
  152. /fides/ui-build/static/admin/_next/static/chunks/pages/{consent-b3c8efbd960f4e34.js → consent-5cba58ebecb4511f.js} +0 -0
  153. /fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/projects/{[projectUrn]-fe5f6fb33e34baa7.js → [projectUrn]-0f90cac9f190130c.js} +0 -0
  154. /fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/{projects-3584c90cf3670146.js → projects-f9117645c941342c.js} +0 -0
  155. /fides/ui-build/static/admin/_next/static/chunks/pages/{data-catalog-a6cecf48e4e27645.js → data-catalog-c566640eecc6f3fe.js} +0 -0
  156. /fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/[monitorId]/{[systemId]-844abdb5ea7d78af.js → [systemId]-cfb0b1200bc1a2c9.js} +0 -0
  157. /fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/{[monitorId]-215d6e2fefc9a5e1.js → [monitorId]-fed8b879c13c2bf3.js} +0 -0
  158. /fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/{action-center-7721508cc2a9ab3a.js → action-center-991659e916ad60b1.js} +0 -0
  159. /fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/{activity-6169e49c3787a9bf.js → activity-58a110542d6bcd0f.js} +0 -0
  160. /fides/ui-build/static/admin/_next/static/chunks/pages/{datamap-e17dd4ffcaa4836d.js → datamap-60e27b673c68bd27.js} +0 -0
  161. /fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]/[collectionName]/{[...subfieldNames]-4af946dc8c6c967f.js → [...subfieldNames]-3f4ba87513e030a2.js} +0 -0
  162. /fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]/{[collectionName]-a65a8ea3872800e7.js → [collectionName]-a6cd31103deba465.js} +0 -0
  163. /fides/ui-build/static/admin/_next/static/chunks/pages/dataset/{[datasetId]-ccc844caef652a7e.js → [datasetId]-491d2c8dd559d0cb.js} +0 -0
  164. /fides/ui-build/static/admin/_next/static/chunks/pages/dataset/{new-3b65c6e9af65ea2e.js → new-2c7b1213b6604d30.js} +0 -0
  165. /fides/ui-build/static/admin/_next/static/chunks/pages/{dataset-0566189a0236078d.js → dataset-c8bcd568d3b0ee7f.js} +0 -0
  166. /fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection/{[id]-38a7b8826e0abb01.js → [id]-7ed3f05700dc397b.js} +0 -0
  167. /fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection/{new-c8d2599814eefd35.js → new-95f6d64f84fc6bf3.js} +0 -0
  168. /fides/ui-build/static/admin/_next/static/chunks/pages/{datastore-connection-00ba79f6b47bd161.js → datastore-connection-9a33a412a5f36960.js} +0 -0
  169. /fides/ui-build/static/admin/_next/static/chunks/pages/{index-053db342725dc127.js → index-1299410f671fac23.js} +0 -0
  170. /fides/ui-build/static/admin/_next/static/chunks/pages/integrations/{[id]-3db44d6839e8dbd9.js → [id]-3d24c1510aa4c555.js} +0 -0
  171. /fides/ui-build/static/admin/_next/static/chunks/pages/{integrations-5f34de3c24e67368.js → integrations-0f12d5b658c98c9f.js} +0 -0
  172. /fides/ui-build/static/admin/_next/static/chunks/pages/messaging/{[id]-707b72e959233112.js → [id]-ba232c4b17576ccb.js} +0 -0
  173. /fides/ui-build/static/admin/_next/static/chunks/pages/messaging/{add-template-c68b413f3c9cf318.js → add-template-b97883026fbc5b1e.js} +0 -0
  174. /fides/ui-build/static/admin/_next/static/chunks/pages/{messaging-d95588f3ef137030.js → messaging-38189c1058aa4acf.js} +0 -0
  175. /fides/ui-build/static/admin/_next/static/chunks/pages/poc/{ant-components-36cac6f4379587ea.js → ant-components-3119bdb3811409bf.js} +0 -0
  176. /fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/{AntForm-d44606c0cf203b47.js → AntForm-8f9d0434dc3eb8cf.js} +0 -0
  177. /fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/{FormikAntFormItem-341b571fd8da4142.js → FormikAntFormItem-a14e51c7f22f3395.js} +0 -0
  178. /fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/{FormikControlled-2e99b5eb12982aeb.js → FormikControlled-a40645b57822684d.js} +0 -0
  179. /fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/{FormikField-c7d62113680196dd.js → FormikField-c55df6527b700701.js} +0 -0
  180. /fides/ui-build/static/admin/_next/static/chunks/pages/poc/{forms-89a24591c3d9e7a8.js → forms-292d761616b162a0.js} +0 -0
  181. /fides/ui-build/static/admin/_next/static/chunks/pages/poc/{table-migration-c54bcfb6b0de8a71.js → table-migration-135bcf384b81820a.js} +0 -0
  182. /fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure/{messaging-4c8e1a7e407d3c7f.js → messaging-a9bb257906dcd7e0.js} +0 -0
  183. /fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure/{storage-faf42d1a9cd6a861.js → storage-de0036c74b78e9b7.js} +0 -0
  184. /fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/{configure-3823ee301161be4f.js → configure-70efccbe0732786b.js} +0 -0
  185. /fides/ui-build/static/admin/_next/static/chunks/pages/properties/{[id]-8973618b9ba28a50.js → [id]-63c6f0193634add5.js} +0 -0
  186. /fides/ui-build/static/admin/_next/static/chunks/pages/properties/{add-property-b449da44de56fd3f.js → add-property-e76567f0374d5912.js} +0 -0
  187. /fides/ui-build/static/admin/_next/static/chunks/pages/{properties-5bb059b7057b5583.js → properties-2050b7dac0413c11.js} +0 -0
  188. /fides/ui-build/static/admin/_next/static/chunks/pages/reporting/{datamap-6b26740aeb247bc8.js → datamap-83019a6753e14857.js} +0 -0
  189. /fides/ui-build/static/admin/_next/static/chunks/pages/settings/about/{alpha-98c1492dca52f4f8.js → alpha-913f8eab62460f31.js} +0 -0
  190. /fides/ui-build/static/admin/_next/static/chunks/pages/settings/{about-d176ec152b70f82d.js → about-2ed1ee6017c0656a.js} +0 -0
  191. /fides/ui-build/static/admin/_next/static/chunks/pages/settings/consent/[configuration_id]/{[purpose_id]-ea5077aca3d01dfb.js → [purpose_id]-bffd6292e7e0302a.js} +0 -0
  192. /fides/ui-build/static/admin/_next/static/chunks/pages/settings/{consent-68b812269e38c8c3.js → consent-e5331508e81222fc.js} +0 -0
  193. /fides/ui-build/static/admin/_next/static/chunks/pages/settings/{custom-fields-79cdee37ceb8665f.js → custom-fields-74f0fe9656f4a1f6.js} +0 -0
  194. /fides/ui-build/static/admin/_next/static/chunks/pages/settings/{domain-records-056f36a8a0509006.js → domain-records-a649ca07ce51b0fe.js} +0 -0
  195. /fides/ui-build/static/admin/_next/static/chunks/pages/settings/{domains-fea15607939cab70.js → domains-eb675ba600cea2a8.js} +0 -0
  196. /fides/ui-build/static/admin/_next/static/chunks/pages/settings/{email-templates-cce73ddc0012b089.js → email-templates-4db2f42f90867890.js} +0 -0
  197. /fides/ui-build/static/admin/_next/static/chunks/pages/settings/{locations-8b0a408ed7e3ff28.js → locations-89b404989b4ea21c.js} +0 -0
  198. /fides/ui-build/static/admin/_next/static/chunks/pages/settings/{organization-a01838a53677d69e.js → organization-eb1ecff37fd85c72.js} +0 -0
  199. /fides/ui-build/static/admin/_next/static/chunks/pages/settings/{regulations-43e9cafaeb869069.js → regulations-07d883b5aaec58f2.js} +0 -0
  200. /fides/ui-build/static/admin/_next/static/chunks/pages/systems/configure/[id]/{test-datasets-ea1e2483ddf6af6c.js → test-datasets-61ecb7546830c345.js} +0 -0
  201. /fides/ui-build/static/admin/_next/static/chunks/pages/systems/configure/{[id]-7856e694b009ded3.js → [id]-e91da49c0681a300.js} +0 -0
  202. /fides/ui-build/static/admin/_next/static/chunks/pages/{systems-2c6dca19bf0a4f0c.js → systems-44d714017dd87e62.js} +0 -0
  203. /fides/ui-build/static/admin/_next/static/chunks/pages/{taxonomy-ede8ddce10d7d055.js → taxonomy-78c3a5200d362cff.js} +0 -0
  204. /fides/ui-build/static/admin/_next/static/chunks/pages/user-management/profile/{[id]-af9bf43612c9676c.js → [id]-4f9001870e2b3aff.js} +0 -0
  205. /fides/ui-build/static/admin/_next/static/chunks/pages/{user-management-3b7fea8781dc18b5.js → user-management-583a7f0c1bead240.js} +0 -0
  206. /fides/ui-build/static/admin/_next/static/chunks/{webpack-aa7ff73977a15cb3.js → webpack-b5eb3e1da37616d2.js} +0 -0
fides/_version.py CHANGED
@@ -8,11 +8,11 @@ import json
8
8
 
9
9
  version_json = '''
10
10
  {
11
- "date": "2025-08-28T05:01:43-0700",
11
+ "date": "2025-08-29T09:36:26+0200",
12
12
  "dirty": false,
13
13
  "error": null,
14
- "full-revisionid": "01dddf60bc67c9798b38acc7eeec07cc78d49ddc",
15
- "version": "2.69.0rc0"
14
+ "full-revisionid": "8d2c44366def55f6ef0bce42e3692c17c6d3fd18",
15
+ "version": "2.69.1b0"
16
16
  }
17
17
  ''' # END VERSION_JSON
18
18
 
@@ -37,6 +37,7 @@ from fides.api.service.authentication.authentication_strategy_oauth2_authorizati
37
37
  )
38
38
  from fides.api.util.api_router import APIRouter
39
39
  from fides.api.util.connection_util import connection_status
40
+ from fides.api.util.endpoint_utils import fides_limiter
40
41
  from fides.common.api.scope_registry import (
41
42
  CLIENT_CREATE,
42
43
  CLIENT_DELETE,
@@ -65,8 +66,10 @@ router = APIRouter(tags=["OAuth"], prefix=V1_URL_PREFIX)
65
66
  TOKEN,
66
67
  response_model=AccessToken,
67
68
  )
69
+ @fides_limiter.limit(CONFIG.security.auth_rate_limit)
68
70
  async def acquire_access_token(
69
71
  request: Request,
72
+ response: Response,
70
73
  form_data: OAuth2ClientCredentialsRequestForm = Depends(),
71
74
  db: Session = Depends(get_db),
72
75
  ) -> AccessToken:
@@ -1930,7 +1930,7 @@ def finalize_privacy_request(
1930
1930
 
1931
1931
  queue_privacy_request(
1932
1932
  privacy_request_id=privacy_request_id,
1933
- from_step=CurrentStep.finalize_erasure.value,
1933
+ from_step=CurrentStep.finalization.value,
1934
1934
  )
1935
1935
 
1936
1936
  return privacy_request # type: ignore[return-value]
@@ -5,7 +5,7 @@ from datetime import datetime
5
5
  from typing import List, Optional
6
6
 
7
7
  import jose.exceptions
8
- from fastapi import Depends, HTTPException, Security
8
+ from fastapi import Depends, HTTPException, Request, Response, Security
9
9
  from fastapi.security import SecurityScopes
10
10
  from fastapi_pagination import Page, Params
11
11
  from fastapi_pagination.bases import AbstractPage
@@ -59,6 +59,7 @@ from fides.api.schemas.user import (
59
59
  )
60
60
  from fides.api.service.deps import get_user_service
61
61
  from fides.api.util.api_router import APIRouter
62
+ from fides.api.util.endpoint_utils import fides_limiter
62
63
  from fides.common.api.scope_registry import (
63
64
  SCOPE_REGISTRY,
64
65
  SYSTEM_MANAGER_DELETE,
@@ -116,7 +117,7 @@ def verify_user_read_scopes(
116
117
  db: Session = Depends(get_db),
117
118
  ) -> ClientDetail:
118
119
  """
119
- Custom dependency that verifies the user has either USER_READ or USER_READ_OWN scope.
120
+ Custom dependency that verifies the user has either user:read or user:read-own scope.
120
121
  Returns the client if authorized.
121
122
  """
122
123
  token_data, client = extract_token_and_load_client(authorization, db)
@@ -158,7 +159,7 @@ async def update_user(
158
159
  ) -> FidesUser:
159
160
  """
160
161
  Update a user given a `user_id`. If the user is not updating their own data,
161
- they need the USER_UPDATE scope
162
+ they need the user:update scope
162
163
  """
163
164
  user = FidesUser.get(db=db, object_id=user_id)
164
165
  if not user:
@@ -207,6 +208,17 @@ def update_user_password(
207
208
 
208
209
  current_user.update_password(db=db, new_password=data.new_password)
209
210
 
211
+ # Delete the user's associated OAuth client to invalidate all existing sessions
212
+ if current_user.client:
213
+ try:
214
+ current_user.client.delete(db)
215
+ except Exception as exc:
216
+ logger.exception(
217
+ "Unable to delete user client during password reset for user {}: {}",
218
+ current_user.id,
219
+ exc,
220
+ )
221
+
210
222
  logger.info("Updated user with id: '{}'.", current_user.id)
211
223
  return current_user
212
224
 
@@ -235,6 +247,18 @@ def force_update_password(
235
247
  )
236
248
 
237
249
  user.update_password(db=db, new_password=data.new_password)
250
+
251
+ # Delete the user's associated OAuth client to invalidate all existing sessions
252
+ if user.client:
253
+ try:
254
+ user.client.delete(db)
255
+ except Exception as exc:
256
+ logger.exception(
257
+ "Unable to delete user client during admin-forced password reset for user {}: {}",
258
+ user.id,
259
+ exc,
260
+ )
261
+
238
262
  logger.info("Updated user with id: '{}'.", user.id)
239
263
  return user
240
264
 
@@ -547,7 +571,7 @@ def get_user(
547
571
  client: ClientDetail = Security(verify_user_read_scopes),
548
572
  authorization: str = Security(oauth2_scheme),
549
573
  ) -> FidesUser:
550
- """Returns a User based on an Id. Users with USER_READ_OWN scope can only access their own data."""
574
+ """Returns a User based on an Id. Users with user:read-own scope can only access their own data. Users with user:read can access other's data."""
551
575
  user: Optional[FidesUser] = FidesUser.get_by_key_or_id(db, data={"id": user_id})
552
576
  if user is None:
553
577
  raise HTTPException(status_code=HTTP_404_NOT_FOUND, detail="User not found")
@@ -617,8 +641,11 @@ def get_users(
617
641
  status_code=HTTP_200_OK,
618
642
  response_model=UserLoginResponse,
619
643
  )
644
+ @fides_limiter.limit(CONFIG.security.auth_rate_limit)
620
645
  def user_login(
621
646
  *,
647
+ request: Request,
648
+ response: Response,
622
649
  db: Session = Depends(get_db),
623
650
  config: FidesConfig = Depends(get_config),
624
651
  user_data: UserLogin,
@@ -2,7 +2,7 @@ from __future__ import annotations
2
2
 
3
3
  import json
4
4
  from datetime import datetime
5
- from typing import Any, Optional
5
+ from typing import TYPE_CHECKING, Any, Optional
6
6
 
7
7
  from sqlalchemy import ARRAY, Column, ForeignKey, String
8
8
  from sqlalchemy.ext.declarative import declared_attr
@@ -22,10 +22,12 @@ from fides.api.cryptography.schemas.jwt import (
22
22
  JWE_PAYLOAD_SYSTEMS,
23
23
  )
24
24
  from fides.api.db.base_class import Base
25
- from fides.api.models.fides_user import FidesUser
26
25
  from fides.api.oauth.jwt import generate_jwe
27
26
  from fides.config import FidesConfig
28
27
 
28
+ if TYPE_CHECKING:
29
+ from fides.api.models.fides_user import FidesUser
30
+
29
31
  DEFAULT_SCOPES: list[str] = []
30
32
  DEFAULT_ROLES: list[str] = []
31
33
  DEFAULT_SYSTEMS: list[str] = []
@@ -48,9 +50,11 @@ class ClientDetail(Base):
48
50
  ARRAY(String), nullable=False, server_default="{}", default=dict
49
51
  )
50
52
  fides_key = Column(String, index=True, unique=True, nullable=True)
51
- user_id = Column(
52
- String, ForeignKey(FidesUser.id_field_path), nullable=True, unique=True
53
- )
53
+ user_id = Column(String, ForeignKey("fidesuser.id"), nullable=True, unique=True)
54
+
55
+ if TYPE_CHECKING:
56
+ # Explicitly annotate the backref relationship for mypy
57
+ user: Optional["FidesUser"]
54
58
 
55
59
  @classmethod
56
60
  def create_client_and_secret(
@@ -22,7 +22,7 @@ from fides.api.cryptography.cryptographic_util import (
22
22
  from fides.api.db.base_class import Base
23
23
  from fides.api.models.audit_log import AuditLog
24
24
 
25
- # Intentionally importing SystemManager here to build the FidesUser.systems relationship
25
+ # SystemManager import is handled in base.py to avoid circular imports
26
26
  from fides.api.schemas.user import DisabledReason
27
27
  from fides.config import CONFIG
28
28
 
@@ -32,7 +32,6 @@ if TYPE_CHECKING:
32
32
  FidesUserRespondentEmailVerification,
33
33
  )
34
34
  from fides.api.models.sql_models import System # type: ignore[attr-defined]
35
- from fides.api.models.system_manager import SystemManager
36
35
 
37
36
 
38
37
  class FidesUser(Base):
fides/api/oauth/utils.py CHANGED
@@ -222,7 +222,9 @@ async def get_current_user(
222
222
  created_at=datetime.utcnow(),
223
223
  )
224
224
 
225
- return client.user # type: ignore[attr-defined]
225
+ if client.user is None:
226
+ raise AuthorizationError(detail="Client has no associated user")
227
+ return client.user
226
228
 
227
229
 
228
230
  def verify_callback_oauth_policy_pre_webhook(
@@ -367,8 +369,10 @@ def extract_token_and_load_client(
367
369
  logger.debug("Auth token expired.")
368
370
  raise AuthorizationError(detail="Not Authorized for this action")
369
371
 
372
+ issued_at_dt = datetime.fromisoformat(issued_at)
373
+
370
374
  if is_token_expired(
371
- datetime.fromisoformat(issued_at),
375
+ issued_at_dt,
372
376
  token_duration_override or CONFIG.security.oauth_access_token_expire_minutes,
373
377
  ):
374
378
  raise AuthorizationError(detail="Not Authorized for this action")
@@ -391,6 +395,21 @@ def extract_token_and_load_client(
391
395
  logger.debug("Auth token belongs to an invalid client_id.")
392
396
  raise AuthorizationError(detail="Not Authorized for this action")
393
397
 
398
+ # Invalidate tokens issued prior to the user's most recent password reset.
399
+ # This ensures any existing sessions are expired immediately after a password change.
400
+ try:
401
+ if client.user is not None and client.user.password_reset_at is not None:
402
+ password_reset_at = client.user.password_reset_at
403
+ if password_reset_at and issued_at_dt < password_reset_at:
404
+ logger.debug("Auth token issued before latest password reset.")
405
+ raise AuthorizationError(detail="Not Authorized for this action")
406
+ except (
407
+ Exception
408
+ ) as exc: # pragma: no cover - defensive: never block auth on relationship issues
409
+ logger.exception(
410
+ "Unable to evaluate password reset timestamp for client user: {}", exc
411
+ )
412
+
394
413
  # Populate request-scoped context with the authenticated user identifier.
395
414
  # Prefer the linked user_id; fall back to the client id when this is the
396
415
  # special root client (which has no associated FidesUser row).
@@ -4,6 +4,8 @@ from fideslang.models import Dataset
4
4
  from pydantic import BaseModel, field_validator
5
5
 
6
6
  from fides.api.models.datasetconfig import validate_masking_strategy_override
7
+ from fides.api.schemas.enums.connection_category import ConnectionCategory
8
+ from fides.api.schemas.enums.integration_feature import IntegrationFeature
7
9
  from fides.api.schemas.policy import ActionType
8
10
  from fides.api.schemas.saas.saas_config import SaaSConfig
9
11
  from fides.api.util.saas_util import load_config_from_string, load_dataset_from_string
@@ -22,6 +24,9 @@ class ConnectorTemplate(BaseModel):
22
24
  authorization_required: bool
23
25
  user_guide: Optional[str] = None
24
26
  supported_actions: List[ActionType]
27
+ category: Optional[ConnectionCategory] = None
28
+ tags: Optional[List[str]] = None
29
+ enabled_features: Optional[List[IntegrationFeature]] = None
25
30
 
26
31
  @field_validator("config")
27
32
  @classmethod
@@ -26,6 +26,7 @@ from fides.api.service.authentication.authentication_strategy_oauth2_authorizati
26
26
  )
27
27
  from fides.api.util.saas_util import (
28
28
  encode_file_contents,
29
+ extract_display_info_from_config,
29
30
  load_config,
30
31
  load_config_from_string,
31
32
  load_dataset_from_string,
@@ -78,6 +79,8 @@ class FileConnectorTemplateLoader(ConnectorTemplateLoader):
78
79
  == OAuth2AuthorizationCodeAuthenticationStrategy.name
79
80
  )
80
81
 
82
+ display_info = extract_display_info_from_config(config)
83
+
81
84
  try:
82
85
  icon = encode_file_contents(f"data/saas/icon/{connector_type}.svg")
83
86
  except FileNotFoundError:
@@ -100,6 +103,7 @@ class FileConnectorTemplateLoader(ConnectorTemplateLoader):
100
103
  authorization_required=authorization_required,
101
104
  user_guide=config.user_guide,
102
105
  supported_actions=config.supported_actions,
106
+ **display_info,
103
107
  )
104
108
  except Exception:
105
109
  logger.exception("Unable to load {} connector", connector_type)
@@ -165,6 +169,8 @@ class CustomConnectorTemplateLoader(ConnectorTemplateLoader):
165
169
  == OAuth2AuthorizationCodeAuthenticationStrategy.name
166
170
  )
167
171
 
172
+ display_info = extract_display_info_from_config(config)
173
+
168
174
  connector_template = ConnectorTemplate(
169
175
  config=template.config,
170
176
  dataset=template.dataset,
@@ -173,6 +179,7 @@ class CustomConnectorTemplateLoader(ConnectorTemplateLoader):
173
179
  authorization_required=authorization_required,
174
180
  user_guide=config.user_guide,
175
181
  supported_actions=config.supported_actions,
182
+ **display_info,
176
183
  )
177
184
 
178
185
  # register the template in the loader's template dictionary
@@ -230,23 +230,6 @@ def get_saas_connection_types(
230
230
  for item in saas_types:
231
231
  connector_template = ConnectorRegistry.get_connector_template(item)
232
232
  if connector_template is not None:
233
- # Read display info from SAAS config if available
234
- category = None
235
- tags = None
236
- enabled_features = None
237
-
238
- try:
239
- saas_config = SaaSConfig(
240
- **load_config_from_string(connector_template.config)
241
- )
242
- if saas_config.display_info:
243
- category = saas_config.display_info.category
244
- tags = saas_config.display_info.tags
245
- enabled_features = saas_config.display_info.enabled_features
246
- except Exception:
247
- # If config parsing fails, leave display info as None
248
- pass
249
-
250
233
  saas_connection_types.append(
251
234
  ConnectionSystemTypeMap(
252
235
  identifier=item,
@@ -256,9 +239,9 @@ def get_saas_connection_types(
256
239
  authorization_required=connector_template.authorization_required,
257
240
  user_guide=connector_template.user_guide,
258
241
  supported_actions=connector_template.supported_actions,
259
- category=category,
260
- tags=tags,
261
- enabled_features=enabled_features,
242
+ category=connector_template.category,
243
+ tags=connector_template.tags,
244
+ enabled_features=connector_template.enabled_features,
262
245
  )
263
246
  )
264
247
 
@@ -16,7 +16,7 @@ from fides.api.common_exceptions import FidesopsException, ValidationError
16
16
  from fides.api.cryptography.cryptographic_util import bytes_to_b64_str
17
17
  from fides.api.graph.config import Collection, CollectionAddress, Field, GraphDataset
18
18
  from fides.api.models.privacy_request import PrivacyRequest
19
- from fides.api.schemas.saas.saas_config import SaaSRequest
19
+ from fides.api.schemas.saas.saas_config import SaaSConfig, SaaSRequest
20
20
  from fides.api.schemas.saas.shared_schemas import SaaSRequestParams
21
21
  from fides.config import CONFIG
22
22
  from fides.config.helpers import load_file
@@ -126,6 +126,17 @@ def replace_dataset_placeholders(
126
126
  return load_dataset_from_string(yaml_str)
127
127
 
128
128
 
129
+ def extract_display_info_from_config(config: SaaSConfig) -> Dict[str, Any]:
130
+ """Extract display info fields from SaaSConfig for caching in ConnectorTemplate."""
131
+ return {
132
+ "category": config.display_info.category if config.display_info else None,
133
+ "tags": config.display_info.tags if config.display_info else None,
134
+ "enabled_features": (
135
+ config.display_info.enabled_features if config.display_info else None
136
+ ),
137
+ }
138
+
139
+
129
140
  def load_dataset_with_replacement(
130
141
  filename: str, string_to_replace: str, replacement: str
131
142
  ) -> Dict:
@@ -101,6 +101,10 @@ class SecuritySettings(FidesSettings):
101
101
  default="1000/minute",
102
102
  description="The number of requests from a single IP address allowed to hit an endpoint within a rolling 60 second period.",
103
103
  )
104
+ auth_rate_limit: str = Field(
105
+ default="10/minute",
106
+ description="The number of authentication requests from a single IP address allowed to hit authentication endpoints (login, OAuth token) within the specified time period.",
107
+ )
104
108
  root_user_scopes: List[str] = Field(
105
109
  default=SCOPE_REGISTRY,
106
110
  description="The list of scopes that are given to the root user.",
@@ -213,13 +217,13 @@ class SecuritySettings(FidesSettings):
213
217
  oauth_root_client_secret_hash = (hashed_client_id, salt.encode(encoding)) # type: ignore
214
218
  return oauth_root_client_secret_hash
215
219
 
216
- @field_validator("request_rate_limit")
220
+ @field_validator("request_rate_limit", "auth_rate_limit")
217
221
  @classmethod
218
- def validate_request_rate_limit(
222
+ def validate_rate_limits(
219
223
  cls,
220
224
  v: str,
221
225
  ) -> str:
222
- """Validate the formatting of `request_rate_limit`"""
226
+ """Validate the formatting of rate limit fields"""
223
227
  try:
224
228
  # Defer to `limits.parse_many` https://limits.readthedocs.io/en/stable/api.html#limits.parse_many
225
229
  parse_many(v)
@@ -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/abf2e162b1cd0e61.css" as="style"/><link rel="stylesheet" href="/_next/static/css/abf2e162b1cd0e61.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-aa7ff73977a15cb3.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-36bec04369a1a7c4.js" defer=""></script><script src="/_next/static/chunks/pages/404-fde1f56225d1ef4f.js" defer=""></script><script src="/_next/static/0uUBOyZCwjdyYdhNzpRkz/_buildManifest.js" defer=""></script><script src="/_next/static/0uUBOyZCwjdyYdhNzpRkz/_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":"0uUBOyZCwjdyYdhNzpRkz","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/abf2e162b1cd0e61.css" as="style"/><link rel="stylesheet" href="/_next/static/css/abf2e162b1cd0e61.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-b5eb3e1da37616d2.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-f18537fd2c4288e7.js" defer=""></script><script src="/_next/static/chunks/pages/404-9c9efb820bb6b432.js" defer=""></script><script src="/_next/static/4lPKe7mco0KEv09aOQH9A/_buildManifest.js" defer=""></script><script src="/_next/static/4lPKe7mco0KEv09aOQH9A/_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":"4lPKe7mco0KEv09aOQH9A","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>
@@ -0,0 +1 @@
1
+ self.__BUILD_MANIFEST=function(s,e,t,a,c,n,i,d,o,r,p,u,g,f,m,b,j,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,R){return{__rewrites:{afterFiles:[],beforeFiles:[],fallback:[]},"/":[F,"static/chunks/pages/index-1299410f671fac23.js"],"/404":["static/chunks/pages/404-9c9efb820bb6b432.js"],"/_error":["static/chunks/pages/_error-bede3a8288930dcf.js"],"/add-systems":[s,e,F,"static/chunks/pages/add-systems-169099ff7b305cf5.js"],"/add-systems/manual":[t,s,a,c,n,g,e,d,f,m,h,x,_,"static/chunks/pages/add-systems/manual-20253dd047fb9736.js"],"/add-systems/multiple":[d,b,U,"static/chunks/pages/add-systems/multiple-caadc3c0e86a7bfe.js"],"/consent":["static/chunks/pages/consent-5cba58ebecb4511f.js"],"/consent/configure":[d,b,"static/chunks/pages/consent/configure-558fbb1667473abb.js"],"/consent/configure/add-vendors":[d,b,U,"static/chunks/pages/consent/configure/add-vendors-acefb9e08c6c4082.js"],"/consent/privacy-experience":[g,w,"static/chunks/pages/consent/privacy-experience-674906d2d9a0a3a6.js"],"/consent/privacy-experience/new":[t,o,j,k,q,"static/chunks/pages/consent/privacy-experience/new-e74cb5ea87f15b40.js"],"/consent/privacy-experience/[id]":[t,o,j,k,q,"static/chunks/pages/consent/privacy-experience/[id]-b1ff1c9683841815.js"],"/consent/privacy-notices":[w,"static/chunks/pages/consent/privacy-notices-dc56bbdb6dd7a670.js"],"/consent/privacy-notices/new":[t,o,j,k,N,"static/chunks/pages/consent/privacy-notices/new-285958a12a66575e.js"],"/consent/privacy-notices/[id]":[t,o,j,k,N,"static/chunks/pages/consent/privacy-notices/[id]-5b7aa7971f070513.js"],"/consent/properties":[A,"static/chunks/pages/consent/properties-0843757f00eeaaec.js"],"/consent/reporting":["static/chunks/2150-930ffaf2c4718edc.js","static/chunks/pages/consent/reporting-60e3394c887f3d5e.js"],"/data-catalog":[t,a,c,"static/css/95ac327e5d70148d.css","static/chunks/pages/data-catalog-c566640eecc6f3fe.js"],"/data-catalog/[systemId]/projects":[t,a,c,p,y,i,"static/chunks/pages/data-catalog/[systemId]/projects-f9117645c941342c.js"],"/data-catalog/[systemId]/projects/[projectUrn]":[S,"static/chunks/pages/data-catalog/[systemId]/projects/[projectUrn]-0f90cac9f190130c.js"],"/data-catalog/[systemId]/projects/[projectUrn]/[resourceUrn]":[t,s,a,c,e,p,y,B,i,"static/chunks/pages/data-catalog/[systemId]/projects/[projectUrn]/[resourceUrn]-adc500a03e239857.js"],"/data-catalog/[systemId]/resources":[S,"static/chunks/pages/data-catalog/[systemId]/resources-6c3714ee97a718c1.js"],"/data-catalog/[systemId]/resources/[resourceUrn]":[t,s,a,c,e,p,y,B,i,"static/chunks/pages/data-catalog/[systemId]/resources/[resourceUrn]-c8b3d090e4ba60d3.js"],"/data-discovery/action-center":["static/chunks/pages/data-discovery/action-center-991659e916ad60b1.js"],"/data-discovery/action-center/[monitorId]":[t,s,a,c,e,C,l,"static/chunks/pages/data-discovery/action-center/[monitorId]-fed8b879c13c2bf3.js"],"/data-discovery/action-center/[monitorId]/[systemId]":[t,s,a,c,e,d,h,C,"static/css/23cf870196941c9a.css","static/chunks/pages/data-discovery/action-center/[monitorId]/[systemId]-cfb0b1200bc1a2c9.js"],"/data-discovery/activity":[s,e,u,"static/chunks/pages/data-discovery/activity-58a110542d6bcd0f.js"],"/data-discovery/detection":[s,e,u,z,"static/chunks/pages/data-discovery/detection-4decce5ef996e563.js"],"/data-discovery/detection/[resourceUrn]":[s,e,u,z,"static/chunks/pages/data-discovery/detection/[resourceUrn]-22eec362dfbb1d2a.js"],"/data-discovery/discovery":[t,s,a,c,e,u,p,D,i,"static/chunks/pages/data-discovery/discovery-85fdbf4cde60d910.js"],"/data-discovery/discovery/[resourceUrn]":[t,s,a,c,e,u,p,D,i,"static/chunks/pages/data-discovery/discovery/[resourceUrn]-01acdd1ad492fd89.js"],"/datamap":[s,c,"static/chunks/255-1bc0cbef7a59cdc6.js",e,f,E,"static/chunks/pages/datamap-60e27b673c68bd27.js"],"/dataset":[r,"static/chunks/pages/dataset-c8bcd568d3b0ee7f.js"],"/dataset/new":[s,r,e,"static/chunks/pages/dataset/new-2c7b1213b6604d30.js"],"/dataset/[datasetId]":["static/chunks/9729-fcf6ff4e3534e4a8.js",v,"static/chunks/pages/dataset/[datasetId]-491d2c8dd559d0cb.js"],"/dataset/[datasetId]/[collectionName]":[t,a,c,n,v,L,i,"static/chunks/pages/dataset/[datasetId]/[collectionName]-a6cd31103deba465.js"],"/dataset/[datasetId]/[collectionName]/[...subfieldNames]":[t,a,c,n,v,L,i,"static/chunks/pages/dataset/[datasetId]/[collectionName]/[...subfieldNames]-3f4ba87513e030a2.js"],"/datastore-connection":["static/css/5f393dea1c0d031c.css","static/chunks/pages/datastore-connection-9a33a412a5f36960.js"],"/datastore-connection/new":[t,s,n,r,g,M,e,T,"static/chunks/pages/datastore-connection/new-95f6d64f84fc6bf3.js"],"/datastore-connection/[id]":[t,s,n,r,M,e,T,"static/chunks/pages/datastore-connection/[id]-7ed3f05700dc397b.js"],"/fides-js-docs":["static/chunks/2fbcc6de-a6c61724c327e9fa.js","static/chunks/e3251fe7-5777b5d778e6fffa.js",t,a,c,n,r,"static/chunks/5619-9b50cec521203989.js",P,"static/css/0b4b1b65cc874774.css","static/chunks/5596-bb601cbf40e47a0f.js","static/chunks/pages/fides-js-docs-1f4335dca5c09860.js"],"/integrations":[t,s,a,c,n,o,G,e,m,H,i,"static/chunks/pages/integrations-0f12d5b658c98c9f.js"],"/integrations/[id]":[t,s,a,c,n,o,G,e,m,H,i,"static/chunks/pages/integrations/[id]-3d24c1510aa4c555.js"],"/login":["static/chunks/pages/login-0cb0eb44bf2dd24c.js"],"/login/[provider]":["static/chunks/pages/login/[provider]-c58beef131c3a82d.js"],"/messaging":[t,a,"static/chunks/346-aa3b88efb85f2e28.js","static/chunks/pages/messaging-38189c1058aa4acf.js"],"/messaging/add-template":[J,"static/chunks/pages/messaging/add-template-b97883026fbc5b1e.js"],"/messaging/[id]":[J,"static/chunks/pages/messaging/[id]-ba232c4b17576ccb.js"],"/poc/ant-components":["static/chunks/pages/poc/ant-components-3119bdb3811409bf.js"],"/poc/form-experiments/AntForm":["static/chunks/pages/poc/form-experiments/AntForm-8f9d0434dc3eb8cf.js"],"/poc/form-experiments/FormikAntFormItem":["static/chunks/pages/poc/form-experiments/FormikAntFormItem-a14e51c7f22f3395.js"],"/poc/form-experiments/FormikControlled":["static/chunks/pages/poc/form-experiments/FormikControlled-a40645b57822684d.js"],"/poc/form-experiments/FormikField":["static/chunks/pages/poc/form-experiments/FormikField-c55df6527b700701.js"],"/poc/form-experiments/FormikSpreadField":[K,"static/chunks/pages/poc/form-experiments/FormikSpreadField-af097d661f6abcf4.js"],"/poc/forms":[K,"static/chunks/pages/poc/forms-292d761616b162a0.js"],"/poc/table-migration":[d,b,"static/chunks/pages/poc/table-migration-135bcf384b81820a.js"],"/privacy-requests":[t,s,"static/chunks/3550-d04125c828d591a1.js",e,"static/chunks/pages/privacy-requests-91f578139548652c.js"],"/privacy-requests/configure":["static/chunks/pages/privacy-requests/configure-70efccbe0732786b.js"],"/privacy-requests/configure/messaging":[s,e,"static/chunks/pages/privacy-requests/configure/messaging-a9bb257906dcd7e0.js"],"/privacy-requests/configure/storage":[s,e,"static/chunks/pages/privacy-requests/configure/storage-de0036c74b78e9b7.js"],"/privacy-requests/[id]":[s,e,"static/css/073713cd1eddda79.css","static/chunks/pages/privacy-requests/[id]-b379873a5771e55b.js"],"/properties":[A,"static/chunks/pages/properties-2050b7dac0413c11.js"],"/properties/add-property":[O,"static/chunks/pages/properties/add-property-e76567f0374d5912.js"],"/properties/[id]":[O,"static/chunks/pages/properties/[id]-63c6f0193634add5.js"],"/reporting/datamap":[t,s,a,c,P,e,f,E,"static/chunks/pages/reporting/datamap-83019a6753e14857.js"],"/settings/about":["static/chunks/pages/settings/about-2ed1ee6017c0656a.js"],"/settings/about/alpha":["static/chunks/pages/settings/about/alpha-913f8eab62460f31.js"],"/settings/consent":["static/chunks/pages/settings/consent-e5331508e81222fc.js"],"/settings/consent/[configuration_id]/[purpose_id]":["static/chunks/pages/settings/consent/[configuration_id]/[purpose_id]-bffd6292e7e0302a.js"],"/settings/custom-fields":[s,e,"static/chunks/pages/settings/custom-fields-74f0fe9656f4a1f6.js"],"/settings/domain-records":["static/chunks/pages/settings/domain-records-a649ca07ce51b0fe.js"],"/settings/domains":["static/chunks/pages/settings/domains-eb675ba600cea2a8.js"],"/settings/email-templates":["static/chunks/pages/settings/email-templates-4db2f42f90867890.js"],"/settings/locations":[Q,l,"static/chunks/pages/settings/locations-89b404989b4ea21c.js"],"/settings/organization":["static/chunks/pages/settings/organization-eb1ecff37fd85c72.js"],"/settings/regulations":[Q,l,"static/chunks/pages/settings/regulations-07d883b5aaec58f2.js"],"/systems":["static/chunks/pages/systems-44d714017dd87e62.js"],"/systems/configure/[id]":[t,s,a,c,n,g,e,d,f,m,h,x,_,"static/chunks/pages/systems/configure/[id]-e91da49c0681a300.js"],"/systems/configure/[id]/test-datasets":[r,"static/chunks/pages/systems/configure/[id]/test-datasets-61ecb7546830c345.js"],"/taxonomy":["static/chunks/678d4732-50255cc09048e643.js",t,s,a,o,"static/chunks/6148-59a59d5c5925344f.js",e,"static/css/34a7eb08b86ddb57.css","static/chunks/pages/taxonomy-78c3a5200d362cff.js"],"/user-management":[I,"static/chunks/pages/user-management-583a7f0c1bead240.js"],"/user-management/new":[I,R,"static/chunks/pages/user-management/new-de8cb3739ab99c09.js"],"/user-management/profile/[id]":[I,R,"static/chunks/pages/user-management/profile/[id]-4f9001870e2b3aff.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/431-86ad2beeb93c95c9.js","static/chunks/768-7eac4b30d7477b0a.js","static/chunks/8765-f622a35b40a7ec63.js","static/chunks/9278-08cc704317fe535e.js","static/chunks/5163-e682273cd76a7d07.js","static/chunks/699-8ca44b0de9fa20f0.js","static/css/d2d4e9a6923e6730.css","static/chunks/401-959a15ed18a8abdf.js","static/chunks/3662-f6a1ddca5ee42076.js","static/chunks/6527-0eed08abe252a918.js","static/chunks/1099-c34f76b4da5f3d15.js","static/chunks/8002-c1f66179adabece8.js","static/chunks/5277-e8a036319456127f.js","static/chunks/9951-b954027a046ce553.js","static/chunks/4808-357ca7ea7bbd24c6.js","static/chunks/3923-c4f2b03706ddbe39.js","static/chunks/6419-d0c00d661b01f8fa.js","static/chunks/6084-487d27d017c45e05.js","static/chunks/4844-707b20a6c4b127cc.js","static/chunks/3620-8c0ee3d0b19c342d.js","static/css/10994e916bc9a00a.css","static/chunks/5487-fd9724519f31caff.js","static/chunks/7476-9a57db910472b48e.js","static/css/972dc7eef106ee7c.css","static/chunks/4786-7aafb744445445b2.js","static/css/304c6f148886a8d4.css","static/chunks/796-fb2af44165f37ecc.js","static/chunks/6853-f7ab74e30abbdeaf.js","static/chunks/1817-e6934e258111a961.js","static/chunks/6954-b0a7b8ac6db238f8.js","static/chunks/79-3e5047415bee9391.js","static/chunks/3872-72ea3eb040366277.js","static/chunks/3855-9dd54ded74f4036b.js","static/chunks/3847-2c0126e6eb54c526.js","static/chunks/1345-04e37a66c0d40dc1.js","static/chunks/9046-058a4d8f0b5e08f9.js","static/chunks/5258-1a8b9f66b97761fc.js","static/chunks/549-d3bef0990071230c.js","static/chunks/1467-8808ec8836e033f9.js","static/chunks/4608-d101417a3abb4ad6.js","static/chunks/9187-7438242f0d380bb0.js","static/chunks/1316-2606e19807c08aa5.js","static/chunks/3729-f5f2976904dce90d.js","static/chunks/7630-46807321449479c7.js","static/chunks/2921-0696287bb8de1f0b.js","static/chunks/787-79e8e558bd80ece6.js","static/chunks/9826-0d9a7f61c08ed88a.js","static/chunks/4121-bb71a24d41d04a28.js"),self.__BUILD_MANIFEST_CB&&self.__BUILD_MANIFEST_CB();
@@ -0,0 +1 @@
1
+ "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[4121],{44121:function(e,s,a){a.d(s,{Z:function(){return ea}});var t=a(24246),n=a(96306),l=a(91437),i=()=>(0,t.jsxs)(n.xuv,{children:[(0,t.jsx)(n.xuv,{pb:4,fontSize:"18px",fontWeight:"semibold",children:"Role Description"}),(0,t.jsx)(n.gCW,{spacing:4,children:l.K.map(e=>(0,t.jsxs)(n.xuv,{width:"100%",padding:4,borderRadius:"md",backgroundColor:"gray.75",fontSize:"14px",children:[(0,t.jsx)(n.xuv,{fontWeight:"semibold",children:e.label}),(0,t.jsx)(n.xuv,{color:"gray.700",children:e.description})]},e.roleKey))})]}),r=a(16134),d=a(54682),o=a(19904),c=a(34090),h=a(86677),u=a(27378),m=a(812),p=a(46238),x=a(58452),j=a(77830),w=a(46628),g=a(26917),b=a(1315),f=a(95492),y=a(65497);let v=e=>{let{assignedSystems:s,onAssignedSystemChange:a}=e,l=(0,r.C)(y.Ux);if((0,y.d6)(l,{skip:!l}),0===s.length)return null;let i=e=>{a(s.filter(s=>s.fides_key!==e.fides_key))};return(0,t.jsxs)(n.iA_,{size:"sm","data-testid":"assign-systems-delete-table",children:[(0,t.jsx)(n.hrZ,{children:(0,t.jsxs)(n.Tr,{children:[(0,t.jsx)(n.Th,{children:"System"}),(0,t.jsx)(n.Th,{})]})}),(0,t.jsx)(n.p3B,{children:s.map(e=>(0,t.jsxs)(n.Tr,{_hover:{bg:"gray.50"},"data-testid":"row-".concat(e.fides_key),children:[(0,t.jsx)(n.Td,{children:e.name}),(0,t.jsx)(n.Td,{textAlign:"end",children:(0,t.jsx)(n.wpx,{"aria-label":"Unassign system from user",icon:(0,t.jsx)(f.l,{}),onClick:()=>i(e),"data-testid":"unassign-btn"})})]},e.fides_key))})]})};var _=e=>{let{allSystems:s,assignedSystems:a,onChange:l}=e,i=e=>{a.find(s=>s.fides_key===e.fides_key)?l(a.filter(s=>s.fides_key!==e.fides_key)):l([...a,e])};return(0,t.jsx)(n.xuv,{overflowY:"auto",maxHeight:"300px",children:(0,t.jsxs)(n.iA_,{size:"sm","data-testid":"assign-systems-table",maxHeight:"50vh",overflowY:"scroll",children:[(0,t.jsx)(n.hrZ,{position:"sticky",top:0,background:"white",zIndex:1,children:(0,t.jsxs)(n.Tr,{children:[(0,t.jsx)(n.Th,{children:"System"}),(0,t.jsx)(n.Th,{children:"Assign"})]})}),(0,t.jsx)(n.p3B,{children:s.map(e=>{let s=!!a.find(s=>s.fides_key===e.fides_key);return(0,t.jsxs)(n.Tr,{_hover:{bg:"gray.50"},"data-testid":"row-".concat(e.fides_key),children:[(0,t.jsx)(n.Td,{children:e.name}),(0,t.jsx)(n.Td,{children:(0,t.jsx)(n.rAg,{checked:s,onChange:()=>i(e),"data-testid":"assign-switch"})})]},e.fides_key)})})]})})};let C=(e,s)=>{var a,t;return(null===(a=e.name)||void 0===a?void 0:a.toLocaleLowerCase().includes(s.toLocaleLowerCase()))||(null===(t=e.description)||void 0===t?void 0:t.toLocaleLowerCase().includes(s.toLocaleLowerCase()))};var S=e=>{let{isOpen:s,onClose:a,assignedSystems:l,onAssignedSystemChange:i}=e,{data:r}=(0,b.K3)(),[d,o]=(0,u.useState)(""),[c,h]=(0,u.useState)(l),m=async()=>{i(c),a()},p=!r||0===r.length,x=(0,u.useMemo)(()=>r?r.filter(e=>C(e,d)):[],[r,d]),j=(0,u.useMemo)(()=>{let e=new Set(c.map(e=>e.fides_key));return x.every(s=>e.has(s.fides_key))},[x,c]);return(0,t.jsxs)(n.u_l,{isOpen:s,onClose:a,size:"2xl",children:[(0,t.jsx)(n.ZAr,{}),(0,t.jsxs)(n.hzk,{p:8,"data-testid":"confirmation-modal",children:[(0,t.jsxs)(n.xBx,{fontWeight:"medium",display:"flex",justifyContent:"space-between",alignItems:"center",children:[(0,t.jsx)(n.xvT,{children:"Assign systems"}),(0,t.jsxs)(n.j8w,{color:"success",children:["Assigned to ",l.length," systems"]})]}),(0,t.jsx)(n.fef,{"data-testid":"assign-systems-modal-body",children:p?(0,t.jsx)(n.xvT,{children:"No systems found"}):(0,t.jsxs)(n.Kqy,{spacing:4,children:[(0,t.jsxs)(n.kCb,{justifyContent:"space-between",children:[(0,t.jsx)(n.xvT,{fontSize:"sm",flexGrow:1,fontWeight:"medium",children:"Assign systems in your organization to this user"}),(0,t.jsx)(n.xuv,{children:(0,t.jsxs)(n.NIc,{display:"flex",alignItems:"center",children:[(0,t.jsx)(n.lXp,{fontSize:"sm",htmlFor:"assign-all-systems",mb:"0",children:"Assign all systems"}),(0,t.jsx)(n.rAg,{size:"small",id:"assign-all-systems",checked:j,onChange:e=>{e&&r?h(x):h(r?r.filter(e=>!x.includes(e)):[])},"data-testid":"assign-all-systems-toggle"})]})})]}),(0,t.jsx)(g.Z,{value:d,onChange:o,placeholder:"Search for systems","data-testid":"system-search",withIcon:!0}),(0,t.jsx)(_,{allSystems:x,assignedSystems:c,onChange:h})]})}),(0,t.jsx)(n.mzw,{justifyContent:"flex-start",children:(0,t.jsxs)("div",{children:[(0,t.jsx)(n.wpx,{onClick:a,className:"mr-2","data-testid":"cancel-btn",children:"Cancel"}),p?null:(0,t.jsx)(n.wpx,{type:"primary",onClick:m,"data-testid":"confirm-btn",children:"Confirm"})]})})]})]})},k=e=>{let{label:s,roleKey:a,isSelected:l,isDisabled:i,assignedSystems:r,onAssignedSystemChange:o}=e,{setFieldValue:h}=(0,c.u6)(),u=(0,n.qY0)(),m=i?"You do not have sufficient permissions to assign this role.":void 0;return l?(0,t.jsxs)(n.Kqy,{borderRadius:"md",border:"1px solid",borderColor:"gray.200",p:4,backgroundColor:"gray.50","aria-selected":"true",spacing:4,"data-testid":"selected",children:[(0,t.jsxs)(n.kCb,{alignItems:"center",justifyContent:"space-between",children:[(0,t.jsx)(n.xvT,{fontSize:"md",fontWeight:"semibold",children:s}),(0,t.jsx)(n.StI,{})]}),a!==d.A7.APPROVER&&a!==d.A7.RESPONDENT&&a!==d.A7.EXTERNAL_RESPONDENT?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(n.kCb,{alignItems:"center",children:[(0,t.jsx)(n.xvT,{fontSize:"sm",fontWeight:"semibold",mr:1,children:"Assigned systems"}),(0,t.jsx)(p.b,{label:"Assigned systems refer to those systems that have been specifically allocated to a user for management purposes. Users assigned to a system possess full edit permissions and are listed as the Data Steward for the respective system."})]}),(0,t.jsx)(n.wpx,{disabled:i,title:m,type:"primary",size:"small",onClick:u.onOpen,"data-testid":"assign-systems-btn",children:"Assign systems +"}),(0,t.jsx)(v,{assignedSystems:r,onAssignedSystemChange:o}),u.isOpen?(0,t.jsx)(S,{isOpen:u.isOpen,onClose:u.onClose,assignedSystems:r,onAssignedSystemChange:o}):null]}):null]}):(0,t.jsx)(n.wpx,{onClick:()=>{h("roles",[a])},"data-testid":"role-option-".concat(s),title:m,disabled:i,children:s})};let E={roles:[]};var R=()=>{var e,s;let a=(0,n.pmc)(),i=(0,h.useRouter)(),g=(0,r.C)(y.Ux);(0,y.d6)(g,{skip:!g});let{isOpen:b,onOpen:f,onClose:v}=(0,n.qY0)(),_=(0,r.C)(y.R$),[C,S]=(0,u.useState)(_),[R]=(0,y.G$)();(0,u.useEffect)(()=>{S(_)},[_]);let{data:A,isLoading:T}=(0,y.gU)(null!=g?g:"",{skip:!g}),[P]=(0,y.lD)(),N=!!(null==A?void 0:null===(e=A.roles)||void 0===e?void 0:e.includes(d.A7.EXTERNAL_RESPONDENT)),I=async e=>{if(b&&v(),!g)return;let s=e.roles.includes(d.A7.APPROVER),t=await P({user_id:g,payload:{roles:e.roles}});if((0,m.D4)(t)){a((0,w.Vo)((0,m.e$)(t.error)));return}if(!s){let e=C.map(e=>e.fides_key),s=await R({userId:g,fidesKeys:e});if((0,m.D4)(s)){a((0,w.Vo)((0,m.e$)(s.error)));return}}a((0,w.t5)("Permissions updated"))},O=async e=>{g&&(C.length>0&&e.roles.includes(d.A7.APPROVER)?f():await I(e))},z=(0,o.Tg)([d.Sh.USER_PERMISSION_ASSIGN_OWNERS]);if(!g)return null;if(T)return(0,t.jsx)(n.$jN,{});if(!z&&(null==A?void 0:null===(s=A.roles)||void 0===s?void 0:s.includes(d.A7.OWNER)))return(0,t.jsx)(n.xvT,{"data-testid":"insufficient-access",children:"You do not have sufficient access to change this user's permissions."});let q=(null==A?void 0:A.roles)?{roles:A.roles}:E,U=l.K.filter(e=>N?e.roleKey===d.A7.EXTERNAL_RESPONDENT:e.roleKey!==d.A7.EXTERNAL_RESPONDENT),D=N?"External respondent role cannot be changed":void 0;return(0,t.jsx)(c.J9,{onSubmit:O,initialValues:q,enableReinitialize:!0,children:e=>{let{values:s,isSubmitting:a,dirty:l}=e;return(0,t.jsxs)(c.l0,{children:[(0,t.jsxs)(n.Kqy,{spacing:7,children:[(0,t.jsxs)(n.Kqy,{spacing:3,"data-testid":"role-options",children:[(0,t.jsxs)(n.kCb,{alignItems:"center",children:[(0,t.jsx)(n.xvT,{fontSize:"sm",fontWeight:"semibold",mr:1,children:"User role"}),(0,t.jsx)(p.b,{label:"A user's role in the organization determines what parts of the UI they can access and which functions are available to them."})]}),U.map(e=>{let a=s.roles.indexOf(e.roleKey)>=0,n=e.roleKey===d.A7.OWNER?!z:N;return(0,t.jsx)(k,{isSelected:a,isDisabled:n,assignedSystems:C,onAssignedSystemChange:S,...e},e.roleKey)}),!N&&(0,t.jsx)(n.esZ,{title:"To invite a new External respondent user, create a manual task integration and then click on the 'Manage secure access' button",children:(0,t.jsx)(n.wpx,{disabled:!0,"data-testid":"role-option-External respondent",children:"External respondent"})})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)(n.wpx,{onClick:()=>i.push(j.e3),children:"Cancel"}),(0,t.jsx)(n.esZ,{title:D,children:(0,t.jsx)(n.wpx,{className:"ml-2",type:"primary",htmlType:"submit",loading:a,disabled:!l&&C===_||N,"data-testid":"save-btn",children:"Save"})})]})]}),(0,t.jsx)(x.Z,{isOpen:b,onClose:v,onConfirm:()=>I(s),title:"Change role to Approver",testId:"downgrade-to-approver-confirmation-modal",continueButtonText:"Yes",message:(0,t.jsx)(n.xvT,{children:"Switching to an approver role will remove all assigned systems. Do you wish to proceed?"})})]})}})},A=a(61038),T=a(55484),P=a(25980),N=a(40324),I=a(96006),O=a(7426);let{useGetEmailInviteStatusQuery:z}=a(78780).u.injectEndpoints({endpoints:e=>({getEmailInviteStatus:e.query({query:()=>({url:"/messaging/email-invite/status"}),providesTags:()=>["Email Invite Status"]})})});var q=a(76174),U=a(91317),D=a(16125),Z=a(52253),W=a(36835),K=a(31883);let L=T.Ry().shape({password:I.a.label("Password"),passwordConfirmation:T.Z_().required().oneOf([T.iH("password")],"Passwords must match").label("Password confirmation")}),V={password:"",passwordConfirmation:""},B=e=>{let s=(0,n.qY0)(),a=(0,n.pmc)(),[t]=(0,y.ls)(),l=(0,h.useRouter)(),i=(0,D.I0)(),d=(0,r.C)(W.dy),o=async n=>{let r=await t({id:e,new_password:n.password});if((0,K.D4)(r))a((0,w.Vo)((0,m.e$)(r.error)));else if(a((0,w.t5)("Successfully reset user's password. Please inform the user of their new password.")),s.onClose(),(null==d?void 0:d.id)===e){try{localStorage.removeItem(Z.xH)}catch(e){}i((0,W.kS)()),l.push(Z._e)}};return{...s,handleResetPassword:o}};var Y=e=>{let{id:s}=e,{handleResetPassword:a,isOpen:l,onClose:i,onOpen:r}=B(s);return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.wpx,{onClick:r,"data-testid":"reset-password-btn",children:"Reset password"}),(0,t.jsxs)(n.u_l,{isCentered:!0,isOpen:l,onClose:i,children:[(0,t.jsx)(n.ZAr,{}),(0,t.jsx)(n.hzk,{children:(0,t.jsx)(c.J9,{initialValues:V,validationSchema:L,onSubmit:a,children:e=>{let{isSubmitting:s,dirty:a,isValid:l}=e;return(0,t.jsxs)(c.l0,{children:[(0,t.jsx)(n.xBx,{children:"Reset Password"}),(0,t.jsx)(n.olH,{}),(0,t.jsx)(n.fef,{children:(0,t.jsxs)(n.Kqy,{direction:"column",spacing:4,children:[(0,t.jsx)(n.xvT,{mb:2,children:"Choose a new password for this user."}),(0,t.jsx)(N.j0,{name:"password",label:"Password",placeholder:"********",type:"password",tooltip:"Password must contain at least 8 characters, 1 number, 1 capital letter, 1 lowercase letter, and at least 1 symbol.",autoComplete:"new-password"}),(0,t.jsx)(N.j0,{name:"passwordConfirmation",label:"Confirm Password",placeholder:"********",type:"password",tooltip:"Must match above password.",autoComplete:"confirm-password"})]})}),(0,t.jsx)(n.mzw,{children:(0,t.jsxs)("div",{className:"w-full gap-2",children:[(0,t.jsx)(n.wpx,{onClick:i,className:"w-1/2",children:"Cancel"}),(0,t.jsx)(n.wpx,{type:"primary",disabled:!a||!l,loading:s,htmlType:"submit",className:"w-1/2","data-testid":"submit-btn",children:"Change Password"})]})})]})}})})]})]})};let F=e=>{let s=(0,n.qY0)(),a=(0,n.pmc)(),[t,l]=(0,u.useState)(""),[i,r]=(0,u.useState)(""),[d,{isLoading:o}]=(0,y.ev)(),c=(0,h.useRouter)(),m=(0,D.I0)(),p=!!(e&&i&&t),x=async()=>{p&&d({id:e,old_password:t,new_password:i}).unwrap().then(()=>{a((0,w.t5)("Password updated"));try{localStorage.removeItem(Z.xH)}catch(e){}m((0,W.kS)()),s.onClose(),c.push(Z._e)})};return{...s,changePasswordValidation:p,handleChange:e=>{"oldPassword"===e.target.name?l(e.target.value):r(e.target.value)},handleChangePassword:x,isLoading:o,newPasswordValue:i,oldPasswordValue:t}};var H=e=>{let{id:s}=e,{changePasswordValidation:a,handleChange:l,handleChangePassword:i,isLoading:r,isOpen:d,newPasswordValue:o,oldPasswordValue:c,onClose:h,onOpen:u}=F(s);return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.wpx,{onClick:u,"data-testid":"update-password-btn",children:"Update password"}),(0,t.jsxs)(n.u_l,{isCentered:!0,isOpen:d,onClose:h,children:[(0,t.jsx)(n.ZAr,{}),(0,t.jsxs)(n.hzk,{children:[(0,t.jsx)(n.xBx,{children:"Update Password"}),(0,t.jsx)(n.olH,{}),(0,t.jsx)(n.fef,{pb:6,children:(0,t.jsxs)(n.Kqy,{direction:"column",spacing:"15px",children:[(0,t.jsx)(n.NIc,{children:(0,t.jsx)(n.IIB,{isRequired:!0,name:"oldPassword",onChange:l,placeholder:"Old Password",type:"password",value:c,"data-testid":"input-oldPassword"})}),(0,t.jsx)(n.NIc,{children:(0,t.jsx)(n.IIB,{isRequired:!0,name:"newPassword",onChange:l,placeholder:"New Password",type:"password",value:o,"data-testid":"input-newPassword"})})]})}),(0,t.jsxs)(n.mzw,{children:[(0,t.jsx)(n.wpx,{onClick:h,className:"mr-2 w-1/2",children:"Cancel"}),(0,t.jsx)(n.wpx,{type:"primary",disabled:!a,loading:r,onClick:i,htmlType:"submit",className:"mr-3 w-1/2","data-testid":"submit-btn",children:"Change Password"})]})]})]})]})},$=()=>{var e;let s=(0,r.C)(y.Ux),a=(0,r.C)(U.dy),l=!!a&&a.id===s,{data:i}=(0,y.gU)(null!=s?s:"",{skip:!s});return(null==i?void 0:null===(e=i.roles)||void 0===e?void 0:e.includes(d.A7.EXTERNAL_RESPONDENT))?null:(0,t.jsx)(n.xuv,{children:s?(0,t.jsxs)(n.Ugi,{children:[l?(0,t.jsx)(H,{id:s}):null,(0,t.jsx)(o.ZP,{scopes:[d.Sh.USER_PASSWORD_RESET],children:(0,t.jsx)(Y,{id:s})})]}):null})};let M=(e,s,a,t)=>!e||e&&!s||e&&s&&!0===a&&!!t,X=(e,s,a)=>!!(e&&s&&a),G=(e,s,a,t,n,l)=>!!e&&!s&&M(a,t,n,l),J=(e,s,a,t)=>M(e,s,a,t),Q={username:"",first_name:"",email_address:"",last_name:"",password:"",password_login_enabled:!1},ee=(e,s,a,t,n)=>T.Ry().shape({username:T.Z_().required().label("Username"),email_address:T.Z_().email().required().label("Email address"),first_name:T.Z_().label("First name"),last_name:T.Z_().label("Last name"),password:T.Z_().when(["password_login_enabled"],{is:l=>G(e,s,a,t,n,l),then:()=>I.a.label("Password"),otherwise:()=>T.Z_().optional().label("Password")}),password_login_enabled:T.O7().label("Allow password login")});var es=e=>{let{onSubmit:s,initialValues:a,canEditNames:l}=e,i=(0,h.useRouter)(),d=(0,n.pmc)(),o=(0,r.T)(),u=(0,n.qY0)(),{data:p}=z(),{data:x}=(0,q.qv)();(0,O.tB)({api_set:!1});let g=(0,r.C)(y.ZC),b=(0,r.C)(O.iR),{plus:v}=(0,P.hz)(),_=(null==p?void 0:p.enabled)||!1,C=(null==b?void 0:b.allow_username_password_login)||!1,S=!g,k=!S&&!l,E=x&&x.length>0||!1,R=X(v,E,C),T=null!=a?a:Q;g&&"password_login_enabled"in g&&(T={...T,password_login_enabled:!!g.password_login_enabled});let I=ee(S,_,v,E,C),U=async e=>{let a=G(S,_,v,E,C,e.password_login_enabled),t={username:e.username,email_address:e.email_address,first_name:e.first_name,last_name:e.last_name};R&&(t.password_login_enabled=e.password_login_enabled),a&&e.password&&(t.password=e.password);let n=await s(t);if((0,m.D4)(n)){d((0,w.Vo)((0,m.e$)(n.error)));return}d((0,w.t5)("".concat(S?"User created. By default, new users are set to the Viewer role. To change the role, please go to the Permissions tab.":"User updated."))),(null==n?void 0:n.data)&&o((0,y.Vv)(n.data.id))};return(0,t.jsx)(c.J9,{onSubmit:U,initialValues:T,validationSchema:I,"data-testid":"user-form",children:e=>{let{dirty:s,isSubmitting:a,isValid:l,values:r}=e;return(0,t.jsx)(c.l0,{children:(0,t.jsxs)(n.Kqy,{maxW:["xs","xs","100%"],width:"100%",spacing:7,children:[(0,t.jsxs)(n.Kqy,{spacing:6,maxWidth:"55%",children:[(0,t.jsxs)(n.kCb,{children:[(0,t.jsxs)(n.xvT,{display:"flex",alignItems:"center",fontSize:"sm",fontWeight:"semibold",children:["Profile"," ",(null==g?void 0:g.disabled)&&(0,t.jsx)(n.j8w,{color:"success",className:"ml-2","data-testid":"invite-sent-badge",children:"Invite sent"})]}),(0,t.jsx)(n.xuv,{marginLeft:"auto",children:(0,t.jsxs)(n.Ugi,{children:[J(v,E,C||!1,r.password_login_enabled)&&(0,t.jsx)($,{"data-testid":"password-management"}),S?null:(0,t.jsxs)(n.xuv,{children:[(0,t.jsx)(n.wpx,{"aria-label":"delete",icon:(0,t.jsx)(f.l,{}),onClick:u.onOpen,"data-testid":"delete-user-btn"}),(0,t.jsx)(A.Z,{user:g,...u})]})]})})]}),(0,t.jsx)(N.j0,{name:"username",label:"Username",variant:"block",placeholder:"Enter new username",disabled:!S,isRequired:!0,"data-testid":"input-username"}),(0,t.jsx)(N.j0,{name:"email_address",label:"Email address",variant:"block",placeholder:"Enter email of user",isRequired:!0,"data-testid":"input-email-address"}),(0,t.jsx)(N.j0,{name:"first_name",label:"First name",variant:"block",placeholder:"Enter first name of user",disabled:k,"data-testid":"input-first-name"}),(0,t.jsx)(N.j0,{name:"last_name",label:"Last name",variant:"block",placeholder:"Enter last name of user",disabled:k,"data-testid":"input-last-name"}),R&&(0,t.jsx)(N.w8,{name:"password_login_enabled",label:"Allow password login",tooltip:"When enabled, user can log in with username and password. When disabled, user must use SSO.",variant:"stacked",isDisabled:!S,"data-testid":"toggle-allow-password-login",size:"default"}),G(S,_,v,E,C,r.password_login_enabled)&&(0,t.jsx)(N.j0,{name:"password",label:"Password",variant:"block",placeholder:"********",type:"password",tooltip:"Password must contain at least 8 characters, 1 number, 1 capital letter, 1 lowercase letter, and at least 1 symbol.",isRequired:!0,"data-testid":"input-password"})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)(n.wpx,{onClick:()=>i.push(j.e3),className:"mr-3","data-testid":"cancel-btn",children:"Cancel"}),(0,t.jsx)(n.wpx,{htmlType:"submit",type:"primary",disabled:!s||!l,loading:a,"data-testid":"save-user-btn",children:"Save"})]})]})})}})},ea=e=>{let{onSubmit:s,initialValues:a,...l}=e,c=(0,r.C)(y.Ux);(0,y.Fk)(c,{skip:!c});let h=(0,o.Tg)([d.Sh.USER_PERMISSION_UPDATE]),u=!c||!h,m=[{label:"Profile",key:"profile",children:(0,t.jsx)(es,{onSubmit:s,initialValues:a,...l})},{label:"Permissions",key:"permissions",children:(0,t.jsxs)(n.kCb,{gap:"97px",children:[(0,t.jsx)(n.xuv,{w:{base:"100%",md:"50%",xl:"50%"},children:(0,t.jsx)(R,{})}),(0,t.jsx)(n.xuv,{position:"absolute",top:"96px",right:6,height:"calc(100% + 100px)",overflowY:"scroll",padding:6,w:"35%",borderLeftWidth:"1px",children:(0,t.jsx)(i,{})})]}),disabled:u,forceRender:!u}];return(0,t.jsx)(n.A5g,{items:m})}},31883:function(e,s,a){a.d(s,{Bw:function(){return t.Bw},D4:function(){return t.D4}});var t=a(19043)}}]);
@@ -1 +1 @@
1
- "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[5258],{97181:function(e,a,t){t.d(a,{d:function(){return o}});var i=t(24246),s=t(96306),n=t(34090),r=t(27378),l=t(46238),d=t(40324);let o=e=>{let{name:a,label:t,labelProps:o,tooltip:c,isRequired:u,layout:m="inline",helperText:x,...p}=e,[h,y,{setValue:v}]=(0,n.U$)(a),j=!!(y.touched&&y.error),[g,b]=(0,r.useState)("");h.value||"tags"!==p.mode&&"multiple"!==p.mode||(h.value=[]),"tags"===p.mode&&"string"==typeof h.value&&(h.value=[h.value]);let f="tags"===p.mode?(e,a)=>e?e.value!==g||h.value.includes(g)?p.optionRender?p.optionRender(e,a):e.label:'Create "'.concat(g,'"'):void 0:p.optionRender||void 0,_=e=>{b(e),p.onSearch&&p.onSearch(e)},k=(e,a)=>{v(e),p.onChange&&p.onChange(e,a)};return"inline"===m?(0,i.jsx)(s.NIc,{isInvalid:j,isRequired:u,children:(0,i.jsxs)(s.rjZ,{templateColumns:t?"1fr 3fr":"1fr",children:[t?(0,i.jsx)(d.__,{htmlFor:p.id||a,...o,children:t}):null,(0,i.jsxs)(s.jqI,{align:"center",children:[(0,i.jsxs)(s.jqI,{vertical:!0,flex:1,className:"mr-2",children:[(0,i.jsx)(s.WPr,{...h,id:p.id||a,"data-testid":"controlled-select-".concat(h.name),...p,optionRender:f,onSearch:"tags"===p.mode?_:void 0,onChange:k,value:h.value||void 0,status:j?"error":void 0}),x&&(0,i.jsx)(s.Q6r,{children:x}),(0,i.jsx)(d.Bc,{isInvalid:j,message:y.error,fieldName:h.name})]}),(0,i.jsx)(l.b,{label:c,className:j?"mt-2 self-start":void 0})]})]})}):(0,i.jsx)(s.NIc,{isInvalid:j,isRequired:u,children:(0,i.jsxs)(s.gCW,{alignItems:"start",children:[(0,i.jsxs)(s.jqI,{align:"center",children:[t?(0,i.jsx)(d.__,{htmlFor:p.id||a,fontSize:"xs",my:0,mr:1,...o,children:t}):null,(0,i.jsx)(l.b,{label:c})]}),(0,i.jsx)(s.WPr,{...h,id:p.id||a,"data-testid":"controlled-select-".concat(h.name),...p,optionRender:f,onSearch:"tags"===p.mode?_:void 0,onChange:k,value:h.value||void 0,status:j?"error":void 0}),x&&(0,i.jsx)(s.Q6r,{style:{marginTop:0},children:x}),(0,i.jsx)(d.Bc,{isInvalid:j,message:y.error,fieldName:h.name})]})})}},35258:function(e,a,t){t.d(a,{Z:function(){return W}});var i=t(24246),s=t(96306),n=t(27378),r=t(84720),l=t(52368),d=t(812),o=t(46628),c=t(65450),u=t(31883),m=t(34090),x=t(45938),p=t(95346),h=t(55484),y=t(97181),v=t(40324),j=t(54682);let g=h.Ry().shape({data_categories:h.IX(h.Z_()).min(1,"Must assign at least one data category").label("Data categories"),data_use:h.Z_().required().label("Data use"),data_subjects:h.IX(h.Z_()).min(1,"Must assign at least one data subject").label("Data subjects")}),b={data_categories:[],data_subjects:[],data_use:"",dataset_references:[],customFieldValues:{},id:""},f=e=>{var a;let{customFieldValues:t,...i}=e;return{...i,name:null!==(a=e.name)&&void 0!==a?a:""}},_=e=>{let{allDataUses:a,allDataCategories:t,allDataSubjects:n,allDatasets:r,privacyDeclarationId:l,includeCustomFields:d}=e,o=r?r.map(e=>{var a;return{label:null!==(a=e.name)&&void 0!==a?a:e.fides_key,value:e.fides_key}}):[];return(0,i.jsxs)(s.Kqy,{spacing:4,children:[(0,i.jsx)(y.d,{id:"data_use",label:"Data use",name:"data_use",options:a.map(e=>({value:e.fides_key,label:e.fides_key})),tooltip:"What is the system using the data for. For example, is it for third party advertising or perhaps simply providing system operations.",layout:"stacked",disabled:!!l}),(0,i.jsx)(v.j0,{id:"name",label:"Processing Activity",name:"name",variant:"stacked",tooltip:"The personal data processing activity or activities associated with this data use.",disabled:!!l}),(0,i.jsx)(y.d,{name:"data_categories",label:"Data categories",options:t.map(e=>({value:e.fides_key,label:e.fides_key})),tooltip:"What type of data is your system processing? This could be various types of user or system data.",mode:"multiple",layout:"stacked",disabled:!0}),(0,i.jsx)(y.d,{name:"data_subjects",label:"Data subjects",options:n.map(e=>({value:e.fides_key,label:e.fides_key})),tooltip:"Whose data are you processing? This could be customers, employees or any other type of user in your system.",mode:"multiple",layout:"stacked",disabled:!0}),r?(0,i.jsx)(y.d,{name:"dataset_references",label:"Dataset references",options:o,tooltip:"Referenced Dataset fides keys used by the system.",mode:"multiple",layout:"stacked"}):null,d?(0,i.jsx)(p.uc,{resourceType:j.P6.PRIVACY_DECLARATION,resourceFidesKey:l}):null]})},k=(e,a)=>e?{...e,customFieldValues:a||{}}:b,S=e=>{let{onSubmit:a,initialValues:t,allDataUses:r,privacyDeclarationId:l}=e,{customFieldValues:d,upsertCustomFields:o}=(0,p.mZ)({resourceType:j.P6.PRIVACY_DECLARATION,resourceFidesKey:l}),c=(0,n.useMemo)(()=>k(t,d),[t,d]),[u,m]=(0,n.useState)(!1),x=(0,n.useMemo)(()=>{let e=r.filter(e=>e.fides_key===c.data_use)[0];if(e)return c.name?"".concat(e.name," - ").concat(c.name):e.name},[r,c]);return{handleSubmit:async(e,t)=>{let{customFieldValues:i}=e,s=f(e),n=await a(s,t);if(n){let a=n.filter(a=>a.data_use===e.data_use&&(!a.name||a.name===e.name));a.length>0&&await o({customFieldValues:i,fides_key:a[0].id}),t.resetForm({values:e}),m(!0)}},renderHeader:e=>{let{dirty:a,boxProps:t,hideSaved:n}=e;return(0,i.jsxs)(s.xuv,{display:"flex",alignItems:"center",justifyContent:"space-between",...t,children:[x?(0,i.jsx)(s.X6q,{as:"h4",size:"xs",fontWeight:"medium",mr:4,children:x}):null,!n&&u&&!a&&c.data_use?(0,i.jsxs)(s.xvT,{fontSize:"sm","data-testid":"saved-indicator",children:[(0,i.jsx)(s.StI,{})," Saved"]}):null]})},initialValues:c}},D=e=>{let{onSubmit:a,initialValues:t,onDelete:n,...r}=e,{handleSubmit:l,renderHeader:d,initialValues:o}=S({onSubmit:a,initialValues:t,allDataUses:r.allDataUses,privacyDeclarationId:null==t?void 0:t.id});return(0,i.jsx)(m.J9,{enableReinitialize:!0,initialValues:o,onSubmit:l,validationSchema:g,children:e=>{let{dirty:a}=e;return(0,i.jsxs)(m.l0,{children:[(0,i.jsx)(x.Gt,{id:"PrivacyDeclaration",name:"New Privacy Declaration"}),(0,i.jsxs)(s.Kqy,{spacing:4,children:[(0,i.jsx)(s.xuv,{"data-testid":"header",children:d({dirty:a})}),(0,i.jsx)(_,{onDelete:n,...r})]})]})}})},C=e=>{let{privacyDeclaration:a,onEdit:t,onDelete:n,includeCustomFields:r,...l}=e,{initialValues:d,renderHeader:o,handleSubmit:c}=S({initialValues:a,onSubmit:e=>t(a,e),privacyDeclarationId:a.id,...l});return(0,i.jsx)(s.Qdk,{children:e=>{let{isExpanded:t}=e;return(0,i.jsx)(m.J9,{enableReinitialize:!0,initialValues:d,onSubmit:c,validationSchema:g,children:e=>{let{dirty:d}=e;return(0,i.jsxs)(m.l0,{"data-testid":"".concat(a.data_use,"-form"),children:[(0,i.jsx)(x.Gt,{id:"".concat(a.id,"-form"),name:a.id}),(0,i.jsxs)(s.KFZ,{py:4,borderBottomWidth:t?"0px":"1px",backgroundColor:t?"gray.50":void 0,"data-testid":"accordion-header-".concat(a.data_use),children:[o({dirty:d,boxProps:{flex:"1",textAlign:"left"},hideSaved:!t}),(0,i.jsx)(s.XEm,{})]}),(0,i.jsx)(s.Hk3,{backgroundColor:"gray.50",pt:0,children:(0,i.jsx)(s.Kqy,{spacing:4,children:(0,i.jsx)(_,{privacyDeclarationId:a.id,onDelete:n,includeCustomFields:r,...l})})})]})}})}})};var w=e=>{let{privacyDeclarations:a,...t}=e;return(0,i.jsx)(s.UQy,{allowToggle:!0,border:"transparent","data-testid":"privacy-declaration-accordion",children:a.map(e=>(0,i.jsx)(C,{privacyDeclaration:e,...t},e.id))})},I=e=>{let{system:a,includeCustomFields:t,onSave:r,...l}=e,m=(0,s.pmc)(),[x]=(0,c.qQ)(),[p,h]=(0,n.useState)(!1),[y,v]=(0,n.useState)(void 0),j=(0,n.useMemo)(()=>y?a.privacy_declarations.filter(e=>e.id!==y.id):a.privacy_declarations,[y,a]),g=e=>j.filter(a=>a.data_use===e.data_use&&a.name===e.name).length>0&&(m((0,o.Vo)("A declaration already exists with that data use in this system. Please supply a different data use.")),!0),b=async(e,t)=>{let i=e.map(e=>{var a;return{...e,name:null!==(a=e.name)&&void 0!==a?a:""}}),s={...a,privacy_declarations:i};return(e=>{if((0,u.D4)(e)){let a=(0,d.e$)(e.error,"An unexpected error occurred while updating the system. Please try again.");m((0,o.Vo)(a));return}return m.closeAll(),m((0,o.t5)(t?"Data use deleted":"Data use saved")),r&&r(e.data),e.data.privacy_declarations})(await x(s))},f=async(e,t)=>{if(!(t.id!==e.id&&g(t)))return b(a.privacy_declarations.map(a=>a.id===e.id?t:a))},_=async e=>{if(g(e))return;m.closeAll();let a=[...j,e],t=await b(a);return t&&v(t.filter(a=>(!a.name||a.name===e.name)&&a.data_use===e.data_use)[0]),t},k=async e=>b(a.privacy_declarations.filter(a=>a.id!==e.id),!0),S=async e=>{let a=await k(e);return a&&(h(!1),v(void 0)),a};return(0,n.useEffect)(()=>{h(!1)},[a.fides_key]),(0,i.jsxs)(s.Kqy,{spacing:3,children:[(0,i.jsx)(w,{privacyDeclarations:j,onEdit:f,onDelete:k,includeCustomFields:t,...l}),p?(0,i.jsx)(s.xuv,{backgroundColor:"gray.50",p:4,"data-testid":"new-declaration-form",children:(0,i.jsx)(D,{initialValues:y,onSubmit:_,onDelete:S,includeCustomFields:t,...l})}):null,0===a.privacy_declarations.length?(0,i.jsx)(s.xvT,{fontSize:"sm",lineHeight:5,fontWeight:"medium",pl:2,children:"No data uses"}):null]})},T=t(19043);let V=e=>{let[a]=(0,c.dB)(),t=(0,s.pmc)();return{handleUpsertSystem:async(i,s)=>{let n=[{...e,name:i.name,description:i.description}],r=await a(n);(0,T.D4)(r)?t((0,o.Vo)((0,d.e$)(r.error))):(t((0,o.t5)("Successfully saved system info")),s.resetForm({values:i}))},validationSchema:h.Ry().shape({name:h.Z_().required().label("Name"),description:h.Z_().required().label("Description")})}},R={name:"",description:""};var F=e=>{let{system:a}=e,t="/systems/configure/".concat(a.fides_key),{handleUpsertSystem:n,validationSchema:r}=V(a);return(0,i.jsxs)(s.xuv,{children:[(0,i.jsxs)(s.kCb,{alignItems:"center",children:[(0,i.jsx)(s.xvT,{color:"gray.600",size:"md",lineHeight:6,fontWeight:"semibold",marginBottom:2,children:"System details"}),(0,i.jsx)(s.LZC,{}),(0,i.jsxs)(s._pl,{color:"complimentary.500",href:t,children:["View more",(0,i.jsx)(s.h0n,{ml:2})]})]}),(0,i.jsx)(s.xuv,{width:"100%",padding:4,borderTop:"1px solid",borderColor:"gray.200",children:(0,i.jsx)(m.J9,{enableReinitialize:!0,initialValues:null!=a?a:R,validationSchema:r,onSubmit:n,children:()=>(0,i.jsxs)(m.l0,{children:[(0,i.jsx)(x.Gt,{id:"SystemInfoDrawer",name:"System Info"}),(0,i.jsx)(s.xuv,{marginTop:3,children:(0,i.jsx)(v.j0,{label:"System name",name:"name",variant:"stacked",disabled:!0})}),(0,i.jsx)(s.xuv,{marginTop:3,children:(0,i.jsx)(v.Ks,{label:"System description",name:"description",variant:"stacked",disabled:!0})})]})})})]})},W=e=>{var a;let{selectedSystemId:t,resetSelectedSystemId:d}=e,o=(0,n.useMemo)(()=>!!t,[t]),{isLoading:u,...m}=(0,l.f)({includeDatasets:!1,includeDisabled:!1}),{data:x}=(0,c.rn)(t,{skip:!t});return(0,i.jsx)(s.xuv,{position:"absolute",pointerEvents:"none",top:0,left:0,right:0,bottom:0,overflow:"hidden",children:(0,i.jsx)(s.Mi4,{transition:{enter:{ease:"easeInOut",duration:.5},exit:{ease:"easeInOut",duration:.5}},direction:"right",in:o,unmountOnExit:!0,style:{zIndex:11,pointerEvents:"none",position:"absolute"},children:(0,i.jsxs)(s.xuv,{position:"absolute",right:"0px",height:"100%",width:"100%",maxWidth:"480px",pointerEvents:"auto",borderWidth:0,boxShadow:"0px 20px 25px -5px rgba(0, 0, 0, 0.1), 0px 10px 10px -5px rgba(0, 0, 0, 0.04)",display:t?"unset":"none",backgroundColor:"white","data-testid":"datamap-drawer",children:[(0,i.jsx)(s.xuv,{id:"drawer-header",borderBottomWidth:1,paddingX:6,paddingY:3,children:(0,i.jsxs)(s.kCb,{children:[(0,i.jsx)(s.kCb,{justifyContent:"space-between",alignItems:"center",height:"40px",children:(0,i.jsx)(s.xvT,{fontWeight:"semibold",fontSize:"lg",lineHeight:"7",color:"gray.900",children:null!==(a=null==x?void 0:x.name)&&void 0!==a?a:"System Information"})}),(0,i.jsx)(s.LZC,{}),(0,i.jsx)(s.kCb,{alignItems:"center",children:(0,i.jsx)(s.wpx,{icon:(0,i.jsx)(s.Two,{}),"aria-label":"Close error message",type:"text",onClick:d,"data-testid":"datamap-drawer-close"})})]})}),(0,i.jsx)(s.xuv,{id:"drawer-body",height:"calc(100% - 46px)",overflowY:"auto",padding:6,style:{scrollbarGutter:"stable"},children:x?(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(F,{system:x}),(0,i.jsx)(s.xvT,{size:"md",color:"gray.600",lineHeight:6,fontWeight:"semibold",mt:"10px",mb:2,children:"Data uses"}),(0,i.jsx)(s.xuv,{borderTop:"1px solid",borderColor:"gray.200",children:(0,i.jsx)(s.xuv,{pb:3,children:(0,i.jsx)(I,{system:x,...m})})}),(0,i.jsx)(s.xvT,{size:"md",color:"gray.600",lineHeight:6,fontWeight:"semibold",mt:"10px",mb:2,paddingBottom:2,children:"Data flow"}),(0,i.jsx)(r.q,{system:x})]}):null})]})})})}}}]);
1
+ "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[5258],{97181:function(e,a,t){t.d(a,{d:function(){return o}});var i=t(24246),s=t(96306),n=t(34090),r=t(27378),l=t(46238),d=t(40324);let o=e=>{let{name:a,label:t,labelProps:o,tooltip:c,isRequired:u,layout:m="inline",helperText:x,...p}=e,[h,y,{setValue:v}]=(0,n.U$)(a),j=!!(y.touched&&y.error),[g,b]=(0,r.useState)("");h.value||"tags"!==p.mode&&"multiple"!==p.mode||(h.value=[]),"tags"===p.mode&&"string"==typeof h.value&&(h.value=[h.value]);let f="tags"===p.mode?(e,a)=>e?e.value!==g||h.value.includes(g)?p.optionRender?p.optionRender(e,a):e.label:'Create "'.concat(g,'"'):void 0:p.optionRender||void 0,_=e=>{b(e),p.onSearch&&p.onSearch(e)},k=(e,a)=>{v(e),p.onChange&&p.onChange(e,a)};return"inline"===m?(0,i.jsx)(s.NIc,{isInvalid:j,isRequired:u,children:(0,i.jsxs)(s.rjZ,{templateColumns:t?"1fr 3fr":"1fr",children:[t?(0,i.jsx)(d.__,{htmlFor:p.id||a,...o,children:t}):null,(0,i.jsxs)(s.jqI,{align:"center",children:[(0,i.jsxs)(s.jqI,{vertical:!0,flex:1,className:"mr-2",children:[(0,i.jsx)(s.WPr,{...h,id:p.id||a,"data-testid":"controlled-select-".concat(h.name),...p,optionRender:f,onSearch:"tags"===p.mode?_:void 0,onChange:k,value:h.value||void 0,status:j?"error":void 0}),x&&(0,i.jsx)(s.Q6r,{children:x}),(0,i.jsx)(d.Bc,{isInvalid:j,message:y.error,fieldName:h.name})]}),(0,i.jsx)(l.b,{label:c,className:j?"mt-2 self-start":void 0})]})]})}):(0,i.jsx)(s.NIc,{isInvalid:j,isRequired:u,children:(0,i.jsxs)(s.gCW,{alignItems:"start",children:[(0,i.jsxs)(s.jqI,{align:"center",children:[t?(0,i.jsx)(d.__,{htmlFor:p.id||a,fontSize:"xs",my:0,mr:1,...o,children:t}):null,(0,i.jsx)(l.b,{label:c})]}),(0,i.jsx)(s.WPr,{...h,id:p.id||a,"data-testid":"controlled-select-".concat(h.name),...p,optionRender:f,onSearch:"tags"===p.mode?_:void 0,onChange:k,value:h.value||void 0,status:j?"error":void 0}),x&&(0,i.jsx)(s.Q6r,{style:{marginTop:0},children:x}),(0,i.jsx)(d.Bc,{isInvalid:j,message:y.error,fieldName:h.name})]})})}},35258:function(e,a,t){t.d(a,{Z:function(){return W}});var i=t(24246),s=t(96306),n=t(27378),r=t(84720),l=t(52368),d=t(812),o=t(46628),c=t(65450),u=t(31883),m=t(34090),x=t(45938),p=t(95346),h=t(55484),y=t(97181),v=t(40324),j=t(54682);let g=h.Ry().shape({data_categories:h.IX(h.Z_()).min(1,"Must assign at least one data category").label("Data categories"),data_use:h.Z_().required().label("Data use"),data_subjects:h.IX(h.Z_()).min(1,"Must assign at least one data subject").label("Data subjects")}),b={data_categories:[],data_subjects:[],data_use:"",dataset_references:[],customFieldValues:{},id:""},f=e=>{var a;let{customFieldValues:t,...i}=e;return{...i,name:null!==(a=e.name)&&void 0!==a?a:""}},_=e=>{let{allDataUses:a,allDataCategories:t,allDataSubjects:n,allDatasets:r,privacyDeclarationId:l,includeCustomFields:d}=e,o=r?r.map(e=>{var a;return{label:null!==(a=e.name)&&void 0!==a?a:e.fides_key,value:e.fides_key}}):[];return(0,i.jsxs)(s.Kqy,{spacing:4,children:[(0,i.jsx)(y.d,{id:"data_use",label:"Data use",name:"data_use",options:a.map(e=>({value:e.fides_key,label:e.fides_key})),tooltip:"What is the system using the data for. For example, is it for third party advertising or perhaps simply providing system operations.",layout:"stacked",disabled:!!l}),(0,i.jsx)(v.j0,{id:"name",label:"Processing Activity",name:"name",variant:"stacked",tooltip:"The personal data processing activity or activities associated with this data use.",disabled:!!l}),(0,i.jsx)(y.d,{name:"data_categories",label:"Data categories",options:t.map(e=>({value:e.fides_key,label:e.fides_key})),tooltip:"What type of data is your system processing? This could be various types of user or system data.",mode:"multiple",layout:"stacked",disabled:!0}),(0,i.jsx)(y.d,{name:"data_subjects",label:"Data subjects",options:n.map(e=>({value:e.fides_key,label:e.fides_key})),tooltip:"Whose data are you processing? This could be customers, employees or any other type of user in your system.",mode:"multiple",layout:"stacked",disabled:!0}),r?(0,i.jsx)(y.d,{name:"dataset_references",label:"Dataset references",options:o,tooltip:"Referenced Dataset fides keys used by the system.",mode:"multiple",layout:"stacked"}):null,d?(0,i.jsx)(p.uc,{resourceType:j.P6.PRIVACY_DECLARATION,resourceFidesKey:l}):null]})},k=(e,a)=>e?{...e,customFieldValues:a||{}}:b,S=e=>{let{onSubmit:a,initialValues:t,allDataUses:r,privacyDeclarationId:l}=e,{customFieldValues:d,upsertCustomFields:o}=(0,p.mZ)({resourceType:j.P6.PRIVACY_DECLARATION,resourceFidesKey:l}),c=(0,n.useMemo)(()=>k(t,d),[t,d]),[u,m]=(0,n.useState)(!1),x=(0,n.useMemo)(()=>{let e=r.filter(e=>e.fides_key===c.data_use)[0];if(e)return c.name?"".concat(e.name," - ").concat(c.name):e.name},[r,c]);return{handleSubmit:async(e,t)=>{let{customFieldValues:i}=e,s=f(e),n=await a(s,t);if(n){let a=n.filter(a=>a.data_use===e.data_use&&(!a.name||a.name===e.name));a.length>0&&await o({customFieldValues:i,fides_key:a[0].id}),t.resetForm({values:e}),m(!0)}},renderHeader:e=>{let{dirty:a,boxProps:t,hideSaved:n}=e;return(0,i.jsxs)(s.xuv,{display:"flex",alignItems:"center",justifyContent:"space-between",...t,children:[x?(0,i.jsx)(s.X6q,{as:"h4",size:"xs",fontWeight:"medium",mr:4,children:x}):null,!n&&u&&!a&&c.data_use?(0,i.jsxs)(s.xvT,{fontSize:"sm","data-testid":"saved-indicator",children:[(0,i.jsx)(s.StI,{})," Saved"]}):null]})},initialValues:c}},D=e=>{let{onSubmit:a,initialValues:t,onDelete:n,...r}=e,{handleSubmit:l,renderHeader:d,initialValues:o}=S({onSubmit:a,initialValues:t,allDataUses:r.allDataUses,privacyDeclarationId:null==t?void 0:t.id});return(0,i.jsx)(m.J9,{enableReinitialize:!0,initialValues:o,onSubmit:l,validationSchema:g,children:e=>{let{dirty:a}=e;return(0,i.jsxs)(m.l0,{children:[(0,i.jsx)(x.Gt,{id:"PrivacyDeclaration",name:"New Privacy Declaration"}),(0,i.jsxs)(s.Kqy,{spacing:4,children:[(0,i.jsx)(s.xuv,{"data-testid":"header",children:d({dirty:a})}),(0,i.jsx)(_,{onDelete:n,...r})]})]})}})},C=e=>{let{privacyDeclaration:a,onEdit:t,onDelete:n,includeCustomFields:r,...l}=e,{initialValues:d,renderHeader:o,handleSubmit:c}=S({initialValues:a,onSubmit:e=>t(a,e),privacyDeclarationId:a.id,...l});return(0,i.jsx)(s.Qdk,{children:e=>{let{isExpanded:t}=e;return(0,i.jsx)(m.J9,{enableReinitialize:!0,initialValues:d,onSubmit:c,validationSchema:g,children:e=>{let{dirty:d}=e;return(0,i.jsxs)(m.l0,{"data-testid":"".concat(a.data_use,"-form"),children:[(0,i.jsx)(x.Gt,{id:"".concat(a.id,"-form"),name:a.id}),(0,i.jsxs)(s.KFZ,{py:4,borderBottomWidth:t?"0px":"1px",backgroundColor:t?"gray.50":void 0,"data-testid":"accordion-header-".concat(a.data_use),children:[o({dirty:d,boxProps:{flex:"1",textAlign:"left"},hideSaved:!t}),(0,i.jsx)(s.XEm,{})]}),(0,i.jsx)(s.Hk3,{backgroundColor:"gray.50",pt:0,children:(0,i.jsx)(s.Kqy,{spacing:4,children:(0,i.jsx)(_,{privacyDeclarationId:a.id,onDelete:n,includeCustomFields:r,...l})})})]})}})}})};var w=e=>{let{privacyDeclarations:a,...t}=e;return(0,i.jsx)(s.UQy,{allowToggle:!0,border:"transparent","data-testid":"privacy-declaration-accordion",children:a.map(e=>(0,i.jsx)(C,{privacyDeclaration:e,...t},e.id))})},I=e=>{let{system:a,includeCustomFields:t,onSave:r,...l}=e,m=(0,s.pmc)(),[x]=(0,c.qQ)(),[p,h]=(0,n.useState)(!1),[y,v]=(0,n.useState)(void 0),j=(0,n.useMemo)(()=>y?a.privacy_declarations.filter(e=>e.id!==y.id):a.privacy_declarations,[y,a]),g=e=>j.filter(a=>a.data_use===e.data_use&&a.name===e.name).length>0&&(m((0,o.Vo)("A declaration already exists with that data use in this system. Please supply a different data use.")),!0),b=async(e,t)=>{let i=e.map(e=>{var a;return{...e,name:null!==(a=e.name)&&void 0!==a?a:""}}),s={...a,privacy_declarations:i};return(e=>{if((0,u.D4)(e)){let a=(0,d.e$)(e.error,"An unexpected error occurred while updating the system. Please try again.");m((0,o.Vo)(a));return}return m.closeAll(),m((0,o.t5)(t?"Data use deleted":"Data use saved")),r&&r(e.data),e.data.privacy_declarations})(await x(s))},f=async(e,t)=>{if(!(t.id!==e.id&&g(t)))return b(a.privacy_declarations.map(a=>a.id===e.id?t:a))},_=async e=>{if(g(e))return;m.closeAll();let a=[...j,e],t=await b(a);return t&&v(t.filter(a=>(!a.name||a.name===e.name)&&a.data_use===e.data_use)[0]),t},k=async e=>b(a.privacy_declarations.filter(a=>a.id!==e.id),!0),S=async e=>{let a=await k(e);return a&&(h(!1),v(void 0)),a};return(0,n.useEffect)(()=>{h(!1)},[a.fides_key]),(0,i.jsxs)(s.Kqy,{spacing:3,children:[(0,i.jsx)(w,{privacyDeclarations:j,onEdit:f,onDelete:k,includeCustomFields:t,...l}),p?(0,i.jsx)(s.xuv,{backgroundColor:"gray.50",p:4,"data-testid":"new-declaration-form",children:(0,i.jsx)(D,{initialValues:y,onSubmit:_,onDelete:S,includeCustomFields:t,...l})}):null,0===a.privacy_declarations.length?(0,i.jsx)(s.xvT,{fontSize:"sm",lineHeight:5,fontWeight:"medium",pl:2,children:"No data uses"}):null]})},T=t(19043);let V=e=>{let[a]=(0,c.dB)(),t=(0,s.pmc)();return{handleUpsertSystem:async(i,s)=>{let n=[{...e,name:i.name,description:i.description}],r=await a(n);(0,T.D4)(r)?t((0,o.Vo)((0,d.e$)(r.error))):(t((0,o.t5)("Successfully saved system info")),s.resetForm({values:i}))},validationSchema:h.Ry().shape({name:h.Z_().required().label("Name"),description:h.Z_().required().label("Description")})}},R={name:"",description:""};var F=e=>{let{system:a}=e,t="/systems/configure/".concat(a.fides_key),{handleUpsertSystem:n,validationSchema:r}=V(a);return(0,i.jsxs)(s.xuv,{children:[(0,i.jsxs)(s.kCb,{alignItems:"center",children:[(0,i.jsx)(s.xvT,{color:"gray.600",size:"md",lineHeight:6,fontWeight:"semibold",marginBottom:2,children:"System details"}),(0,i.jsx)(s.LZC,{}),(0,i.jsxs)(s._pl,{color:"complimentary.500",href:t,children:["View more",(0,i.jsx)(s.h0n,{ml:2})]})]}),(0,i.jsx)(s.xuv,{width:"100%",padding:4,borderTop:"1px solid",borderColor:"gray.200",children:(0,i.jsx)(m.J9,{enableReinitialize:!0,initialValues:null!=a?a:R,validationSchema:r,onSubmit:n,children:()=>(0,i.jsxs)(m.l0,{children:[(0,i.jsx)(x.Gt,{id:"SystemInfoDrawer",name:"System Info"}),(0,i.jsx)(s.xuv,{marginTop:3,children:(0,i.jsx)(v.j0,{label:"System name",name:"name",variant:"stacked",disabled:!0})}),(0,i.jsx)(s.xuv,{marginTop:3,children:(0,i.jsx)(v.Ks,{label:"System description",name:"description",variant:"stacked",disabled:!0})})]})})})]})},W=e=>{var a;let{selectedSystemId:t,resetSelectedSystemId:d}=e,o=(0,n.useMemo)(()=>!!t,[t]),{isLoading:u,...m}=(0,l.f)({includeDatasets:!1,includeDisabled:!1}),{data:x}=(0,c.rn)(t,{skip:!t});return(0,i.jsx)(s.xuv,{position:"absolute",pointerEvents:"none",top:0,left:0,right:0,bottom:0,overflow:"hidden",children:(0,i.jsx)(s.Mi4,{transition:{enter:{ease:"easeInOut",duration:.5},exit:{ease:"easeInOut",duration:.5}},direction:"right",in:o,unmountOnExit:!0,style:{zIndex:21,pointerEvents:"none",position:"absolute"},children:(0,i.jsxs)(s.xuv,{position:"absolute",right:"0px",height:"100%",width:"100%",maxWidth:"480px",pointerEvents:"auto",borderWidth:0,boxShadow:"0px 20px 25px -5px rgba(0, 0, 0, 0.1), 0px 10px 10px -5px rgba(0, 0, 0, 0.04)",display:t?"unset":"none",backgroundColor:"white","data-testid":"datamap-drawer",children:[(0,i.jsx)(s.xuv,{id:"drawer-header",borderBottomWidth:1,paddingX:6,paddingY:3,children:(0,i.jsxs)(s.kCb,{children:[(0,i.jsx)(s.kCb,{justifyContent:"space-between",alignItems:"center",height:"40px",children:(0,i.jsx)(s.xvT,{fontWeight:"semibold",fontSize:"lg",lineHeight:"7",color:"gray.900",children:null!==(a=null==x?void 0:x.name)&&void 0!==a?a:"System Information"})}),(0,i.jsx)(s.LZC,{}),(0,i.jsx)(s.kCb,{alignItems:"center",children:(0,i.jsx)(s.wpx,{icon:(0,i.jsx)(s.Two,{}),"aria-label":"Close error message",type:"text",onClick:d,"data-testid":"datamap-drawer-close"})})]})}),(0,i.jsx)(s.xuv,{id:"drawer-body",height:"calc(100% - 46px)",overflowY:"auto",padding:6,style:{scrollbarGutter:"stable"},children:x?(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(F,{system:x}),(0,i.jsx)(s.xvT,{size:"md",color:"gray.600",lineHeight:6,fontWeight:"semibold",mt:"10px",mb:2,children:"Data uses"}),(0,i.jsx)(s.xuv,{borderTop:"1px solid",borderColor:"gray.200",children:(0,i.jsx)(s.xuv,{pb:3,children:(0,i.jsx)(I,{system:x,...m})})}),(0,i.jsx)(s.xvT,{size:"md",color:"gray.600",lineHeight:6,fontWeight:"semibold",mt:"10px",mb:2,paddingBottom:2,children:"Data flow"}),(0,i.jsx)(r.q,{system:x})]}):null})]})})})}}}]);