ethyca-fides 2.68.1b4__py2.py3-none-any.whl → 2.69.0rc1__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 (213) hide show
  1. {ethyca_fides-2.68.1b4.dist-info → ethyca_fides-2.69.0rc1.dist-info}/METADATA +1 -1
  2. {ethyca_fides-2.68.1b4.dist-info → ethyca_fides-2.69.0rc1.dist-info}/RECORD +209 -209
  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 +2 -1
  6. fides/api/api/v1/endpoints/user_endpoints.py +28 -1
  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/enums/integration_feature.py +3 -0
  11. fides/api/service/privacy_request/request_runner_service.py +3 -0
  12. fides/config/security_settings.py +7 -3
  13. fides/ui-build/static/admin/404.html +1 -1
  14. fides/ui-build/static/admin/_next/static/chunks/{3729-ccf90cdaae158f39.js → 3729-79255d8b0d22922d.js} +1 -1
  15. fides/ui-build/static/admin/_next/static/chunks/4121-b04a7859ee8f0b59.js +1 -0
  16. fides/ui-build/static/admin/_next/static/chunks/pages/{_app-284cba7174fa1f16.js → _app-36bec04369a1a7c4.js} +3 -3
  17. fides/ui-build/static/admin/_next/static/chunks/pages/integrations/[id]-3db44d6839e8dbd9.js +1 -0
  18. fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/{[id]-b9d6886a3f157120.js → [id]-71b89f125d817d47.js} +1 -1
  19. fides/ui-build/static/admin/_next/static/chunks/pages/settings/{organization-c65acd2b7ab04753.js → organization-a01838a53677d69e.js} +1 -1
  20. fides/ui-build/static/admin/_next/static/chunks/{webpack-4502d4d67006b48f.js → webpack-aa7ff73977a15cb3.js} +1 -1
  21. fides/ui-build/static/admin/_next/static/css/{dbcf63488933a4d5.css → 98fab0b3e6aa43ed.css} +1 -1
  22. fides/ui-build/static/admin/_next/static/css/abf2e162b1cd0e61.css +1 -0
  23. fides/ui-build/static/admin/_next/static/zEliM9juvmcu4yond1mtG/_buildManifest.js +1 -0
  24. fides/ui-build/static/admin/add-systems/manual.html +1 -1
  25. fides/ui-build/static/admin/add-systems/multiple.html +1 -1
  26. fides/ui-build/static/admin/add-systems.html +1 -1
  27. fides/ui-build/static/admin/consent/configure/add-vendors.html +1 -1
  28. fides/ui-build/static/admin/consent/configure.html +1 -1
  29. fides/ui-build/static/admin/consent/privacy-experience/[id].html +1 -1
  30. fides/ui-build/static/admin/consent/privacy-experience/new.html +1 -1
  31. fides/ui-build/static/admin/consent/privacy-experience.html +1 -1
  32. fides/ui-build/static/admin/consent/privacy-notices/[id].html +1 -1
  33. fides/ui-build/static/admin/consent/privacy-notices/new.html +1 -1
  34. fides/ui-build/static/admin/consent/privacy-notices.html +1 -1
  35. fides/ui-build/static/admin/consent/properties.html +1 -1
  36. fides/ui-build/static/admin/consent/reporting.html +1 -1
  37. fides/ui-build/static/admin/consent.html +1 -1
  38. fides/ui-build/static/admin/data-catalog/[systemId]/projects/[projectUrn]/[resourceUrn].html +1 -1
  39. fides/ui-build/static/admin/data-catalog/[systemId]/projects/[projectUrn].html +1 -1
  40. fides/ui-build/static/admin/data-catalog/[systemId]/projects.html +1 -1
  41. fides/ui-build/static/admin/data-catalog/[systemId]/resources/[resourceUrn].html +1 -1
  42. fides/ui-build/static/admin/data-catalog/[systemId]/resources.html +1 -1
  43. fides/ui-build/static/admin/data-catalog.html +1 -1
  44. fides/ui-build/static/admin/data-discovery/action-center/[monitorId]/[systemId].html +1 -1
  45. fides/ui-build/static/admin/data-discovery/action-center/[monitorId].html +1 -1
  46. fides/ui-build/static/admin/data-discovery/action-center.html +1 -1
  47. fides/ui-build/static/admin/data-discovery/activity.html +1 -1
  48. fides/ui-build/static/admin/data-discovery/detection/[resourceUrn].html +1 -1
  49. fides/ui-build/static/admin/data-discovery/detection.html +1 -1
  50. fides/ui-build/static/admin/data-discovery/discovery/[resourceUrn].html +1 -1
  51. fides/ui-build/static/admin/data-discovery/discovery.html +1 -1
  52. fides/ui-build/static/admin/datamap.html +1 -1
  53. fides/ui-build/static/admin/dataset/[datasetId]/[collectionName]/[...subfieldNames].html +1 -1
  54. fides/ui-build/static/admin/dataset/[datasetId]/[collectionName].html +1 -1
  55. fides/ui-build/static/admin/dataset/[datasetId].html +1 -1
  56. fides/ui-build/static/admin/dataset/new.html +1 -1
  57. fides/ui-build/static/admin/dataset.html +1 -1
  58. fides/ui-build/static/admin/datastore-connection/[id].html +1 -1
  59. fides/ui-build/static/admin/datastore-connection/new.html +1 -1
  60. fides/ui-build/static/admin/datastore-connection.html +1 -1
  61. fides/ui-build/static/admin/index.html +1 -1
  62. fides/ui-build/static/admin/integrations/[id].html +1 -1
  63. fides/ui-build/static/admin/integrations.html +1 -1
  64. fides/ui-build/static/admin/lib/fides-ext-gpp.js +1 -1
  65. fides/ui-build/static/admin/lib/fides-headless.js +1 -1
  66. fides/ui-build/static/admin/lib/fides-preview.js +1 -1
  67. fides/ui-build/static/admin/lib/fides-tcf.js +2 -2
  68. fides/ui-build/static/admin/lib/fides.js +2 -2
  69. fides/ui-build/static/admin/login/[provider].html +1 -1
  70. fides/ui-build/static/admin/login.html +1 -1
  71. fides/ui-build/static/admin/messaging/[id].html +1 -1
  72. fides/ui-build/static/admin/messaging/add-template.html +1 -1
  73. fides/ui-build/static/admin/messaging.html +1 -1
  74. fides/ui-build/static/admin/poc/ant-components.html +1 -1
  75. fides/ui-build/static/admin/poc/form-experiments/AntForm.html +1 -1
  76. fides/ui-build/static/admin/poc/form-experiments/FormikAntFormItem.html +1 -1
  77. fides/ui-build/static/admin/poc/form-experiments/FormikControlled.html +1 -1
  78. fides/ui-build/static/admin/poc/form-experiments/FormikField.html +1 -1
  79. fides/ui-build/static/admin/poc/form-experiments/FormikSpreadField.html +1 -1
  80. fides/ui-build/static/admin/poc/forms.html +1 -1
  81. fides/ui-build/static/admin/poc/table-migration.html +1 -1
  82. fides/ui-build/static/admin/privacy-requests/[id].html +1 -1
  83. fides/ui-build/static/admin/privacy-requests/configure/messaging.html +1 -1
  84. fides/ui-build/static/admin/privacy-requests/configure/storage.html +1 -1
  85. fides/ui-build/static/admin/privacy-requests/configure.html +1 -1
  86. fides/ui-build/static/admin/privacy-requests.html +1 -1
  87. fides/ui-build/static/admin/properties/[id].html +1 -1
  88. fides/ui-build/static/admin/properties/add-property.html +1 -1
  89. fides/ui-build/static/admin/properties.html +1 -1
  90. fides/ui-build/static/admin/reporting/datamap.html +1 -1
  91. fides/ui-build/static/admin/settings/about/alpha.html +1 -1
  92. fides/ui-build/static/admin/settings/about.html +1 -1
  93. fides/ui-build/static/admin/settings/consent/[configuration_id]/[purpose_id].html +1 -1
  94. fides/ui-build/static/admin/settings/consent.html +1 -1
  95. fides/ui-build/static/admin/settings/custom-fields.html +1 -1
  96. fides/ui-build/static/admin/settings/domain-records.html +1 -1
  97. fides/ui-build/static/admin/settings/domains.html +1 -1
  98. fides/ui-build/static/admin/settings/email-templates.html +1 -1
  99. fides/ui-build/static/admin/settings/locations.html +1 -1
  100. fides/ui-build/static/admin/settings/organization.html +1 -1
  101. fides/ui-build/static/admin/settings/regulations.html +1 -1
  102. fides/ui-build/static/admin/systems/configure/[id]/test-datasets.html +1 -1
  103. fides/ui-build/static/admin/systems/configure/[id].html +1 -1
  104. fides/ui-build/static/admin/systems.html +1 -1
  105. fides/ui-build/static/admin/taxonomy.html +1 -1
  106. fides/ui-build/static/admin/user-management/new.html +1 -1
  107. fides/ui-build/static/admin/user-management/profile/[id].html +1 -1
  108. fides/ui-build/static/admin/user-management.html +1 -1
  109. fides/ui-build/static/admin/_next/static/LRCvfOqg1kP5kGnkD84G4/_buildManifest.js +0 -1
  110. fides/ui-build/static/admin/_next/static/chunks/4121-9a4ebceff9accb7f.js +0 -1
  111. fides/ui-build/static/admin/_next/static/chunks/pages/integrations/[id]-4b0bb4ccfb237d41.js +0 -1
  112. fides/ui-build/static/admin/_next/static/css/43d0c0fc207767eb.css +0 -1
  113. {ethyca_fides-2.68.1b4.dist-info → ethyca_fides-2.69.0rc1.dist-info}/WHEEL +0 -0
  114. {ethyca_fides-2.68.1b4.dist-info → ethyca_fides-2.69.0rc1.dist-info}/entry_points.txt +0 -0
  115. {ethyca_fides-2.68.1b4.dist-info → ethyca_fides-2.69.0rc1.dist-info}/licenses/LICENSE +0 -0
  116. {ethyca_fides-2.68.1b4.dist-info → ethyca_fides-2.69.0rc1.dist-info}/top_level.txt +0 -0
  117. /fides/ui-build/static/admin/_next/static/chunks/{1099-b973dfdfc5c3de90.js → 1099-db533dd22b80bca6.js} +0 -0
  118. /fides/ui-build/static/admin/_next/static/chunks/{1345-b60d1f3442379c73.js → 1345-6986414ab6ad3389.js} +0 -0
  119. /fides/ui-build/static/admin/_next/static/chunks/{1817-74692de5d760a664.js → 1817-fcb2fd28034d5070.js} +0 -0
  120. /fides/ui-build/static/admin/_next/static/chunks/{2921-2d9261e8e2e127c0.js → 2921-8a63ec72fa8e1bc0.js} +0 -0
  121. /fides/ui-build/static/admin/_next/static/chunks/{3620-ebd89f91b82661e8.js → 3620-1fba74849114e70f.js} +0 -0
  122. /fides/ui-build/static/admin/_next/static/chunks/{3847-2759bf1f47a1d29e.js → 3847-a868f83c065f54fb.js} +0 -0
  123. /fides/ui-build/static/admin/_next/static/chunks/{3855-4174a4d4c205d6e8.js → 3855-3154d56888ac46ed.js} +0 -0
  124. /fides/ui-build/static/admin/_next/static/chunks/{3872-660aba76572c811b.js → 3872-25eec062abd0f847.js} +0 -0
  125. /fides/ui-build/static/admin/_next/static/chunks/{3923-c6cdc2e5278ae9a7.js → 3923-3be9b867f33e524c.js} +0 -0
  126. /fides/ui-build/static/admin/_next/static/chunks/{401-8bc2c6c84172c096.js → 401-029e2ff644cae40c.js} +0 -0
  127. /fides/ui-build/static/admin/_next/static/chunks/{4608-4d31340b0d0157c1.js → 4608-99e453c666a7b89a.js} +0 -0
  128. /fides/ui-build/static/admin/_next/static/chunks/{4786-aaef673b30c19e2e.js → 4786-289c505d7d835feb.js} +0 -0
  129. /fides/ui-build/static/admin/_next/static/chunks/{4808-a654c7f7a1ca62c8.js → 4808-5b799757d4564807.js} +0 -0
  130. /fides/ui-build/static/admin/_next/static/chunks/{4844-cd7e1d0c7bb94094.js → 4844-a1784e2823ccd0ee.js} +0 -0
  131. /fides/ui-build/static/admin/_next/static/chunks/{5258-bc4a25d43e4aa07d.js → 5258-45ec38e6c3780f24.js} +0 -0
  132. /fides/ui-build/static/admin/_next/static/chunks/{5487-37c78c4799ba5223.js → 5487-aad0e8a240a1979b.js} +0 -0
  133. /fides/ui-build/static/admin/_next/static/chunks/{549-2213dc1c34143cda.js → 549-81279a1a816487a7.js} +0 -0
  134. /fides/ui-build/static/admin/_next/static/chunks/{6084-55cc66e7c94f0686.js → 6084-3379ca3c1fc77aa9.js} +0 -0
  135. /fides/ui-build/static/admin/_next/static/chunks/{6853-313ce974d33432fb.js → 6853-04b15a7b02b1fc19.js} +0 -0
  136. /fides/ui-build/static/admin/_next/static/chunks/{6954-021bd06d0ab59c3c.js → 6954-0f5d6c1757013eb7.js} +0 -0
  137. /fides/ui-build/static/admin/_next/static/chunks/{7476-2fc286c2a9125eb8.js → 7476-2227e21f574bee70.js} +0 -0
  138. /fides/ui-build/static/admin/_next/static/chunks/{7630-b9a41262a69edf5e.js → 7630-267de03b93bbae8d.js} +0 -0
  139. /fides/ui-build/static/admin/_next/static/chunks/{768-034e121688a3bbdd.js → 768-24269f30db223720.js} +0 -0
  140. /fides/ui-build/static/admin/_next/static/chunks/{787-8df7118742e84908.js → 787-0aa4d9802c976f92.js} +0 -0
  141. /fides/ui-build/static/admin/_next/static/chunks/{79-d2ace89108ead8ae.js → 79-0102f2711b8455cd.js} +0 -0
  142. /fides/ui-build/static/admin/_next/static/chunks/{796-2de6dac5f311d54a.js → 796-53f0ea567d1da2b9.js} +0 -0
  143. /fides/ui-build/static/admin/_next/static/chunks/{8002-cfdc6574bd841892.js → 8002-98ecd56535cdefa3.js} +0 -0
  144. /fides/ui-build/static/admin/_next/static/chunks/{9046-c44e41da49338c6c.js → 9046-a349c22448593f94.js} +0 -0
  145. /fides/ui-build/static/admin/_next/static/chunks/{9826-d9addbd5ac990fa4.js → 9826-f4755a75d00c1c8c.js} +0 -0
  146. /fides/ui-build/static/admin/_next/static/chunks/{9951-6ee5c0a23951a07f.js → 9951-07989276d153c848.js} +0 -0
  147. /fides/ui-build/static/admin/_next/static/chunks/pages/{404-9644eb282f2dcd71.js → 404-fde1f56225d1ef4f.js} +0 -0
  148. /fides/ui-build/static/admin/_next/static/chunks/pages/add-systems/{manual-42b7fd34712f49bd.js → manual-aff671eda846719f.js} +0 -0
  149. /fides/ui-build/static/admin/_next/static/chunks/pages/add-systems/{multiple-4f164eab0960bbe0.js → multiple-04894ddffc2a66fc.js} +0 -0
  150. /fides/ui-build/static/admin/_next/static/chunks/pages/{add-systems-985d3c9179e69d7f.js → add-systems-e98c4154535bf37d.js} +0 -0
  151. /fides/ui-build/static/admin/_next/static/chunks/pages/consent/configure/{add-vendors-61090926e5f98a5d.js → add-vendors-b2f80cdb75183bfa.js} +0 -0
  152. /fides/ui-build/static/admin/_next/static/chunks/pages/consent/{configure-17ffe691b91cee2e.js → configure-207cabf1b5c453fc.js} +0 -0
  153. /fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-experience/{[id]-95c13bca5c1e575e.js → [id]-b3db5610ae7e94fb.js} +0 -0
  154. /fides/ui-build/static/admin/_next/static/chunks/pages/consent/{privacy-experience-609399510a60beb9.js → privacy-experience-3009481bdd479fd7.js} +0 -0
  155. /fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-notices/{[id]-d7d8f228ac74b26e.js → [id]-72e3cd6740c5c5de.js} +0 -0
  156. /fides/ui-build/static/admin/_next/static/chunks/pages/consent/privacy-notices/{new-821c0f82d5a2b7d4.js → new-2aa4d13fb26b59ca.js} +0 -0
  157. /fides/ui-build/static/admin/_next/static/chunks/pages/consent/{privacy-notices-8365782543cf6ab9.js → privacy-notices-6b0885a8c871804f.js} +0 -0
  158. /fides/ui-build/static/admin/_next/static/chunks/pages/consent/{properties-40a7aa65f4d13cf9.js → properties-20bc3cf67727dfd3.js} +0 -0
  159. /fides/ui-build/static/admin/_next/static/chunks/pages/consent/{reporting-e4bacfc5c2ed2324.js → reporting-77b491108663a2de.js} +0 -0
  160. /fides/ui-build/static/admin/_next/static/chunks/pages/{consent-70c5c6aa5389d99f.js → consent-b3c8efbd960f4e34.js} +0 -0
  161. /fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/projects/{[projectUrn]-3207f62e5012611b.js → [projectUrn]-fe5f6fb33e34baa7.js} +0 -0
  162. /fides/ui-build/static/admin/_next/static/chunks/pages/data-catalog/[systemId]/{projects-7b42dee0fb696658.js → projects-3584c90cf3670146.js} +0 -0
  163. /fides/ui-build/static/admin/_next/static/chunks/pages/{data-catalog-31a45ea2ca2a7f04.js → data-catalog-a6cecf48e4e27645.js} +0 -0
  164. /fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/[monitorId]/{[systemId]-6172c2eb539319fd.js → [systemId]-844abdb5ea7d78af.js} +0 -0
  165. /fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/action-center/{[monitorId]-945d354ff057fb03.js → [monitorId]-215d6e2fefc9a5e1.js} +0 -0
  166. /fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/{action-center-d9795e00f39cf4e9.js → action-center-7721508cc2a9ab3a.js} +0 -0
  167. /fides/ui-build/static/admin/_next/static/chunks/pages/data-discovery/{activity-657833fd8528280f.js → activity-6169e49c3787a9bf.js} +0 -0
  168. /fides/ui-build/static/admin/_next/static/chunks/pages/{datamap-3a4b89fb21d14753.js → datamap-e17dd4ffcaa4836d.js} +0 -0
  169. /fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]/[collectionName]/{[...subfieldNames]-cb8d303f56091bd5.js → [...subfieldNames]-4af946dc8c6c967f.js} +0 -0
  170. /fides/ui-build/static/admin/_next/static/chunks/pages/dataset/[datasetId]/{[collectionName]-401c8be76d9daec7.js → [collectionName]-a65a8ea3872800e7.js} +0 -0
  171. /fides/ui-build/static/admin/_next/static/chunks/pages/dataset/{[datasetId]-97e2d375b21cfe43.js → [datasetId]-ccc844caef652a7e.js} +0 -0
  172. /fides/ui-build/static/admin/_next/static/chunks/pages/dataset/{new-40ef544ca1f2c9b9.js → new-3b65c6e9af65ea2e.js} +0 -0
  173. /fides/ui-build/static/admin/_next/static/chunks/pages/{dataset-e3c763f8e71f8e24.js → dataset-0566189a0236078d.js} +0 -0
  174. /fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection/{[id]-152e5d15705ec072.js → [id]-38a7b8826e0abb01.js} +0 -0
  175. /fides/ui-build/static/admin/_next/static/chunks/pages/datastore-connection/{new-651b10cae0e99a05.js → new-c8d2599814eefd35.js} +0 -0
  176. /fides/ui-build/static/admin/_next/static/chunks/pages/{datastore-connection-03c54bc9fb18d2b0.js → datastore-connection-00ba79f6b47bd161.js} +0 -0
  177. /fides/ui-build/static/admin/_next/static/chunks/pages/{index-3d19b9ffa15a928a.js → index-053db342725dc127.js} +0 -0
  178. /fides/ui-build/static/admin/_next/static/chunks/pages/{integrations-78d4e0c14654148b.js → integrations-5f34de3c24e67368.js} +0 -0
  179. /fides/ui-build/static/admin/_next/static/chunks/pages/messaging/{[id]-72cb360a6d14e701.js → [id]-707b72e959233112.js} +0 -0
  180. /fides/ui-build/static/admin/_next/static/chunks/pages/messaging/{add-template-0ed67cf774d5cbf5.js → add-template-c68b413f3c9cf318.js} +0 -0
  181. /fides/ui-build/static/admin/_next/static/chunks/pages/{messaging-b06a2204e2a5b667.js → messaging-d95588f3ef137030.js} +0 -0
  182. /fides/ui-build/static/admin/_next/static/chunks/pages/poc/{ant-components-7050899b3f792129.js → ant-components-36cac6f4379587ea.js} +0 -0
  183. /fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/{AntForm-7c3466f4d5797e55.js → AntForm-d44606c0cf203b47.js} +0 -0
  184. /fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/{FormikAntFormItem-8de252f25871bab9.js → FormikAntFormItem-341b571fd8da4142.js} +0 -0
  185. /fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/{FormikControlled-cd6de0da47f980cf.js → FormikControlled-2e99b5eb12982aeb.js} +0 -0
  186. /fides/ui-build/static/admin/_next/static/chunks/pages/poc/form-experiments/{FormikField-7c238a881fe30e28.js → FormikField-c7d62113680196dd.js} +0 -0
  187. /fides/ui-build/static/admin/_next/static/chunks/pages/poc/{forms-d4f3e8f67f76f146.js → forms-89a24591c3d9e7a8.js} +0 -0
  188. /fides/ui-build/static/admin/_next/static/chunks/pages/poc/{table-migration-c9220e20c1d93758.js → table-migration-c54bcfb6b0de8a71.js} +0 -0
  189. /fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure/{messaging-9c1fd7867b2d80d7.js → messaging-4c8e1a7e407d3c7f.js} +0 -0
  190. /fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/configure/{storage-fc959ed21dbce38c.js → storage-faf42d1a9cd6a861.js} +0 -0
  191. /fides/ui-build/static/admin/_next/static/chunks/pages/privacy-requests/{configure-44a4a638dcb2722a.js → configure-3823ee301161be4f.js} +0 -0
  192. /fides/ui-build/static/admin/_next/static/chunks/pages/{privacy-requests-1433c9f9501a884f.js → privacy-requests-c9c1c02d7e68c4f8.js} +0 -0
  193. /fides/ui-build/static/admin/_next/static/chunks/pages/properties/{[id]-16e0b42cb342aa5f.js → [id]-8973618b9ba28a50.js} +0 -0
  194. /fides/ui-build/static/admin/_next/static/chunks/pages/properties/{add-property-ebd114a86b809391.js → add-property-b449da44de56fd3f.js} +0 -0
  195. /fides/ui-build/static/admin/_next/static/chunks/pages/{properties-901be5fa4a48f48c.js → properties-5bb059b7057b5583.js} +0 -0
  196. /fides/ui-build/static/admin/_next/static/chunks/pages/reporting/{datamap-da9ced1e20681154.js → datamap-6b26740aeb247bc8.js} +0 -0
  197. /fides/ui-build/static/admin/_next/static/chunks/pages/settings/about/{alpha-0174554c0ac5958f.js → alpha-98c1492dca52f4f8.js} +0 -0
  198. /fides/ui-build/static/admin/_next/static/chunks/pages/settings/{about-6f45ddbf675e66d2.js → about-d176ec152b70f82d.js} +0 -0
  199. /fides/ui-build/static/admin/_next/static/chunks/pages/settings/consent/[configuration_id]/{[purpose_id]-275c49e6089c5c9f.js → [purpose_id]-ea5077aca3d01dfb.js} +0 -0
  200. /fides/ui-build/static/admin/_next/static/chunks/pages/settings/{consent-1a8d05e19f06d857.js → consent-68b812269e38c8c3.js} +0 -0
  201. /fides/ui-build/static/admin/_next/static/chunks/pages/settings/{custom-fields-49d86b9ca4523ca6.js → custom-fields-79cdee37ceb8665f.js} +0 -0
  202. /fides/ui-build/static/admin/_next/static/chunks/pages/settings/{domain-records-f71b4b95d91db926.js → domain-records-056f36a8a0509006.js} +0 -0
  203. /fides/ui-build/static/admin/_next/static/chunks/pages/settings/{domains-a595cad18cf04673.js → domains-fea15607939cab70.js} +0 -0
  204. /fides/ui-build/static/admin/_next/static/chunks/pages/settings/{email-templates-6f7f9751689b042c.js → email-templates-cce73ddc0012b089.js} +0 -0
  205. /fides/ui-build/static/admin/_next/static/chunks/pages/settings/{locations-e2c88d7f779fe604.js → locations-8b0a408ed7e3ff28.js} +0 -0
  206. /fides/ui-build/static/admin/_next/static/chunks/pages/settings/{regulations-c1c699eeb40a9dc0.js → regulations-43e9cafaeb869069.js} +0 -0
  207. /fides/ui-build/static/admin/_next/static/chunks/pages/systems/configure/[id]/{test-datasets-a274e2191b87e315.js → test-datasets-ea1e2483ddf6af6c.js} +0 -0
  208. /fides/ui-build/static/admin/_next/static/chunks/pages/systems/configure/{[id]-4a48b4f996a64957.js → [id]-7856e694b009ded3.js} +0 -0
  209. /fides/ui-build/static/admin/_next/static/chunks/pages/{systems-30debc87925634d9.js → systems-2c6dca19bf0a4f0c.js} +0 -0
  210. /fides/ui-build/static/admin/_next/static/chunks/pages/{taxonomy-ca625b1296a029f0.js → taxonomy-ede8ddce10d7d055.js} +0 -0
  211. /fides/ui-build/static/admin/_next/static/chunks/pages/user-management/profile/{[id]-7a3180b235eb8846.js → [id]-af9bf43612c9676c.js} +0 -0
  212. /fides/ui-build/static/admin/_next/static/chunks/pages/{user-management-5e2d0acf575252ca.js → user-management-3b7fea8781dc18b5.js} +0 -0
  213. /fides/ui-build/static/admin/_next/static/{LRCvfOqg1kP5kGnkD84G4 → zEliM9juvmcu4yond1mtG}/_ssgManifest.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-27T12:07:27-0600",
11
+ "date": "2025-08-28T18:28:20-0700",
12
12
  "dirty": false,
13
13
  "error": null,
14
- "full-revisionid": "062904c4ee33fadc4f937ccfd3fd2f2e2a2cbae8",
15
- "version": "2.68.1b4"
14
+ "full-revisionid": "af95d4c10df1e7d85a73f90bdd397b8b92c9096e",
15
+ "version": "2.69.0rc1"
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:
@@ -86,7 +86,7 @@ from fides.api.oauth.utils import (
86
86
  from fides.api.schemas.api import ResponseWithMessage
87
87
  from fides.api.schemas.dataset import CollectionAddressResponse, DryRunDatasetResponse
88
88
  from fides.api.schemas.external_https import PrivacyRequestResumeFormat
89
- from fides.api.schemas.policy import ActionType
89
+ from fides.api.schemas.policy import ActionType, CurrentStep
90
90
  from fides.api.schemas.privacy_request import (
91
91
  BulkPostPrivacyRequests,
92
92
  BulkReviewResponse,
@@ -1930,6 +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.finalization.value,
1933
1934
  )
1934
1935
 
1935
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,
@@ -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
 
@@ -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).
@@ -21,3 +21,6 @@ class IntegrationFeature(str, Enum):
21
21
 
22
22
  # Enables Data Subject Request automation for SAAS integrations
23
23
  DSR_AUTOMATION = "DSR_AUTOMATION"
24
+
25
+ # Enables conditions configuration for manual task creation - shows "Conditions" tab
26
+ CONDITIONS = "CONDITIONS"
@@ -614,6 +614,9 @@ def run_privacy_request(
614
614
  # The access, consent, and erasure runners for DSR 3.0 throw this exception after its
615
615
  # Request Tasks have been built. The Privacy Request will be requeued from
616
616
  # the appropriate checkpoint when all the Request Tasks have run.
617
+ logger.info(
618
+ "Privacy Request exited awaiting sub task processing (Request Tasks)"
619
+ )
617
620
  return
618
621
 
619
622
  except ValidationError as exc:
@@ -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/43d0c0fc207767eb.css" as="style"/><link rel="stylesheet" href="/_next/static/css/43d0c0fc207767eb.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-4502d4d67006b48f.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-284cba7174fa1f16.js" defer=""></script><script src="/_next/static/chunks/pages/404-9644eb282f2dcd71.js" defer=""></script><script src="/_next/static/LRCvfOqg1kP5kGnkD84G4/_buildManifest.js" defer=""></script><script src="/_next/static/LRCvfOqg1kP5kGnkD84G4/_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":"LRCvfOqg1kP5kGnkD84G4","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-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/zEliM9juvmcu4yond1mtG/_buildManifest.js" defer=""></script><script src="/_next/static/zEliM9juvmcu4yond1mtG/_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":"zEliM9juvmcu4yond1mtG","nextExport":true,"autoExport":true,"isFallback":false,"scriptLoader":[]}</script></body></html>