@stytch/react 20.0.0-next.0 → 20.0.0-next.1
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.
- package/CHANGELOG.md +6 -0
- package/dist/cjs/{StytchSSRProxy-CUOvjF03.js → StytchSSRProxy-Bz6LNYdq.js} +186 -1
- package/dist/cjs/StytchSSRProxy-Bz6LNYdq.js.map +1 -0
- package/dist/cjs/adminPortal/index.cjs +102 -26
- package/dist/cjs/adminPortal/index.cjs.map +1 -1
- package/dist/cjs/b2b/index.cjs +176 -138
- package/dist/cjs/b2b/index.cjs.map +1 -1
- package/dist/cjs/b2b/index.headless.cjs +24 -24
- package/dist/cjs/b2b/index.headless.cjs.map +1 -1
- package/dist/cjs/{idpHelpers-eUP8j58U.js → idpHelpers-Bj_7pbfW.js} +7 -191
- package/dist/cjs/idpHelpers-Bj_7pbfW.js.map +1 -0
- package/dist/cjs/{index-DfiRrtK8.js → index-Ni_dyEsz.js} +3 -3
- package/dist/cjs/{index-DfiRrtK8.js.map → index-Ni_dyEsz.js.map} +1 -1
- package/dist/cjs/index.cjs +207 -196
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/cjs/index.headless.cjs +32 -32
- package/dist/cjs/index.headless.cjs.map +1 -1
- package/dist/cjs/{passwordManagerDisableAutofillProps-C0akDAKd.js → passwordManagerDisableAutofillProps-DV31RTL_.js} +2 -2
- package/dist/cjs/{passwordManagerDisableAutofillProps-C0akDAKd.js.map → passwordManagerDisableAutofillProps-DV31RTL_.js.map} +1 -1
- package/dist/cjs/{shadcn-Bbv2Hk3P.js → shadcn-B8TEzQMT.js} +99 -81
- package/dist/cjs/shadcn-B8TEzQMT.js.map +1 -0
- package/dist/cjs-dev/{StytchSSRProxy-D0B5PuT0.js → StytchSSRProxy-CxXsyme4.js} +186 -1
- package/dist/cjs-dev/StytchSSRProxy-CxXsyme4.js.map +1 -0
- package/dist/cjs-dev/adminPortal/index.cjs +102 -26
- package/dist/cjs-dev/adminPortal/index.cjs.map +1 -1
- package/dist/cjs-dev/b2b/index.cjs +176 -138
- package/dist/cjs-dev/b2b/index.cjs.map +1 -1
- package/dist/cjs-dev/b2b/index.headless.cjs +24 -24
- package/dist/cjs-dev/b2b/index.headless.cjs.map +1 -1
- package/dist/cjs-dev/{idpHelpers-DOOVv6dT.js → idpHelpers-Cf8Qq1B4.js} +7 -191
- package/dist/cjs-dev/idpHelpers-Cf8Qq1B4.js.map +1 -0
- package/dist/cjs-dev/{index-paeFcHjf.js → index-DdK3Jt4u.js} +3 -3
- package/dist/cjs-dev/{index-paeFcHjf.js.map → index-DdK3Jt4u.js.map} +1 -1
- package/dist/cjs-dev/index.cjs +207 -196
- package/dist/cjs-dev/index.cjs.map +1 -1
- package/dist/cjs-dev/index.headless.cjs +32 -32
- package/dist/cjs-dev/index.headless.cjs.map +1 -1
- package/dist/cjs-dev/{passwordManagerDisableAutofillProps-CnLBAXyr.js → passwordManagerDisableAutofillProps-D70WyvIu.js} +2 -2
- package/dist/cjs-dev/{passwordManagerDisableAutofillProps-CnLBAXyr.js.map → passwordManagerDisableAutofillProps-D70WyvIu.js.map} +1 -1
- package/dist/cjs-dev/{shadcn-CdbmlhdF.js → shadcn-C4w3DtKK.js} +99 -81
- package/dist/cjs-dev/shadcn-C4w3DtKK.js.map +1 -0
- package/dist/esm/_virtual/index.mjs +4 -4
- package/dist/esm/_virtual/index3.mjs +3 -5
- package/dist/esm/_virtual/index3.mjs.map +1 -1
- package/dist/esm/_virtual/index4.mjs +5 -3
- package/dist/esm/_virtual/index4.mjs.map +1 -1
- package/dist/esm/_virtual/index6.mjs +2 -2
- package/dist/esm/_virtual/index7.mjs +2 -2
- package/dist/esm/adminPortal/index.mjs +4 -1
- package/dist/esm/adminPortal/index.mjs.map +1 -1
- package/dist/esm/b2b/index.mjs.map +1 -1
- package/dist/esm/node_modules/lodash.merge/index.mjs +1 -1
- package/dist/esm/node_modules/use-sync-external-store/shim/index.mjs +1 -1
- package/dist/esm/packages/core/src/rpc/FrameClient.mjs +1 -0
- package/dist/esm/packages/core/src/rpc/FrameClient.mjs.map +1 -1
- package/dist/esm/packages/web/messages/b2b/en.json.mjs +10 -3
- package/dist/esm/packages/web/messages/b2b/en.json.mjs.map +1 -1
- package/dist/esm/packages/web/messages/en.json.mjs +10 -3
- package/dist/esm/packages/web/messages/en.json.mjs.map +1 -1
- package/dist/esm/packages/web/src/adminPortal/memberManagement/AccessSection.mjs +6 -3
- package/dist/esm/packages/web/src/adminPortal/memberManagement/AccessSection.mjs.map +1 -1
- package/dist/esm/packages/web/src/adminPortal/memberManagement/InviteModal.mjs +4 -1
- package/dist/esm/packages/web/src/adminPortal/memberManagement/InviteModal.mjs.map +1 -1
- package/dist/esm/packages/web/src/adminPortal/memberManagement/MemberListScreen.mjs +3 -1
- package/dist/esm/packages/web/src/adminPortal/memberManagement/MemberListScreen.mjs.map +1 -1
- package/dist/esm/packages/web/src/adminPortal/scim/SCIMConnectionRoleAssignmentsSection.mjs +6 -2
- package/dist/esm/packages/web/src/adminPortal/scim/SCIMConnectionRoleAssignmentsSection.mjs.map +1 -1
- package/dist/esm/packages/web/src/adminPortal/settings/OrgSettingsRoleAssignmentsSection.mjs +7 -3
- package/dist/esm/packages/web/src/adminPortal/settings/OrgSettingsRoleAssignmentsSection.mjs.map +1 -1
- package/dist/esm/packages/web/src/adminPortal/sso/RoleAssignmentsSection.mjs +5 -1
- package/dist/esm/packages/web/src/adminPortal/sso/RoleAssignmentsSection.mjs.map +1 -1
- package/dist/esm/packages/web/src/adminPortal/utils/theme.mjs +1 -1
- package/dist/esm/packages/web/src/adminPortal/utils/useRbac.mjs.map +1 -1
- package/dist/esm/packages/web/src/adminPortal/utils/useRoleAutocomplete.mjs +3 -3
- package/dist/esm/packages/web/src/adminPortal/utils/useRoleAutocomplete.mjs.map +1 -1
- package/dist/esm/packages/web/src/adminPortal/utils/useRoleDisplayInfo.mjs +2 -2
- package/dist/esm/packages/web/src/adminPortal/utils/useRoleDisplayInfo.mjs.map +1 -1
- package/dist/esm/packages/web/src/adminPortal/utils/useRoles.mjs +7 -2
- package/dist/esm/packages/web/src/adminPortal/utils/useRoles.mjs.map +1 -1
- package/dist/esm/packages/web/src/ui/b2b/components/OrganizationRow.mjs +1 -1
- package/dist/esm/packages/web/src/ui/b2b/screens/EmailConfirmation.mjs +27 -3
- package/dist/esm/packages/web/src/ui/b2b/screens/EmailConfirmation.mjs.map +1 -1
- package/dist/esm/packages/web/src/ui/b2b/screens/RecoveryCodeEntryScreen.mjs +2 -0
- package/dist/esm/packages/web/src/ui/b2b/screens/RecoveryCodeEntryScreen.mjs.map +1 -1
- package/dist/esm/packages/web/src/ui/b2b/screens/SMSOTPEntryScreen.mjs +2 -0
- package/dist/esm/packages/web/src/ui/b2b/screens/SMSOTPEntryScreen.mjs.map +1 -1
- package/dist/esm/packages/web/src/ui/b2b/utils.mjs +8 -1
- package/dist/esm/packages/web/src/ui/b2b/utils.mjs.map +1 -1
- package/dist/esm/packages/web/src/ui/b2c/components/GoogleOneTap.mjs +1 -1
- package/dist/esm/packages/web/src/ui/b2c/screens/Main/LoginForm/index.mjs +1 -1
- package/dist/esm/packages/web/src/ui/b2c/screens/Passkey/EditableRow.mjs +1 -1
- package/dist/esm/packages/web/src/ui/b2c/screens/Secondary/EmailConfirmation.mjs +10 -4
- package/dist/esm/packages/web/src/ui/b2c/screens/Secondary/EmailConfirmation.mjs.map +1 -1
- package/dist/esm/packages/web/src/ui/b2c/screens/Secondary/PasswordCreateAuthenticate.mjs +2 -1
- package/dist/esm/packages/web/src/ui/b2c/screens/Secondary/PasswordCreateAuthenticate.mjs.map +1 -1
- package/dist/esm/packages/web/src/ui/b2c/screens/Secondary/PasswordlessAuthenticate.mjs +5 -68
- package/dist/esm/packages/web/src/ui/b2c/screens/Secondary/PasswordlessAuthenticate.mjs.map +1 -1
- package/dist/esm/packages/web/src/ui/b2c/screens/Secondary/usePasswordlessAuthenticate.mjs +71 -0
- package/dist/esm/packages/web/src/ui/b2c/screens/Secondary/usePasswordlessAuthenticate.mjs.map +1 -0
- package/dist/esm/packages/web/src/ui/components/atoms/AnimatedContainer.mjs +1 -1
- package/dist/esm/packages/web/src/ui/components/atoms/Button.mjs +1 -1
- package/dist/esm/packages/web/src/ui/components/atoms/CircularProgress.mjs +4 -5
- package/dist/esm/packages/web/src/ui/components/atoms/CircularProgress.mjs.map +1 -1
- package/dist/esm/packages/web/src/ui/components/atoms/CodeContainer.mjs +1 -1
- package/dist/esm/packages/web/src/ui/components/atoms/Column.mjs +1 -1
- package/dist/esm/packages/web/src/ui/components/atoms/Typography.mjs +1 -1
- package/dist/esm/packages/web/src/ui/components/atoms/VerticalTransition.mjs +1 -1
- package/dist/esm/packages/web/src/ui/components/atoms/VisuallyHidden.mjs +1 -1
- package/dist/esm/packages/web/src/ui/components/atoms/Watermark.mjs +14 -23
- package/dist/esm/packages/web/src/ui/components/atoms/Watermark.mjs.map +1 -1
- package/dist/esm/packages/web/src/ui/components/atoms/Watermark.module.css.mjs +2 -2
- package/dist/esm/packages/web/src/ui/components/molecules/Badge.mjs +1 -1
- package/dist/esm/packages/web/src/ui/components/molecules/EmailInput.mjs +1 -1
- package/dist/esm/packages/web/src/ui/components/molecules/EmailInput.mjs.map +1 -1
- package/dist/esm/packages/web/src/ui/components/molecules/ErrorText.mjs +12 -4
- package/dist/esm/packages/web/src/ui/components/molecules/ErrorText.mjs.map +1 -1
- package/dist/esm/packages/web/src/ui/components/molecules/Input.mjs +3 -2
- package/dist/esm/packages/web/src/ui/components/molecules/Input.mjs.map +1 -1
- package/dist/esm/packages/web/src/ui/components/molecules/MainContainer.mjs +6 -6
- package/dist/esm/packages/web/src/ui/components/molecules/MainContainer.mjs.map +1 -1
- package/dist/esm/packages/web/src/ui/components/molecules/MainContainer.module.css.mjs +2 -2
- package/dist/esm/packages/web/src/ui/components/molecules/OtpInput.mjs +1 -1
- package/dist/esm/packages/web/src/ui/components/molecules/PasswordStrengthCheck.mjs +1 -1
- package/dist/esm/packages/web/src/ui/components/molecules/PhoneInput.mjs +3 -4
- package/dist/esm/packages/web/src/ui/components/molecules/PhoneInput.mjs.map +1 -1
- package/dist/esm/packages/web/src/ui/components/organisms/EmailConfirmationView.mjs +26 -3
- package/dist/esm/packages/web/src/ui/components/organisms/EmailConfirmationView.mjs.map +1 -1
- package/dist/esm/packages/web/src/ui/components/organisms/IDPConsentManifest.mjs +1 -1
- package/dist/esm/packages/web/src/ui/components/organisms/OneTapError.mjs +1 -1
- package/dist/esm/packages/web/src/ui/components/organisms/ResendOTPButton.mjs +2 -2
- package/dist/esm/packages/web/src/ui/components/organisms/ResendOTPButton.mjs.map +1 -1
- package/dist/esm/packages/web/src/ui/react/adminPortal/AdminPortalMemberManagement.mjs +0 -42
- package/dist/esm/packages/web/src/ui/react/adminPortal/AdminPortalMemberManagement.mjs.map +1 -1
- package/dist/esm/packages/web/src/ui/react/adminPortal/AdminPortalOrgSettings.mjs +0 -40
- package/dist/esm/packages/web/src/ui/react/adminPortal/AdminPortalOrgSettings.mjs.map +1 -1
- package/dist/esm/packages/web/src/ui/react/adminPortal/AdminPortalSCIM.mjs +0 -43
- package/dist/esm/packages/web/src/ui/react/adminPortal/AdminPortalSCIM.mjs.map +1 -1
- package/dist/esm/packages/web/src/ui/react/adminPortal/AdminPortalSSO.mjs +0 -36
- package/dist/esm/packages/web/src/ui/react/adminPortal/AdminPortalSSO.mjs.map +1 -1
- package/dist/esm/packages/web/src/ui/react/b2b/Stytch.mjs.map +1 -1
- package/dist/esm/packages/web/src/ui/react/bindings/createB2BComponent.mjs.map +1 -1
- package/dist/esm/packages/web/src/utils/crypto.mjs +1 -1
- package/dist/esm-dev/_virtual/index.mjs +4 -4
- package/dist/esm-dev/_virtual/index3.mjs +3 -5
- package/dist/esm-dev/_virtual/index3.mjs.map +1 -1
- package/dist/esm-dev/_virtual/index4.mjs +5 -3
- package/dist/esm-dev/_virtual/index4.mjs.map +1 -1
- package/dist/esm-dev/_virtual/index6.mjs +2 -2
- package/dist/esm-dev/_virtual/index7.mjs +2 -2
- package/dist/esm-dev/adminPortal/index.mjs +4 -1
- package/dist/esm-dev/adminPortal/index.mjs.map +1 -1
- package/dist/esm-dev/b2b/index.mjs.map +1 -1
- package/dist/esm-dev/node_modules/lodash.merge/index.mjs +1 -1
- package/dist/esm-dev/node_modules/use-sync-external-store/shim/index.mjs +1 -1
- package/dist/esm-dev/packages/core/src/rpc/FrameClient.mjs +1 -0
- package/dist/esm-dev/packages/core/src/rpc/FrameClient.mjs.map +1 -1
- package/dist/esm-dev/packages/web/messages/b2b/en.json.mjs +10 -3
- package/dist/esm-dev/packages/web/messages/b2b/en.json.mjs.map +1 -1
- package/dist/esm-dev/packages/web/messages/en.json.mjs +10 -3
- package/dist/esm-dev/packages/web/messages/en.json.mjs.map +1 -1
- package/dist/esm-dev/packages/web/src/adminPortal/memberManagement/AccessSection.mjs +6 -3
- package/dist/esm-dev/packages/web/src/adminPortal/memberManagement/AccessSection.mjs.map +1 -1
- package/dist/esm-dev/packages/web/src/adminPortal/memberManagement/InviteModal.mjs +4 -1
- package/dist/esm-dev/packages/web/src/adminPortal/memberManagement/InviteModal.mjs.map +1 -1
- package/dist/esm-dev/packages/web/src/adminPortal/memberManagement/MemberListScreen.mjs +3 -1
- package/dist/esm-dev/packages/web/src/adminPortal/memberManagement/MemberListScreen.mjs.map +1 -1
- package/dist/esm-dev/packages/web/src/adminPortal/scim/SCIMConnectionRoleAssignmentsSection.mjs +6 -2
- package/dist/esm-dev/packages/web/src/adminPortal/scim/SCIMConnectionRoleAssignmentsSection.mjs.map +1 -1
- package/dist/esm-dev/packages/web/src/adminPortal/settings/OrgSettingsRoleAssignmentsSection.mjs +7 -3
- package/dist/esm-dev/packages/web/src/adminPortal/settings/OrgSettingsRoleAssignmentsSection.mjs.map +1 -1
- package/dist/esm-dev/packages/web/src/adminPortal/sso/RoleAssignmentsSection.mjs +5 -1
- package/dist/esm-dev/packages/web/src/adminPortal/sso/RoleAssignmentsSection.mjs.map +1 -1
- package/dist/esm-dev/packages/web/src/adminPortal/utils/theme.mjs +1 -1
- package/dist/esm-dev/packages/web/src/adminPortal/utils/useRbac.mjs.map +1 -1
- package/dist/esm-dev/packages/web/src/adminPortal/utils/useRoleAutocomplete.mjs +3 -3
- package/dist/esm-dev/packages/web/src/adminPortal/utils/useRoleAutocomplete.mjs.map +1 -1
- package/dist/esm-dev/packages/web/src/adminPortal/utils/useRoleDisplayInfo.mjs +2 -2
- package/dist/esm-dev/packages/web/src/adminPortal/utils/useRoleDisplayInfo.mjs.map +1 -1
- package/dist/esm-dev/packages/web/src/adminPortal/utils/useRoles.mjs +7 -2
- package/dist/esm-dev/packages/web/src/adminPortal/utils/useRoles.mjs.map +1 -1
- package/dist/esm-dev/packages/web/src/ui/b2b/components/OrganizationRow.mjs +1 -1
- package/dist/esm-dev/packages/web/src/ui/b2b/screens/EmailConfirmation.mjs +27 -3
- package/dist/esm-dev/packages/web/src/ui/b2b/screens/EmailConfirmation.mjs.map +1 -1
- package/dist/esm-dev/packages/web/src/ui/b2b/screens/RecoveryCodeEntryScreen.mjs +2 -0
- package/dist/esm-dev/packages/web/src/ui/b2b/screens/RecoveryCodeEntryScreen.mjs.map +1 -1
- package/dist/esm-dev/packages/web/src/ui/b2b/screens/SMSOTPEntryScreen.mjs +2 -0
- package/dist/esm-dev/packages/web/src/ui/b2b/screens/SMSOTPEntryScreen.mjs.map +1 -1
- package/dist/esm-dev/packages/web/src/ui/b2b/utils.mjs +8 -1
- package/dist/esm-dev/packages/web/src/ui/b2b/utils.mjs.map +1 -1
- package/dist/esm-dev/packages/web/src/ui/b2c/components/GoogleOneTap.mjs +1 -1
- package/dist/esm-dev/packages/web/src/ui/b2c/screens/Main/LoginForm/index.mjs +1 -1
- package/dist/esm-dev/packages/web/src/ui/b2c/screens/Passkey/EditableRow.mjs +1 -1
- package/dist/esm-dev/packages/web/src/ui/b2c/screens/Secondary/EmailConfirmation.mjs +10 -4
- package/dist/esm-dev/packages/web/src/ui/b2c/screens/Secondary/EmailConfirmation.mjs.map +1 -1
- package/dist/esm-dev/packages/web/src/ui/b2c/screens/Secondary/PasswordCreateAuthenticate.mjs +2 -1
- package/dist/esm-dev/packages/web/src/ui/b2c/screens/Secondary/PasswordCreateAuthenticate.mjs.map +1 -1
- package/dist/esm-dev/packages/web/src/ui/b2c/screens/Secondary/PasswordlessAuthenticate.mjs +5 -68
- package/dist/esm-dev/packages/web/src/ui/b2c/screens/Secondary/PasswordlessAuthenticate.mjs.map +1 -1
- package/dist/esm-dev/packages/web/src/ui/b2c/screens/Secondary/usePasswordlessAuthenticate.mjs +71 -0
- package/dist/esm-dev/packages/web/src/ui/b2c/screens/Secondary/usePasswordlessAuthenticate.mjs.map +1 -0
- package/dist/esm-dev/packages/web/src/ui/components/atoms/AnimatedContainer.mjs +1 -1
- package/dist/esm-dev/packages/web/src/ui/components/atoms/Button.mjs +1 -1
- package/dist/esm-dev/packages/web/src/ui/components/atoms/CircularProgress.mjs +4 -5
- package/dist/esm-dev/packages/web/src/ui/components/atoms/CircularProgress.mjs.map +1 -1
- package/dist/esm-dev/packages/web/src/ui/components/atoms/CodeContainer.mjs +1 -1
- package/dist/esm-dev/packages/web/src/ui/components/atoms/Column.mjs +1 -1
- package/dist/esm-dev/packages/web/src/ui/components/atoms/Typography.mjs +1 -1
- package/dist/esm-dev/packages/web/src/ui/components/atoms/VerticalTransition.mjs +1 -1
- package/dist/esm-dev/packages/web/src/ui/components/atoms/VisuallyHidden.mjs +1 -1
- package/dist/esm-dev/packages/web/src/ui/components/atoms/Watermark.mjs +14 -23
- package/dist/esm-dev/packages/web/src/ui/components/atoms/Watermark.mjs.map +1 -1
- package/dist/esm-dev/packages/web/src/ui/components/atoms/Watermark.module.css.mjs +2 -2
- package/dist/esm-dev/packages/web/src/ui/components/molecules/Badge.mjs +1 -1
- package/dist/esm-dev/packages/web/src/ui/components/molecules/EmailInput.mjs +1 -1
- package/dist/esm-dev/packages/web/src/ui/components/molecules/EmailInput.mjs.map +1 -1
- package/dist/esm-dev/packages/web/src/ui/components/molecules/ErrorText.mjs +12 -4
- package/dist/esm-dev/packages/web/src/ui/components/molecules/ErrorText.mjs.map +1 -1
- package/dist/esm-dev/packages/web/src/ui/components/molecules/Input.mjs +3 -2
- package/dist/esm-dev/packages/web/src/ui/components/molecules/Input.mjs.map +1 -1
- package/dist/esm-dev/packages/web/src/ui/components/molecules/MainContainer.mjs +6 -6
- package/dist/esm-dev/packages/web/src/ui/components/molecules/MainContainer.mjs.map +1 -1
- package/dist/esm-dev/packages/web/src/ui/components/molecules/MainContainer.module.css.mjs +2 -2
- package/dist/esm-dev/packages/web/src/ui/components/molecules/OtpInput.mjs +1 -1
- package/dist/esm-dev/packages/web/src/ui/components/molecules/PasswordStrengthCheck.mjs +1 -1
- package/dist/esm-dev/packages/web/src/ui/components/molecules/PhoneInput.mjs +3 -4
- package/dist/esm-dev/packages/web/src/ui/components/molecules/PhoneInput.mjs.map +1 -1
- package/dist/esm-dev/packages/web/src/ui/components/organisms/EmailConfirmationView.mjs +26 -3
- package/dist/esm-dev/packages/web/src/ui/components/organisms/EmailConfirmationView.mjs.map +1 -1
- package/dist/esm-dev/packages/web/src/ui/components/organisms/IDPConsentManifest.mjs +1 -1
- package/dist/esm-dev/packages/web/src/ui/components/organisms/ResendOTPButton.mjs +2 -2
- package/dist/esm-dev/packages/web/src/ui/components/organisms/ResendOTPButton.mjs.map +1 -1
- package/dist/esm-dev/packages/web/src/ui/react/adminPortal/AdminPortalMemberManagement.mjs +0 -42
- package/dist/esm-dev/packages/web/src/ui/react/adminPortal/AdminPortalMemberManagement.mjs.map +1 -1
- package/dist/esm-dev/packages/web/src/ui/react/adminPortal/AdminPortalOrgSettings.mjs +0 -40
- package/dist/esm-dev/packages/web/src/ui/react/adminPortal/AdminPortalOrgSettings.mjs.map +1 -1
- package/dist/esm-dev/packages/web/src/ui/react/adminPortal/AdminPortalSCIM.mjs +0 -43
- package/dist/esm-dev/packages/web/src/ui/react/adminPortal/AdminPortalSCIM.mjs.map +1 -1
- package/dist/esm-dev/packages/web/src/ui/react/adminPortal/AdminPortalSSO.mjs +0 -36
- package/dist/esm-dev/packages/web/src/ui/react/adminPortal/AdminPortalSSO.mjs.map +1 -1
- package/dist/esm-dev/packages/web/src/ui/react/b2b/Stytch.mjs.map +1 -1
- package/dist/esm-dev/packages/web/src/ui/react/bindings/createB2BComponent.mjs.map +1 -1
- package/dist/esm-dev/packages/web/src/utils/crypto.mjs +1 -1
- package/dist/types/{StytchB2BClient-Dq-ITB7Q.d.ts → StytchB2BClient-C_7NUKZh.d.ts} +1 -1
- package/dist/types/{StytchClient-BV0sT3Ox.d.ts → StytchClient-Ccvk8Nj1.d.ts} +1 -2
- package/dist/types/adminPortal/index.d.ts +5 -4
- package/dist/types/b2b/index.d.ts +11 -11
- package/dist/types/b2b/index.headless.d.ts +4 -4
- package/dist/types/{createAuthUrlHandler-Ck5TyB9J.d.ts → createAuthUrlHandler-BJRA2PHG.d.ts} +939 -39
- package/dist/types/idpHelpers-aCVwNrDk.d.ts +36 -0
- package/dist/types/index.d.ts +8 -8
- package/dist/types/index.headless.d.ts +4 -4
- package/dist/types/{shadcn-CFz8Asq0.d.ts → shadcn-0e4fkV5Z.d.ts} +6 -6
- package/messages/b2b/en.po +6 -3
- package/messages/en.po +6 -3
- package/package.json +1 -1
- package/dist/cjs/StytchSSRProxy-CUOvjF03.js.map +0 -1
- package/dist/cjs/idpHelpers-eUP8j58U.js.map +0 -1
- package/dist/cjs/shadcn-Bbv2Hk3P.js.map +0 -1
- package/dist/cjs-dev/StytchSSRProxy-D0B5PuT0.js.map +0 -1
- package/dist/cjs-dev/idpHelpers-DOOVv6dT.js.map +0 -1
- package/dist/cjs-dev/shadcn-CdbmlhdF.js.map +0 -1
- package/dist/esm/packages/web/src/adminPortal/MuiClassNameSetup.mjs +0 -5
- package/dist/esm/packages/web/src/adminPortal/MuiClassNameSetup.mjs.map +0 -1
- package/dist/esm/packages/web/src/adminPortal/classNameSeed.mjs +0 -5
- package/dist/esm/packages/web/src/adminPortal/classNameSeed.mjs.map +0 -1
- package/dist/esm-dev/packages/web/src/adminPortal/MuiClassNameSetup.mjs +0 -5
- package/dist/esm-dev/packages/web/src/adminPortal/MuiClassNameSetup.mjs.map +0 -1
- package/dist/esm-dev/packages/web/src/adminPortal/classNameSeed.mjs +0 -5
- package/dist/esm-dev/packages/web/src/adminPortal/classNameSeed.mjs.map +0 -1
- package/dist/types/idpHelpers-hBhPCtAC.d.ts +0 -936
package/dist/esm-dev/packages/web/src/adminPortal/settings/OrgSettingsRoleAssignmentsSection.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OrgSettingsRoleAssignmentsSection.mjs","sources":["../../../../../../../../web/src/adminPortal/settings/OrgSettingsRoleAssignmentsSection.tsx"],"sourcesContent":["import React, { useMemo, useState } from 'react';\nimport { Organization, SCIMConnection } from '@stytch/core/public';\nimport { SettingsContainer } from '../components/SettingsContainer';\nimport { useRbac } from '../utils/useRbac';\nimport { useFormState } from '../utils/useFormState';\nimport { useOrgSettingsRouterController } from './AdminPortalOrgRouter';\nimport { FormSectionBody } from '../utils/FormSectionBody';\nimport { useSsoConnections } from '../utils/useSsoConnections';\nimport { RBACPolicyRole } from '@stytch/core';\nimport { TableItemRenderer } from '../shared/components/types';\nimport { Typography } from '../components/Typography';\nimport { Table } from '../components/Table';\nimport { Tag } from '../components/Tag';\nimport { Paper, TableContainer } from '@mui/material';\nimport { PageLoadingIndicator } from '../components/PageLoadingIndicator';\nimport { FlexBox } from '../components/FlexBox';\nimport { Button } from '../components/Button';\nimport AddIcon from '@mui/icons-material/AddRounded';\nimport { Modal, useModalState } from '../components/Modal';\nimport { Input } from '../components/Input';\nimport { useMutateOrganization } from '../utils/useMutateOrganization';\nimport { Select } from '../components/Select';\nimport { SettingsSection } from '../components/SettingsSection';\nimport { useMutateSsoConnection } from '../utils/useMutateSsoConnection';\nimport { arraysHaveSameContents } from '../utils/arraysHaveSameContents';\nimport { useAdminPortalConfig } from '../utils/useAdminPortalConfig';\nimport { useRoles } from '../utils/useRoles';\nimport { useRoleSortFn, useRolesById } from '../utils/useRoleSortFn';\nimport { useRoleAutocomplete } from '../utils/useRoleAutocomplete';\nimport { useScimConnection } from '../utils/useScimConnection';\nimport { useScimConnectionGroups } from '../utils/useScimConnectionGroups';\nimport { Autocomplete } from '../components/Autocomplete';\nimport { useMutateScimConnectionRoleAssignments } from '../utils/useMutateScimConnection';\nimport { SAMLTaggedConnection, ExternalTaggedConnection } from '../sso/TaggedConnection';\nimport { getSsoConnectionRoleAssignments, getSsoGroupRoleAssignments } from '../utils/getSsoRoleAssignments';\nimport { uniqueValuesSplitOnSpaces } from '../../utils/uniqueValuesSplitOnSpaces';\nimport { Divider } from '../components/Divider';\n\ntype SCIMGroupRoleAssignments = SCIMConnection['scim_group_implicit_role_assignments'];\n\ninterface RoleAssignmentsFormState {\n idMap: IdToRoleAssignments;\n}\n\ninterface OrgSettingsRoleAssignmentsBodyProps extends FormSectionBody<RoleAssignmentsFormState> {\n editing: boolean;\n ssoConnections: (SAMLTaggedConnection | ExternalTaggedConnection)[];\n roles: RBACPolicyRole[];\n isSsoEnabled: boolean;\n isScimEnabled: boolean;\n allScimGroupIdToGroupName: Record<string, string>;\n scimConnection?: SCIMConnection;\n}\n\ninterface RoleTableProps\n extends Omit<\n OrgSettingsRoleAssignmentsBodyProps,\n 'ssoConnections' | 'roles' | 'scimGroupAssignments' | 'allScimGroupIdToGroupName' | 'scimConnection'\n > {\n role: RBACPolicyRole;\n}\n\nconst roleAssignmentsItemRenderers = (\n idMap: IdToRoleAssignments,\n rolesById: Record<string, { displayName: string }> | undefined,\n) => [\n {\n title: 'Role',\n getValue: (role: RBACPolicyRole) => {\n return (\n <FlexBox flexDirection=\"row\" alignItems=\"center\">\n <Tag>{rolesById?.[role.role_id]?.displayName ?? role.role_id}</Tag>\n <Typography variant=\"body2\">{`(${String(idMap[role.role_id]?.length ?? 0)})`}</Typography>\n </FlexBox>\n );\n },\n },\n];\nconst roleAssigmnentsKeyExtractor = (role: RBACPolicyRole): string => role.role_id;\n\ntype IdToRoleAssignments = Record<string, RoleAssignment[]>;\ntype Source = 'SSO' | 'Email' | 'SCIM';\n\ntype SSORoleAssignment = {\n source: 'SSO';\n id: string;\n displayName: string;\n group: string;\n};\ntype EmailRoleAssignment = {\n source: 'Email';\n displayName: string;\n};\ntype SCIMRoleAssignment = {\n source: 'SCIM';\n displayName: string;\n groupId: string;\n groupName: string;\n};\ntype RoleAssignment = SSORoleAssignment | EmailRoleAssignment | SCIMRoleAssignment;\n\nconst roleItemRendererer: TableItemRenderer<RoleAssignment>[] = [\n {\n title: 'Source',\n getValue: (value) => {\n return <Typography variant=\"body2\">{value.source}</Typography>;\n },\n },\n {\n title: 'Source Name',\n getValue: (value) => {\n return <Typography variant=\"body2\">{value.displayName}</Typography>;\n },\n },\n {\n title: 'Group',\n getValue: (value) => {\n return (\n <Typography variant=\"body2\">\n {value.source === 'SSO' ? value.group : value.source === 'SCIM' ? value.groupName : ''}\n </Typography>\n );\n },\n },\n];\nconst roleKeyExtractor = (role: RoleAssignment): string => role.displayName;\n\nconst useMutateRoleAssignments = () => {\n const { mutate } = useMutateOrganization();\n\n const setOrgEmailAssignments = (emails: Organization['rbac_email_implicit_role_assignments']) => {\n return mutate(\n {\n rbac_email_implicit_role_assignments: emails,\n },\n {\n errorMessage: 'Failed to update email role assignments.',\n },\n );\n };\n\n return { setOrgEmailAssignments };\n};\nconst RoleTable = ({\n localState,\n remoteState,\n editing,\n setLocalState,\n role,\n isSsoEnabled,\n isScimEnabled,\n}: RoleTableProps) => {\n const roleId = role.role_id;\n const items = (editing ? localState : remoteState).idMap[roleId] ?? [];\n\n return (\n <TableContainer component={Paper} variant={'outlined'}>\n <Table\n itemRenderer={roleItemRendererer}\n items={items}\n rowKeyExtractor={roleKeyExtractor}\n disableBottomBorder={true}\n titleVariant=\"caption\"\n getItemActionProps={\n editing\n ? (roleAssignment) => ({\n warningAction:\n roleAssignment.source === 'Email' ||\n (roleAssignment.source === 'SSO' && isSsoEnabled) ||\n (roleAssignment.source === 'SCIM' && isScimEnabled)\n ? {\n text: 'Delete',\n onClick: () => {\n setLocalState((state) => {\n const assignments = state.idMap[roleId].filter((item) => item !== roleAssignment);\n return {\n ...state,\n idMap: {\n ...state.idMap,\n [roleId]: assignments,\n },\n };\n });\n },\n }\n : undefined,\n })\n : undefined\n }\n />\n </TableContainer>\n );\n};\n\ntype NewSSOConnection = {\n id: string;\n group: string;\n};\nconst filterRoleAssignmentsBy = (arr: RoleAssignment[], { source }: { source: Source }) => {\n return arr.slice().filter((val) => val.source === source);\n};\n\ninterface SSORoleAssignmentInfo {\n connectionRoleAssignments: {\n role_id: string;\n }[];\n groupRoleAssignments: {\n role_id: string;\n group: string;\n }[];\n}\n\nconst OrgSettingsRoleAssignmentsBody = ({\n editing,\n ssoConnections,\n roles,\n localState,\n remoteState,\n setLocalState,\n isSsoEnabled,\n isScimEnabled,\n allScimGroupIdToGroupName,\n scimConnection,\n}: OrgSettingsRoleAssignmentsBodyProps) => {\n const idMap = (editing ? localState : remoteState).idMap;\n const rolesWithAssignments = roles.filter((role) => idMap[role.role_id].length > 0);\n const rolesById = useRolesById();\n const itemRenderers = roleAssignmentsItemRenderers(idMap, rolesById);\n\n const [selectedRole, setSelectedRole] = useState<string | null>(null);\n const [selectedSource, setSelectedSource] = useState<Source | null>(null);\n\n const [emailDomain, setEmailDomain] = useState('');\n const [ssoRoleAssignments, setSsoRoleAssignments] = useState<NewSSOConnection[]>([\n {\n id: '',\n group: '',\n },\n ]);\n const [scimGroupIds, setScimGroupIds] = useState<string[]>([]);\n\n const [roleOpenIds, setRoleOpenIds] = useState<Set<string>>(new Set());\n\n const idToHasGroupAttributeMapping = ssoConnections.reduce<Record<string, boolean>>((acc, connection) => {\n acc[connection.connection_id] = connection.connectionType !== 'saml' || !!connection.attribute_mapping.groups;\n return acc;\n }, {});\n\n const sourceItems = new Set<Source>(['Email']);\n if (isSsoEnabled && ssoConnections.length > 0) {\n sourceItems.add('SSO');\n }\n if (isScimEnabled && scimConnection && Object.keys(allScimGroupIdToGroupName).length > 0) {\n sourceItems.add('SCIM');\n }\n\n const sourceSelectItems = Array.from(sourceItems).map((source) => ({\n label: source,\n value: source,\n }));\n\n const addRoleAssignmentModalProps = useModalState(() => {\n if (!selectedSource) return;\n\n const roleId = selectedRole!;\n setRoleOpenIds((prev) => new Set([...prev].concat(roleId)));\n setLocalState((state) => {\n const remoteRoleAssignments = [...state.idMap[roleId]];\n const mergedRoleAssignments: RoleAssignment[] = [...remoteRoleAssignments];\n\n const filteredRoleAssignments = filterRoleAssignmentsBy(remoteRoleAssignments, { source: selectedSource });\n if (selectedSource === 'Email') {\n const domains = new Set<string>();\n\n (filteredRoleAssignments as EmailRoleAssignment[]).forEach((roleAssignment) => {\n domains.add(roleAssignment.displayName);\n });\n uniqueValuesSplitOnSpaces({ input: emailDomain }).forEach((domain) => {\n if (!domains.has(domain)) {\n domains.add(domain);\n mergedRoleAssignments.push({\n source: selectedSource,\n displayName: domain,\n });\n }\n });\n } else if (selectedSource === 'SSO') {\n ssoRoleAssignments.forEach((ssoConnection) => {\n const connectionId = ssoConnection.id;\n if (connectionId.length !== 0) {\n const group = ssoConnection.group.trim();\n\n if (\n !mergedRoleAssignments.some(\n (roleAssignment) =>\n roleAssignment.source === 'SSO' &&\n roleAssignment.id === connectionId &&\n roleAssignment.group === group,\n )\n ) {\n mergedRoleAssignments.push({\n source: selectedSource,\n displayName: ssoConnections.find((val) => val.connection_id === connectionId)?.display_name ?? '',\n id: ssoConnection.id,\n group,\n });\n }\n }\n });\n } else if (selectedSource === 'SCIM') {\n const currentGroupIds: Set<string> = new Set<string>();\n\n (filteredRoleAssignments as SCIMRoleAssignment[]).forEach((roleAssignment) => {\n currentGroupIds.add(roleAssignment.groupId);\n });\n\n scimGroupIds.forEach((id) => {\n if (!currentGroupIds.has(id)) {\n mergedRoleAssignments.push({\n source: selectedSource,\n displayName: scimConnection?.display_name ?? '',\n groupId: id,\n groupName: allScimGroupIdToGroupName[id],\n });\n }\n });\n }\n if (mergedRoleAssignments.length !== remoteRoleAssignments.length) {\n return {\n ...state,\n idMap: {\n ...state.idMap,\n [roleId]: mergedRoleAssignments,\n },\n };\n }\n return state;\n });\n });\n\n const showInputContent = !!selectedRole && !!selectedSource;\n const disableConfirm =\n !showInputContent ||\n (selectedSource === 'Email' && emailDomain.length === 0) ||\n (selectedSource === 'SSO' && ssoRoleAssignments.every((connection) => !connection.id));\n\n const roleAutocompleteProps = useRoleAutocomplete();\n const roleSelectItems = roleAutocompleteProps.selectItems.map((roleId) => ({\n label: roleAutocompleteProps.getOptionLabel(roleId),\n value: roleId,\n subtext: roleAutocompleteProps.getOptionDescription(roleId),\n }));\n\n const ssoGroupSelectItems = useMemo(\n () =>\n ssoConnections.map(({ connection_id: id, display_name: displayName }) => ({\n label: displayName,\n value: id,\n })),\n [ssoConnections],\n );\n\n const scimGroupSelectItems = useMemo(() => Object.keys(allScimGroupIdToGroupName), [allScimGroupIdToGroupName]);\n\n const sourceToInputContentMap: Record<Source, JSX.Element> = {\n Email: (\n <>\n <SettingsSection title=\"Email Domain\">\n <Typography variant=\"body2\">\n Separate domains by a single space to assign to multiple email domains.\n </Typography>\n <Input label=\"Domain\" fullWidth value={emailDomain} onChange={setEmailDomain} />\n </SettingsSection>\n </>\n ),\n SSO: (\n <>\n <SettingsSection title=\"SSO\">\n <Typography variant=\"body2\">\n Enter a Group name to assign a Role at the Group level, or leave blank to assign at the SSO connection\n level. If assigning group Roles to an external connection, ensure a "groups" key exists in the\n external connection Attribute Mapping.\n </Typography>\n\n {ssoRoleAssignments.map(({ id, group }, index) => {\n const isValidConnection = !!id;\n const connectionHasGroupMapping = !!idToHasGroupAttributeMapping[id];\n const isValidConnectionWithGroupMapping = isValidConnection && connectionHasGroupMapping;\n\n const disableGroupInput = !isValidConnectionWithGroupMapping;\n const groupInputPlaceholder =\n isValidConnection && !connectionHasGroupMapping ? 'Add a \"groups\" key first' : 'Enter or leave blank';\n const groupInputCaption =\n isValidConnection && !connectionHasGroupMapping\n ? 'Add a \"groups\" key in the SSO Attribute Mapping first to assign group roles.'\n : undefined;\n return (\n <FlexBox key={index} flexDirection=\"row\" gap={2}>\n <Select\n label=\"Connection Display Name\"\n width={250}\n placeholder=\"Select\"\n selectItems={selectedRole ? ssoGroupSelectItems : []}\n value={id}\n onChange={(val) => {\n setSsoRoleAssignments((connections) => {\n return connections.map((connection, currentIndex) => {\n if (currentIndex === index) {\n return {\n ...connection,\n id: val,\n };\n }\n return connection;\n });\n });\n }}\n />\n <Input\n label=\"Group name\"\n value={group}\n disabled={disableGroupInput}\n placeholder={groupInputPlaceholder}\n caption={groupInputCaption}\n onChange={(val) => {\n setSsoRoleAssignments((connections) => {\n return connections.map((connection, currentIndex) => {\n if (currentIndex === index) {\n return {\n ...connection,\n group: val,\n id: id,\n hasGroupAttributeMapping: idToHasGroupAttributeMapping[id],\n };\n }\n return connection;\n });\n });\n }}\n />\n </FlexBox>\n );\n })}\n <Button\n variant=\"text\"\n startIcon={<AddIcon />}\n compact\n onClick={() => {\n setSsoRoleAssignments((connections) => {\n return [\n ...connections,\n {\n id: '',\n group: '',\n },\n ];\n });\n }}\n >\n Add SSO Role assignment\n </Button>\n </SettingsSection>\n </>\n ),\n SCIM: (\n <SettingsSection title=\"SCIM Groups\">\n <Autocomplete\n label=\"Group name\"\n selectItems={scimGroupSelectItems}\n value={scimGroupIds}\n getOptionLabel={(value) => allScimGroupIdToGroupName[value]}\n onChange={(value) => {\n setScimGroupIds(() => value);\n }}\n />\n </SettingsSection>\n ),\n };\n return (\n <FlexBox flexDirection=\"column\" gap={1}>\n <Modal\n {...addRoleAssignmentModalProps}\n title=\"Add Role assignment\"\n confirmButtonText=\"Save\"\n disableConfirm={disableConfirm}\n close={() => {\n addRoleAssignmentModalProps.close();\n setSelectedRole(null);\n setSelectedSource(null);\n setEmailDomain('');\n setSsoRoleAssignments([\n {\n id: '',\n group: '',\n },\n ]);\n }}\n >\n <FlexBox flexDirection=\"column\" gap={2}>\n <Select\n label=\"Select Role\"\n selectItems={roleSelectItems}\n value={selectedRole}\n onChange={(val) => {\n setSelectedRole(val);\n }}\n placeholder=\"Select Role\"\n />\n <Select\n label=\"Select Source\"\n selectItems={sourceSelectItems}\n value={selectedSource}\n placeholder=\"Select Source\"\n onChange={(val) => {\n setSelectedSource(val);\n }}\n />\n {showInputContent && (\n <>\n <Divider />\n {sourceToInputContentMap[selectedSource!]}\n </>\n )}\n </FlexBox>\n </Modal>\n <Typography variant=\"body2\" color=\"secondary\">\n {\n \"Configure automatic granting and revoking of roles based on the member's email domain, SCIM Group membership, or SSO Connection.\"\n }\n </Typography>\n {editing && (\n <FlexBox justifyContent=\"flex-start\">\n <Button variant=\"text\" startIcon={<AddIcon />} compact={true} onClick={addRoleAssignmentModalProps.open}>\n Add Role assignment\n </Button>\n </FlexBox>\n )}\n {rolesWithAssignments.length > 0 ? (\n <Table\n titleVariant=\"caption\"\n itemRenderer={itemRenderers}\n items={rolesWithAssignments}\n rowKeyExtractor={roleAssigmnentsKeyExtractor}\n openIds={roleOpenIds}\n onOpenChange={({ id, open }) => {\n setRoleOpenIds((prev) => {\n const newRoleOpenIds = new Set(prev);\n if (open) {\n newRoleOpenIds.add(id);\n } else {\n newRoleOpenIds.delete(id);\n }\n return newRoleOpenIds;\n });\n }}\n ExpandedContent={({ data: role }) => {\n return (\n <RoleTable\n role={role}\n editing={editing}\n setLocalState={setLocalState}\n localState={localState}\n remoteState={remoteState}\n isSsoEnabled={isSsoEnabled}\n isScimEnabled={isScimEnabled}\n />\n );\n }}\n />\n ) : (\n <Typography variant=\"body2\">No role assignments.</Typography>\n )}\n </FlexBox>\n );\n};\nconst sortByKeyAndValue = <T extends Record<string, string>>(array: T[], sortKey: string) => {\n const sortedByKeys = [...array].sort((a, b) => a[sortKey].localeCompare(b[sortKey]));\n\n // Then, sort the keys and values within each object\n return sortedByKeys.map((obj) => {\n return Object.fromEntries(\n Object.entries(obj).sort(([keyA, valA], [keyB, valB]) => {\n return keyA.localeCompare(keyB) || valA.localeCompare(valB);\n }),\n );\n });\n};\ntype RbacEmailRoleAssignment = { role_id: string; domain: string };\n\nexport const OrgSettingsRoleAssignmentsSection = ({ orgInfo }: { orgInfo: Organization }) => {\n const { data: adminPortalConfig } = useAdminPortalConfig({ shouldFetch: true });\n const { data: canSetRoles } = useRbac('stytch.organization', 'update.settings.implicit-roles');\n const { data: canGetSsoPerm } = useRbac('stytch.sso', 'get');\n const { data: canGetScimPerm } = useRbac('stytch.scim', 'get');\n const isSsoEnabled = adminPortalConfig?.sso_config.sso_enabled ?? false;\n const isScimEnabled = adminPortalConfig?.scim_config.scim_enabled ?? false;\n\n const canGetSso = (isSsoEnabled && canGetSsoPerm) ?? false;\n const canGetScim = (isScimEnabled && canGetScimPerm) ?? false;\n\n const { data: ssoConnections, isLoading: isLoadingSso } = useSsoConnections({\n shouldFetch: canGetSso && !!canSetRoles,\n });\n const { data: scimConnection, isLoading: isLoadingScim } = useScimConnection({\n shouldFetch: canGetScim && !!canSetRoles,\n });\n const { data: scimConnectionGroups, isLoading: isLoadingScimGroups } = useScimConnectionGroups({\n shouldFetch: canGetScim && !!canSetRoles,\n });\n\n const roles = useRoles();\n const sortRoles = useRoleSortFn();\n const sortedRoles = useMemo(() => sortRoles(roles ?? []), [roles, sortRoles]);\n\n const rbacEmails = orgInfo.rbac_email_implicit_role_assignments;\n const taggedConnections: (SAMLTaggedConnection | ExternalTaggedConnection)[] = useMemo(\n () => [\n ...(ssoConnections?.saml_connections.map((c) => ({ ...c, connectionType: 'saml' as const })) ?? []),\n ...(ssoConnections?.external_connections.map((c) => ({ ...c, connectionType: 'external' as const })) ?? []),\n ],\n [ssoConnections?.external_connections, ssoConnections?.saml_connections],\n );\n const taggedConnectionsById = useMemo(\n () =>\n taggedConnections.reduce<Record<string, SAMLTaggedConnection | ExternalTaggedConnection>>((acc, val) => {\n acc[val.connection_id] = val;\n return acc;\n }, {}),\n [taggedConnections],\n );\n const allScimGroups = scimConnectionGroups?.scim_groups ?? [];\n const allScimGroupIdToGroupName = allScimGroups.reduce(\n (acc, val) => {\n acc[val.group_id] = val.group_name;\n return acc;\n },\n {} as Record<string, string>,\n );\n const { setOrgEmailAssignments } = useMutateRoleAssignments();\n const { mutate: mutateSamlConnection } = useMutateSsoConnection('saml');\n const { mutate: mutateExternalConnection } = useMutateSsoConnection('external');\n const { mutate: mutateScimConnection } = useMutateScimConnectionRoleAssignments();\n const idMap = useMemo(() => {\n const idToRoleAssignments: IdToRoleAssignments = {};\n sortedRoles.forEach((role) => {\n idToRoleAssignments[role.role_id] = [];\n });\n\n taggedConnections.forEach((connection) => {\n const connectionRoleAssignments = getSsoConnectionRoleAssignments(connection);\n const groupRoleAssignments = getSsoGroupRoleAssignments(connection);\n\n connectionRoleAssignments.forEach((implicitRole) => {\n const role = implicitRole.role_id;\n if (!idToRoleAssignments[role]) {\n idToRoleAssignments[role] = [];\n }\n idToRoleAssignments[role].push({\n source: 'SSO',\n displayName: connection.display_name,\n id: connection.connection_id,\n group: '',\n });\n });\n\n groupRoleAssignments.forEach((implicitRole) => {\n const role = implicitRole.role_id;\n if (!idToRoleAssignments[role]) {\n idToRoleAssignments[role] = [];\n }\n\n idToRoleAssignments[role].push({\n source: 'SSO',\n displayName: connection.display_name,\n id: connection.connection_id,\n group: implicitRole.group,\n });\n });\n });\n\n rbacEmails?.forEach((rbacEmail) => {\n const role = rbacEmail.role_id;\n if (!idToRoleAssignments[role]) {\n idToRoleAssignments[role] = [];\n }\n idToRoleAssignments[role].push({\n source: 'Email',\n displayName: rbacEmail.domain,\n });\n });\n\n scimConnection?.scim_group_implicit_role_assignments.forEach((implicitRole) => {\n const role = implicitRole.role_id;\n if (!idToRoleAssignments[role]) {\n idToRoleAssignments[role] = [];\n }\n idToRoleAssignments[role].push({\n source: 'SCIM',\n displayName: scimConnection.display_name,\n groupId: implicitRole.group_id,\n groupName: allScimGroupIdToGroupName[implicitRole.group_id],\n });\n });\n\n return idToRoleAssignments;\n }, [\n allScimGroupIdToGroupName,\n taggedConnections,\n rbacEmails,\n scimConnection?.display_name,\n scimConnection?.scim_group_implicit_role_assignments,\n sortedRoles,\n ]);\n\n const remoteState: RoleAssignmentsFormState = {\n idMap: idMap,\n };\n const { localState, setLocalState, editing, handleSetEditing } = useFormState({ remoteState });\n const { useBlockNavigation } = useOrgSettingsRouterController();\n\n const { hasUpdatedEmails, updatedEmailRoleAssignments } = useMemo(() => {\n const remoteEmails = orgInfo.rbac_email_implicit_role_assignments ?? [];\n const localEmails = Object.entries(localState.idMap).reduce<RbacEmailRoleAssignment[]>(\n (acc, [roleId, roleAssignments]) => {\n roleAssignments.forEach((roleAssignment) => {\n if (roleAssignment.source === 'Email') {\n acc.push({\n role_id: roleId,\n domain: roleAssignment.displayName,\n });\n }\n });\n return acc;\n },\n [],\n );\n\n const sortedLocalEmails = sortByKeyAndValue(localEmails, 'domain');\n const sortedRemoteEmails = sortByKeyAndValue(remoteEmails ?? [], 'domain');\n\n const isSame = arraysHaveSameContents(sortedLocalEmails, sortedRemoteEmails);\n const updatedEmailRoleAssignments = isSame ? [] : sortedLocalEmails;\n\n return {\n hasUpdatedEmails: !isSame,\n updatedEmailRoleAssignments: updatedEmailRoleAssignments as RbacEmailRoleAssignment[],\n };\n }, [localState.idMap, orgInfo.rbac_email_implicit_role_assignments]);\n\n const { hasUpdatedSso, updatedSsoRoleAssignments } = useMemo(() => {\n const remoteAssignments: Record<string, SSORoleAssignmentInfo> = {};\n const localAssignments: Record<string, SSORoleAssignmentInfo> = {};\n\n taggedConnections?.forEach((connection) => {\n remoteAssignments[connection.connection_id] = {\n connectionRoleAssignments: getSsoConnectionRoleAssignments(connection),\n groupRoleAssignments: getSsoGroupRoleAssignments(connection),\n };\n localAssignments[connection.connection_id] = { connectionRoleAssignments: [], groupRoleAssignments: [] };\n });\n\n // Mutate the local SAML connections with role assignments from the local state\n Object.entries(localState.idMap).forEach(([roleId, roleAssignments]) => {\n roleAssignments.forEach((roleAssignment) => {\n if (roleAssignment.source === 'SSO') {\n const connectionId = roleAssignment.id;\n\n if (roleAssignment.group) {\n localAssignments[connectionId].groupRoleAssignments.push({\n role_id: roleId,\n group: roleAssignment.group,\n });\n } else {\n localAssignments[connectionId].connectionRoleAssignments.push({\n role_id: roleId,\n });\n }\n }\n });\n });\n\n const updatedSsoRoleAssignments: Record<string, SSORoleAssignmentInfo> = {};\n\n // Compare the local and remote SSO connections to determine which connections need to be updated\n Object.entries(localAssignments).map(([connectionId, localConnection]) => {\n const remoteConnection = remoteAssignments[connectionId];\n\n const localImplicitRoleAssignments = localConnection.connectionRoleAssignments.map((val) => val.role_id);\n const remoteImplicitRoleAssignments = remoteConnection.connectionRoleAssignments.map((val) => val.role_id);\n\n const localGroupImplicitRoleAssignments = sortByKeyAndValue(localConnection.groupRoleAssignments, 'group');\n const remoteGroupImplicitRoleAssignments = sortByKeyAndValue(remoteConnection.groupRoleAssignments, 'group');\n\n if (\n !arraysHaveSameContents(localImplicitRoleAssignments, remoteImplicitRoleAssignments) ||\n !arraysHaveSameContents(localGroupImplicitRoleAssignments, remoteGroupImplicitRoleAssignments)\n ) {\n updatedSsoRoleAssignments[connectionId] = localConnection;\n }\n });\n\n return {\n hasUpdatedSso: Object.keys(updatedSsoRoleAssignments).length > 0,\n updatedSsoRoleAssignments: updatedSsoRoleAssignments,\n };\n }, [localState.idMap, taggedConnections]);\n\n const { hasUpdatedScimGroups, updatedScimRoleAssignments } = useMemo(() => {\n const remoteScimGroups: SCIMGroupRoleAssignments = scimConnection?.scim_group_implicit_role_assignments ?? [];\n const localScimGroups: SCIMGroupRoleAssignments = Object.entries(localState.idMap).reduce(\n (acc, [roleId, roleAssignments]) => {\n roleAssignments.forEach((roleAssignment) => {\n if (roleAssignment.source === 'SCIM') {\n acc.push({\n role_id: roleId,\n group_id: roleAssignment.groupId,\n });\n }\n });\n return acc;\n },\n [] as SCIMGroupRoleAssignments,\n );\n\n const isSame = arraysHaveSameContents(localScimGroups, remoteScimGroups);\n const updatedScimRoleAssignments = isSame ? [] : localScimGroups;\n\n return {\n hasUpdatedScimGroups: !isSame,\n updatedScimRoleAssignments: updatedScimRoleAssignments,\n };\n }, [localState.idMap, scimConnection]);\n\n const handleSave = async () => {\n if (hasUpdatedEmails) {\n await setOrgEmailAssignments(updatedEmailRoleAssignments);\n }\n\n await Promise.all(\n Object.entries(updatedSsoRoleAssignments).map(async ([connectionId, ssoRoleAssignment]) => {\n const connection = taggedConnectionsById[connectionId];\n if (!connection) {\n return;\n }\n\n if (connection.connectionType === 'saml') {\n await mutateSamlConnection({\n connection_id: connectionId,\n saml_connection_implicit_role_assignments: ssoRoleAssignment.connectionRoleAssignments,\n saml_group_implicit_role_assignments: ssoRoleAssignment.groupRoleAssignments,\n });\n } else {\n await mutateExternalConnection({\n connection_id: connectionId,\n external_connection_implicit_role_assignments: ssoRoleAssignment.connectionRoleAssignments,\n external_group_implicit_role_assignments: ssoRoleAssignment.groupRoleAssignments,\n });\n }\n }),\n );\n\n if (scimConnection && hasUpdatedScimGroups) {\n await mutateScimConnection({\n connection_id: scimConnection.connection_id,\n scim_group_implicit_role_assignments: updatedScimRoleAssignments,\n });\n }\n };\n\n if (isLoadingSso || isLoadingScim || isLoadingScimGroups) {\n return <PageLoadingIndicator />;\n }\n\n const disableSave = !hasUpdatedEmails && !hasUpdatedSso && !hasUpdatedScimGroups;\n\n return (\n <SettingsContainer\n title=\"Automatic Role assignments\"\n hasCTA={canSetRoles}\n onSave={handleSave}\n useBlockNavigation={useBlockNavigation}\n editing={editing}\n setEditing={handleSetEditing}\n disableSave={disableSave}\n >\n <OrgSettingsRoleAssignmentsBody\n editing={editing}\n remoteState={remoteState}\n localState={localState}\n setLocalState={setLocalState}\n ssoConnections={taggedConnections}\n roles={sortedRoles}\n isSsoEnabled={isSsoEnabled}\n isScimEnabled={isScimEnabled}\n allScimGroupIdToGroupName={allScimGroupIdToGroupName}\n scimConnection={scimConnection}\n />\n </SettingsContainer>\n );\n};\n"],"names":["roleAssignmentsItemRenderers","idMap","rolesById","title","getValue","role","React","FlexBox","flexDirection","alignItems","Tag","role_id","displayName","Typography","variant","String","length","roleAssigmnentsKeyExtractor","roleItemRendererer","value","source","group","groupName","roleKeyExtractor","useMutateRoleAssignments","mutate","useMutateOrganization","setOrgEmailAssignments","emails","rbac_email_implicit_role_assignments","errorMessage","RoleTable","localState","remoteState","editing","setLocalState","isSsoEnabled","isScimEnabled","roleId","items","TableContainer","component","Paper","Table","itemRenderer","rowKeyExtractor","disableBottomBorder","titleVariant","getItemActionProps","roleAssignment","warningAction","text","onClick","state","assignments","filter","item","undefined","filterRoleAssignmentsBy","arr","slice","val","OrgSettingsRoleAssignmentsBody","ssoConnections","roles","allScimGroupIdToGroupName","scimConnection","rolesWithAssignments","useRolesById","itemRenderers","selectedRole","setSelectedRole","useState","selectedSource","setSelectedSource","emailDomain","setEmailDomain","ssoRoleAssignments","setSsoRoleAssignments","id","scimGroupIds","setScimGroupIds","roleOpenIds","setRoleOpenIds","Set","idToHasGroupAttributeMapping","reduce","acc","connection","connection_id","connectionType","attribute_mapping","groups","sourceItems","add","Object","keys","sourceSelectItems","Array","from","map","label","addRoleAssignmentModalProps","useModalState","prev","concat","remoteRoleAssignments","mergedRoleAssignments","filteredRoleAssignments","domains","forEach","uniqueValuesSplitOnSpaces","input","domain","has","push","ssoConnection","connectionId","trim","some","find","display_name","currentGroupIds","groupId","showInputContent","disableConfirm","every","roleAutocompleteProps","useRoleAutocomplete","roleSelectItems","selectItems","getOptionLabel","subtext","getOptionDescription","ssoGroupSelectItems","useMemo","scimGroupSelectItems","sourceToInputContentMap","Email","SettingsSection","Input","fullWidth","onChange","SSO","index","isValidConnection","connectionHasGroupMapping","isValidConnectionWithGroupMapping","disableGroupInput","groupInputPlaceholder","groupInputCaption","key","gap","Select","width","placeholder","connections","currentIndex","disabled","caption","hasGroupAttributeMapping","Button","startIcon","AddIcon","compact","SCIM","Autocomplete","Modal","confirmButtonText","close","Divider","color","justifyContent","open","openIds","onOpenChange","newRoleOpenIds","delete","ExpandedContent","data","sortByKeyAndValue","array","sortKey","sortedByKeys","sort","a","b","localeCompare","obj","fromEntries","entries","keyA","valA","keyB","valB","OrgSettingsRoleAssignmentsSection","orgInfo","adminPortalConfig","useAdminPortalConfig","shouldFetch","canSetRoles","useRbac","canGetSsoPerm","canGetScimPerm","sso_config","sso_enabled","scim_config","scim_enabled","canGetSso","canGetScim","isLoading","isLoadingSso","useSsoConnections","isLoadingScim","useScimConnection","scimConnectionGroups","isLoadingScimGroups","useScimConnectionGroups","useRoles","sortRoles","useRoleSortFn","sortedRoles","rbacEmails","taggedConnections","saml_connections","c","external_connections","taggedConnectionsById","allScimGroups","scim_groups","group_id","group_name","mutateSamlConnection","useMutateSsoConnection","mutateExternalConnection","mutateScimConnection","useMutateScimConnectionRoleAssignments","idToRoleAssignments","connectionRoleAssignments","getSsoConnectionRoleAssignments","groupRoleAssignments","getSsoGroupRoleAssignments","implicitRole","rbacEmail","scim_group_implicit_role_assignments","handleSetEditing","useFormState","useBlockNavigation","useOrgSettingsRouterController","hasUpdatedEmails","updatedEmailRoleAssignments","remoteEmails","localEmails","roleAssignments","sortedLocalEmails","sortedRemoteEmails","isSame","arraysHaveSameContents","hasUpdatedSso","updatedSsoRoleAssignments","remoteAssignments","localAssignments","localConnection","remoteConnection","localImplicitRoleAssignments","remoteImplicitRoleAssignments","localGroupImplicitRoleAssignments","remoteGroupImplicitRoleAssignments","hasUpdatedScimGroups","updatedScimRoleAssignments","remoteScimGroups","localScimGroups","handleSave","Promise","all","ssoRoleAssignment","saml_connection_implicit_role_assignments","saml_group_implicit_role_assignments","external_connection_implicit_role_assignments","external_group_implicit_role_assignments","PageLoadingIndicator","disableSave","SettingsContainer","hasCTA","onSave","setEditing"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"OrgSettingsRoleAssignmentsSection.mjs","sources":["../../../../../../../../web/src/adminPortal/settings/OrgSettingsRoleAssignmentsSection.tsx"],"sourcesContent":["import React, { useMemo, useState } from 'react';\nimport { Organization, SCIMConnection } from '@stytch/core/public';\nimport { SettingsContainer } from '../components/SettingsContainer';\nimport { useRbac } from '../utils/useRbac';\nimport { useFormState } from '../utils/useFormState';\nimport { useOrgSettingsRouterController } from './AdminPortalOrgRouter';\nimport { FormSectionBody } from '../utils/FormSectionBody';\nimport { useSsoConnections } from '../utils/useSsoConnections';\nimport { RBACPolicyRole } from '@stytch/core';\nimport { TableItemRenderer } from '../shared/components/types';\nimport { Typography } from '../components/Typography';\nimport { Table } from '../components/Table';\nimport { Tag } from '../components/Tag';\nimport { Paper, TableContainer } from '@mui/material';\nimport { PageLoadingIndicator } from '../components/PageLoadingIndicator';\nimport { FlexBox } from '../components/FlexBox';\nimport { Button } from '../components/Button';\nimport AddIcon from '@mui/icons-material/AddRounded';\nimport { Modal, useModalState } from '../components/Modal';\nimport { Input } from '../components/Input';\nimport { useMutateOrganization } from '../utils/useMutateOrganization';\nimport { Select } from '../components/Select';\nimport { SettingsSection } from '../components/SettingsSection';\nimport { useMutateSsoConnection } from '../utils/useMutateSsoConnection';\nimport { arraysHaveSameContents } from '../utils/arraysHaveSameContents';\nimport { useAdminPortalConfig } from '../utils/useAdminPortalConfig';\nimport { useRoles } from '../utils/useRoles';\nimport { useRoleSortFn, useRolesById } from '../utils/useRoleSortFn';\nimport { useRoleAutocomplete } from '../utils/useRoleAutocomplete';\nimport { useScimConnection } from '../utils/useScimConnection';\nimport { useScimConnectionGroups } from '../utils/useScimConnectionGroups';\nimport { Autocomplete } from '../components/Autocomplete';\nimport { useMutateScimConnectionRoleAssignments } from '../utils/useMutateScimConnection';\nimport { SAMLTaggedConnection, ExternalTaggedConnection } from '../sso/TaggedConnection';\nimport { getSsoConnectionRoleAssignments, getSsoGroupRoleAssignments } from '../utils/getSsoRoleAssignments';\nimport { uniqueValuesSplitOnSpaces } from '../../utils/uniqueValuesSplitOnSpaces';\nimport { Divider } from '../components/Divider';\n\ntype SCIMGroupRoleAssignments = SCIMConnection['scim_group_implicit_role_assignments'];\n\ninterface RoleAssignmentsFormState {\n idMap: IdToRoleAssignments;\n}\n\ninterface OrgSettingsRoleAssignmentsBodyProps extends FormSectionBody<RoleAssignmentsFormState> {\n editing: boolean;\n ssoConnections: (SAMLTaggedConnection | ExternalTaggedConnection)[];\n roles: RBACPolicyRole[];\n isSsoEnabled: boolean;\n isScimEnabled: boolean;\n canViewCustomOrgRoles: boolean;\n allScimGroupIdToGroupName: Record<string, string>;\n scimConnection?: SCIMConnection;\n}\n\ninterface RoleTableProps\n extends Omit<\n OrgSettingsRoleAssignmentsBodyProps,\n | 'ssoConnections'\n | 'roles'\n | 'scimGroupAssignments'\n | 'allScimGroupIdToGroupName'\n | 'scimConnection'\n | 'canViewCustomOrgRoles'\n > {\n role: RBACPolicyRole;\n}\n\nconst roleAssignmentsItemRenderers = (\n idMap: IdToRoleAssignments,\n rolesById: Record<string, { displayName: string }> | undefined,\n) => [\n {\n title: 'Role',\n getValue: (role: RBACPolicyRole) => {\n return (\n <FlexBox flexDirection=\"row\" alignItems=\"center\">\n <Tag>{rolesById?.[role.role_id]?.displayName ?? role.role_id}</Tag>\n <Typography variant=\"body2\">{`(${String(idMap[role.role_id]?.length ?? 0)})`}</Typography>\n </FlexBox>\n );\n },\n },\n];\nconst roleAssigmnentsKeyExtractor = (role: RBACPolicyRole): string => role.role_id;\n\ntype IdToRoleAssignments = Record<string, RoleAssignment[]>;\ntype Source = 'SSO' | 'Email' | 'SCIM';\n\ntype SSORoleAssignment = {\n source: 'SSO';\n id: string;\n displayName: string;\n group: string;\n};\ntype EmailRoleAssignment = {\n source: 'Email';\n displayName: string;\n};\ntype SCIMRoleAssignment = {\n source: 'SCIM';\n displayName: string;\n groupId: string;\n groupName: string;\n};\ntype RoleAssignment = SSORoleAssignment | EmailRoleAssignment | SCIMRoleAssignment;\n\nconst roleItemRendererer: TableItemRenderer<RoleAssignment>[] = [\n {\n title: 'Source',\n getValue: (value) => {\n return <Typography variant=\"body2\">{value.source}</Typography>;\n },\n },\n {\n title: 'Source Name',\n getValue: (value) => {\n return <Typography variant=\"body2\">{value.displayName}</Typography>;\n },\n },\n {\n title: 'Group',\n getValue: (value) => {\n return (\n <Typography variant=\"body2\">\n {value.source === 'SSO' ? value.group : value.source === 'SCIM' ? value.groupName : ''}\n </Typography>\n );\n },\n },\n];\nconst roleKeyExtractor = (role: RoleAssignment): string => role.displayName;\n\nconst useMutateRoleAssignments = () => {\n const { mutate } = useMutateOrganization();\n\n const setOrgEmailAssignments = (emails: Organization['rbac_email_implicit_role_assignments']) => {\n return mutate(\n {\n rbac_email_implicit_role_assignments: emails,\n },\n {\n errorMessage: 'Failed to update email role assignments.',\n },\n );\n };\n\n return { setOrgEmailAssignments };\n};\nconst RoleTable = ({\n localState,\n remoteState,\n editing,\n setLocalState,\n role,\n isSsoEnabled,\n isScimEnabled,\n}: RoleTableProps) => {\n const roleId = role.role_id;\n const items = (editing ? localState : remoteState).idMap[roleId] ?? [];\n\n return (\n <TableContainer component={Paper} variant={'outlined'}>\n <Table\n itemRenderer={roleItemRendererer}\n items={items}\n rowKeyExtractor={roleKeyExtractor}\n disableBottomBorder={true}\n titleVariant=\"caption\"\n getItemActionProps={\n editing\n ? (roleAssignment) => ({\n warningAction:\n roleAssignment.source === 'Email' ||\n (roleAssignment.source === 'SSO' && isSsoEnabled) ||\n (roleAssignment.source === 'SCIM' && isScimEnabled)\n ? {\n text: 'Delete',\n onClick: () => {\n setLocalState((state) => {\n const assignments = state.idMap[roleId].filter((item) => item !== roleAssignment);\n return {\n ...state,\n idMap: {\n ...state.idMap,\n [roleId]: assignments,\n },\n };\n });\n },\n }\n : undefined,\n })\n : undefined\n }\n />\n </TableContainer>\n );\n};\n\ntype NewSSOConnection = {\n id: string;\n group: string;\n};\nconst filterRoleAssignmentsBy = (arr: RoleAssignment[], { source }: { source: Source }) => {\n return arr.slice().filter((val) => val.source === source);\n};\n\ninterface SSORoleAssignmentInfo {\n connectionRoleAssignments: {\n role_id: string;\n }[];\n groupRoleAssignments: {\n role_id: string;\n group: string;\n }[];\n}\n\nconst OrgSettingsRoleAssignmentsBody = ({\n editing,\n ssoConnections,\n roles,\n localState,\n remoteState,\n setLocalState,\n isSsoEnabled,\n isScimEnabled,\n canViewCustomOrgRoles,\n allScimGroupIdToGroupName,\n scimConnection,\n}: OrgSettingsRoleAssignmentsBodyProps) => {\n const idMap = (editing ? localState : remoteState).idMap;\n const rolesWithAssignments = roles.filter((role) => idMap[role.role_id].length > 0);\n const rolesById = useRolesById();\n const itemRenderers = roleAssignmentsItemRenderers(idMap, rolesById);\n\n const [selectedRole, setSelectedRole] = useState<string | null>(null);\n const [selectedSource, setSelectedSource] = useState<Source | null>(null);\n\n const [emailDomain, setEmailDomain] = useState('');\n const [ssoRoleAssignments, setSsoRoleAssignments] = useState<NewSSOConnection[]>([\n {\n id: '',\n group: '',\n },\n ]);\n const [scimGroupIds, setScimGroupIds] = useState<string[]>([]);\n\n const [roleOpenIds, setRoleOpenIds] = useState<Set<string>>(new Set());\n\n const idToHasGroupAttributeMapping = ssoConnections.reduce<Record<string, boolean>>((acc, connection) => {\n acc[connection.connection_id] = connection.connectionType !== 'saml' || !!connection.attribute_mapping.groups;\n return acc;\n }, {});\n\n const sourceItems = new Set<Source>(['Email']);\n if (isSsoEnabled && ssoConnections.length > 0) {\n sourceItems.add('SSO');\n }\n if (isScimEnabled && scimConnection && Object.keys(allScimGroupIdToGroupName).length > 0) {\n sourceItems.add('SCIM');\n }\n\n const sourceSelectItems = Array.from(sourceItems).map((source) => ({\n label: source,\n value: source,\n }));\n\n const addRoleAssignmentModalProps = useModalState(() => {\n if (!selectedSource) return;\n\n const roleId = selectedRole!;\n setRoleOpenIds((prev) => new Set([...prev].concat(roleId)));\n setLocalState((state) => {\n const remoteRoleAssignments = [...state.idMap[roleId]];\n const mergedRoleAssignments: RoleAssignment[] = [...remoteRoleAssignments];\n\n const filteredRoleAssignments = filterRoleAssignmentsBy(remoteRoleAssignments, { source: selectedSource });\n if (selectedSource === 'Email') {\n const domains = new Set<string>();\n\n (filteredRoleAssignments as EmailRoleAssignment[]).forEach((roleAssignment) => {\n domains.add(roleAssignment.displayName);\n });\n uniqueValuesSplitOnSpaces({ input: emailDomain }).forEach((domain) => {\n if (!domains.has(domain)) {\n domains.add(domain);\n mergedRoleAssignments.push({\n source: selectedSource,\n displayName: domain,\n });\n }\n });\n } else if (selectedSource === 'SSO') {\n ssoRoleAssignments.forEach((ssoConnection) => {\n const connectionId = ssoConnection.id;\n if (connectionId.length !== 0) {\n const group = ssoConnection.group.trim();\n\n if (\n !mergedRoleAssignments.some(\n (roleAssignment) =>\n roleAssignment.source === 'SSO' &&\n roleAssignment.id === connectionId &&\n roleAssignment.group === group,\n )\n ) {\n mergedRoleAssignments.push({\n source: selectedSource,\n displayName: ssoConnections.find((val) => val.connection_id === connectionId)?.display_name ?? '',\n id: ssoConnection.id,\n group,\n });\n }\n }\n });\n } else if (selectedSource === 'SCIM') {\n const currentGroupIds: Set<string> = new Set<string>();\n\n (filteredRoleAssignments as SCIMRoleAssignment[]).forEach((roleAssignment) => {\n currentGroupIds.add(roleAssignment.groupId);\n });\n\n scimGroupIds.forEach((id) => {\n if (!currentGroupIds.has(id)) {\n mergedRoleAssignments.push({\n source: selectedSource,\n displayName: scimConnection?.display_name ?? '',\n groupId: id,\n groupName: allScimGroupIdToGroupName[id],\n });\n }\n });\n }\n if (mergedRoleAssignments.length !== remoteRoleAssignments.length) {\n return {\n ...state,\n idMap: {\n ...state.idMap,\n [roleId]: mergedRoleAssignments,\n },\n };\n }\n return state;\n });\n });\n\n const showInputContent = !!selectedRole && !!selectedSource;\n const disableConfirm =\n !showInputContent ||\n (selectedSource === 'Email' && emailDomain.length === 0) ||\n (selectedSource === 'SSO' && ssoRoleAssignments.every((connection) => !connection.id));\n\n const roleAutocompleteProps = useRoleAutocomplete({ includeOrgRoles: canViewCustomOrgRoles });\n const roleSelectItems = roleAutocompleteProps.selectItems.map((roleId) => ({\n label: roleAutocompleteProps.getOptionLabel(roleId),\n value: roleId,\n subtext: roleAutocompleteProps.getOptionDescription(roleId),\n }));\n\n const ssoGroupSelectItems = useMemo(\n () =>\n ssoConnections.map(({ connection_id: id, display_name: displayName }) => ({\n label: displayName,\n value: id,\n })),\n [ssoConnections],\n );\n\n const scimGroupSelectItems = useMemo(() => Object.keys(allScimGroupIdToGroupName), [allScimGroupIdToGroupName]);\n\n const sourceToInputContentMap: Record<Source, JSX.Element> = {\n Email: (\n <>\n <SettingsSection title=\"Email Domain\">\n <Typography variant=\"body2\">\n Separate domains by a single space to assign to multiple email domains.\n </Typography>\n <Input label=\"Domain\" fullWidth value={emailDomain} onChange={setEmailDomain} />\n </SettingsSection>\n </>\n ),\n SSO: (\n <>\n <SettingsSection title=\"SSO\">\n <Typography variant=\"body2\">\n Enter a Group name to assign a Role at the Group level, or leave blank to assign at the SSO connection\n level. If assigning group Roles to an external connection, ensure a "groups" key exists in the\n external connection Attribute Mapping.\n </Typography>\n\n {ssoRoleAssignments.map(({ id, group }, index) => {\n const isValidConnection = !!id;\n const connectionHasGroupMapping = !!idToHasGroupAttributeMapping[id];\n const isValidConnectionWithGroupMapping = isValidConnection && connectionHasGroupMapping;\n\n const disableGroupInput = !isValidConnectionWithGroupMapping;\n const groupInputPlaceholder =\n isValidConnection && !connectionHasGroupMapping ? 'Add a \"groups\" key first' : 'Enter or leave blank';\n const groupInputCaption =\n isValidConnection && !connectionHasGroupMapping\n ? 'Add a \"groups\" key in the SSO Attribute Mapping first to assign group roles.'\n : undefined;\n return (\n <FlexBox key={index} flexDirection=\"row\" gap={2}>\n <Select\n label=\"Connection Display Name\"\n width={250}\n placeholder=\"Select\"\n selectItems={selectedRole ? ssoGroupSelectItems : []}\n value={id}\n onChange={(val) => {\n setSsoRoleAssignments((connections) => {\n return connections.map((connection, currentIndex) => {\n if (currentIndex === index) {\n return {\n ...connection,\n id: val,\n };\n }\n return connection;\n });\n });\n }}\n />\n <Input\n label=\"Group name\"\n value={group}\n disabled={disableGroupInput}\n placeholder={groupInputPlaceholder}\n caption={groupInputCaption}\n onChange={(val) => {\n setSsoRoleAssignments((connections) => {\n return connections.map((connection, currentIndex) => {\n if (currentIndex === index) {\n return {\n ...connection,\n group: val,\n id: id,\n hasGroupAttributeMapping: idToHasGroupAttributeMapping[id],\n };\n }\n return connection;\n });\n });\n }}\n />\n </FlexBox>\n );\n })}\n <Button\n variant=\"text\"\n startIcon={<AddIcon />}\n compact\n onClick={() => {\n setSsoRoleAssignments((connections) => {\n return [\n ...connections,\n {\n id: '',\n group: '',\n },\n ];\n });\n }}\n >\n Add SSO Role assignment\n </Button>\n </SettingsSection>\n </>\n ),\n SCIM: (\n <SettingsSection title=\"SCIM Groups\">\n <Autocomplete\n label=\"Group name\"\n selectItems={scimGroupSelectItems}\n value={scimGroupIds}\n getOptionLabel={(value) => allScimGroupIdToGroupName[value]}\n onChange={(value) => {\n setScimGroupIds(() => value);\n }}\n />\n </SettingsSection>\n ),\n };\n return (\n <FlexBox flexDirection=\"column\" gap={1}>\n <Modal\n {...addRoleAssignmentModalProps}\n title=\"Add Role assignment\"\n confirmButtonText=\"Save\"\n disableConfirm={disableConfirm}\n close={() => {\n addRoleAssignmentModalProps.close();\n setSelectedRole(null);\n setSelectedSource(null);\n setEmailDomain('');\n setSsoRoleAssignments([\n {\n id: '',\n group: '',\n },\n ]);\n }}\n >\n <FlexBox flexDirection=\"column\" gap={2}>\n <Select\n label=\"Select Role\"\n selectItems={roleSelectItems}\n value={selectedRole}\n onChange={(val) => {\n setSelectedRole(val);\n }}\n placeholder=\"Select Role\"\n />\n <Select\n label=\"Select Source\"\n selectItems={sourceSelectItems}\n value={selectedSource}\n placeholder=\"Select Source\"\n onChange={(val) => {\n setSelectedSource(val);\n }}\n />\n {showInputContent && (\n <>\n <Divider />\n {sourceToInputContentMap[selectedSource!]}\n </>\n )}\n </FlexBox>\n </Modal>\n <Typography variant=\"body2\" color=\"secondary\">\n {\n \"Configure automatic granting and revoking of roles based on the member's email domain, SCIM Group membership, or SSO Connection.\"\n }\n </Typography>\n {editing && (\n <FlexBox justifyContent=\"flex-start\">\n <Button variant=\"text\" startIcon={<AddIcon />} compact={true} onClick={addRoleAssignmentModalProps.open}>\n Add Role assignment\n </Button>\n </FlexBox>\n )}\n {rolesWithAssignments.length > 0 ? (\n <Table\n titleVariant=\"caption\"\n itemRenderer={itemRenderers}\n items={rolesWithAssignments}\n rowKeyExtractor={roleAssigmnentsKeyExtractor}\n openIds={roleOpenIds}\n onOpenChange={({ id, open }) => {\n setRoleOpenIds((prev) => {\n const newRoleOpenIds = new Set(prev);\n if (open) {\n newRoleOpenIds.add(id);\n } else {\n newRoleOpenIds.delete(id);\n }\n return newRoleOpenIds;\n });\n }}\n ExpandedContent={({ data: role }) => {\n return (\n <RoleTable\n role={role}\n editing={editing}\n setLocalState={setLocalState}\n localState={localState}\n remoteState={remoteState}\n isSsoEnabled={isSsoEnabled}\n isScimEnabled={isScimEnabled}\n />\n );\n }}\n />\n ) : (\n <Typography variant=\"body2\">No role assignments.</Typography>\n )}\n </FlexBox>\n );\n};\nconst sortByKeyAndValue = <T extends Record<string, string>>(array: T[], sortKey: string) => {\n const sortedByKeys = [...array].sort((a, b) => a[sortKey].localeCompare(b[sortKey]));\n\n // Then, sort the keys and values within each object\n return sortedByKeys.map((obj) => {\n return Object.fromEntries(\n Object.entries(obj).sort(([keyA, valA], [keyB, valB]) => {\n return keyA.localeCompare(keyB) || valA.localeCompare(valB);\n }),\n );\n });\n};\ntype RbacEmailRoleAssignment = { role_id: string; domain: string };\n\nexport const OrgSettingsRoleAssignmentsSection = ({ orgInfo }: { orgInfo: Organization }) => {\n const { data: adminPortalConfig } = useAdminPortalConfig({ shouldFetch: true });\n const { data: canSetRoles } = useRbac('stytch.organization', 'update.settings.implicit-roles');\n const { data: canGetSsoPerm } = useRbac('stytch.sso', 'get');\n const { data: canGetScimPerm } = useRbac('stytch.scim', 'get');\n const { data: canGetOrgCustomRoles } = useRbac('stytch.custom-org-roles', 'get');\n const isSsoEnabled = adminPortalConfig?.sso_config.sso_enabled ?? false;\n const isScimEnabled = adminPortalConfig?.scim_config.scim_enabled ?? false;\n\n const canGetSso = (isSsoEnabled && canGetSsoPerm) ?? false;\n const canGetScim = (isScimEnabled && canGetScimPerm) ?? false;\n\n const { data: ssoConnections, isLoading: isLoadingSso } = useSsoConnections({\n shouldFetch: canGetSso && !!canSetRoles,\n });\n const { data: scimConnection, isLoading: isLoadingScim } = useScimConnection({\n shouldFetch: canGetScim && !!canSetRoles,\n });\n const { data: scimConnectionGroups, isLoading: isLoadingScimGroups } = useScimConnectionGroups({\n shouldFetch: canGetScim && !!canSetRoles,\n });\n\n const roles = useRoles(canGetOrgCustomRoles);\n const sortRoles = useRoleSortFn();\n const sortedRoles = useMemo(() => sortRoles(roles ?? []), [roles, sortRoles]);\n\n const rbacEmails = orgInfo.rbac_email_implicit_role_assignments;\n const taggedConnections: (SAMLTaggedConnection | ExternalTaggedConnection)[] = useMemo(\n () => [\n ...(ssoConnections?.saml_connections.map((c) => ({ ...c, connectionType: 'saml' as const })) ?? []),\n ...(ssoConnections?.external_connections.map((c) => ({ ...c, connectionType: 'external' as const })) ?? []),\n ],\n [ssoConnections?.external_connections, ssoConnections?.saml_connections],\n );\n const taggedConnectionsById = useMemo(\n () =>\n taggedConnections.reduce<Record<string, SAMLTaggedConnection | ExternalTaggedConnection>>((acc, val) => {\n acc[val.connection_id] = val;\n return acc;\n }, {}),\n [taggedConnections],\n );\n const allScimGroups = scimConnectionGroups?.scim_groups ?? [];\n const allScimGroupIdToGroupName = allScimGroups.reduce(\n (acc, val) => {\n acc[val.group_id] = val.group_name;\n return acc;\n },\n {} as Record<string, string>,\n );\n const { setOrgEmailAssignments } = useMutateRoleAssignments();\n const { mutate: mutateSamlConnection } = useMutateSsoConnection('saml');\n const { mutate: mutateExternalConnection } = useMutateSsoConnection('external');\n const { mutate: mutateScimConnection } = useMutateScimConnectionRoleAssignments();\n const idMap = useMemo(() => {\n const idToRoleAssignments: IdToRoleAssignments = {};\n sortedRoles.forEach((role) => {\n idToRoleAssignments[role.role_id] = [];\n });\n\n taggedConnections.forEach((connection) => {\n const connectionRoleAssignments = getSsoConnectionRoleAssignments(connection);\n const groupRoleAssignments = getSsoGroupRoleAssignments(connection);\n\n connectionRoleAssignments.forEach((implicitRole) => {\n const role = implicitRole.role_id;\n if (!idToRoleAssignments[role]) {\n idToRoleAssignments[role] = [];\n }\n idToRoleAssignments[role].push({\n source: 'SSO',\n displayName: connection.display_name,\n id: connection.connection_id,\n group: '',\n });\n });\n\n groupRoleAssignments.forEach((implicitRole) => {\n const role = implicitRole.role_id;\n if (!idToRoleAssignments[role]) {\n idToRoleAssignments[role] = [];\n }\n\n idToRoleAssignments[role].push({\n source: 'SSO',\n displayName: connection.display_name,\n id: connection.connection_id,\n group: implicitRole.group,\n });\n });\n });\n\n rbacEmails?.forEach((rbacEmail) => {\n const role = rbacEmail.role_id;\n if (!idToRoleAssignments[role]) {\n idToRoleAssignments[role] = [];\n }\n idToRoleAssignments[role].push({\n source: 'Email',\n displayName: rbacEmail.domain,\n });\n });\n\n scimConnection?.scim_group_implicit_role_assignments.forEach((implicitRole) => {\n const role = implicitRole.role_id;\n if (!idToRoleAssignments[role]) {\n idToRoleAssignments[role] = [];\n }\n idToRoleAssignments[role].push({\n source: 'SCIM',\n displayName: scimConnection.display_name,\n groupId: implicitRole.group_id,\n groupName: allScimGroupIdToGroupName[implicitRole.group_id],\n });\n });\n\n return idToRoleAssignments;\n }, [\n allScimGroupIdToGroupName,\n taggedConnections,\n rbacEmails,\n scimConnection?.display_name,\n scimConnection?.scim_group_implicit_role_assignments,\n sortedRoles,\n ]);\n\n const remoteState: RoleAssignmentsFormState = {\n idMap: idMap,\n };\n const { localState, setLocalState, editing, handleSetEditing } = useFormState({ remoteState });\n const { useBlockNavigation } = useOrgSettingsRouterController();\n\n const { hasUpdatedEmails, updatedEmailRoleAssignments } = useMemo(() => {\n const remoteEmails = orgInfo.rbac_email_implicit_role_assignments ?? [];\n const localEmails = Object.entries(localState.idMap).reduce<RbacEmailRoleAssignment[]>(\n (acc, [roleId, roleAssignments]) => {\n roleAssignments.forEach((roleAssignment) => {\n if (roleAssignment.source === 'Email') {\n acc.push({\n role_id: roleId,\n domain: roleAssignment.displayName,\n });\n }\n });\n return acc;\n },\n [],\n );\n\n const sortedLocalEmails = sortByKeyAndValue(localEmails, 'domain');\n const sortedRemoteEmails = sortByKeyAndValue(remoteEmails ?? [], 'domain');\n\n const isSame = arraysHaveSameContents(sortedLocalEmails, sortedRemoteEmails);\n const updatedEmailRoleAssignments = isSame ? [] : sortedLocalEmails;\n\n return {\n hasUpdatedEmails: !isSame,\n updatedEmailRoleAssignments: updatedEmailRoleAssignments as RbacEmailRoleAssignment[],\n };\n }, [localState.idMap, orgInfo.rbac_email_implicit_role_assignments]);\n\n const { hasUpdatedSso, updatedSsoRoleAssignments } = useMemo(() => {\n const remoteAssignments: Record<string, SSORoleAssignmentInfo> = {};\n const localAssignments: Record<string, SSORoleAssignmentInfo> = {};\n\n taggedConnections?.forEach((connection) => {\n remoteAssignments[connection.connection_id] = {\n connectionRoleAssignments: getSsoConnectionRoleAssignments(connection),\n groupRoleAssignments: getSsoGroupRoleAssignments(connection),\n };\n localAssignments[connection.connection_id] = { connectionRoleAssignments: [], groupRoleAssignments: [] };\n });\n\n // Mutate the local SAML connections with role assignments from the local state\n Object.entries(localState.idMap).forEach(([roleId, roleAssignments]) => {\n roleAssignments.forEach((roleAssignment) => {\n if (roleAssignment.source === 'SSO') {\n const connectionId = roleAssignment.id;\n\n if (roleAssignment.group) {\n localAssignments[connectionId].groupRoleAssignments.push({\n role_id: roleId,\n group: roleAssignment.group,\n });\n } else {\n localAssignments[connectionId].connectionRoleAssignments.push({\n role_id: roleId,\n });\n }\n }\n });\n });\n\n const updatedSsoRoleAssignments: Record<string, SSORoleAssignmentInfo> = {};\n\n // Compare the local and remote SSO connections to determine which connections need to be updated\n Object.entries(localAssignments).map(([connectionId, localConnection]) => {\n const remoteConnection = remoteAssignments[connectionId];\n\n const localImplicitRoleAssignments = localConnection.connectionRoleAssignments.map((val) => val.role_id);\n const remoteImplicitRoleAssignments = remoteConnection.connectionRoleAssignments.map((val) => val.role_id);\n\n const localGroupImplicitRoleAssignments = sortByKeyAndValue(localConnection.groupRoleAssignments, 'group');\n const remoteGroupImplicitRoleAssignments = sortByKeyAndValue(remoteConnection.groupRoleAssignments, 'group');\n\n if (\n !arraysHaveSameContents(localImplicitRoleAssignments, remoteImplicitRoleAssignments) ||\n !arraysHaveSameContents(localGroupImplicitRoleAssignments, remoteGroupImplicitRoleAssignments)\n ) {\n updatedSsoRoleAssignments[connectionId] = localConnection;\n }\n });\n\n return {\n hasUpdatedSso: Object.keys(updatedSsoRoleAssignments).length > 0,\n updatedSsoRoleAssignments: updatedSsoRoleAssignments,\n };\n }, [localState.idMap, taggedConnections]);\n\n const { hasUpdatedScimGroups, updatedScimRoleAssignments } = useMemo(() => {\n const remoteScimGroups: SCIMGroupRoleAssignments = scimConnection?.scim_group_implicit_role_assignments ?? [];\n const localScimGroups: SCIMGroupRoleAssignments = Object.entries(localState.idMap).reduce(\n (acc, [roleId, roleAssignments]) => {\n roleAssignments.forEach((roleAssignment) => {\n if (roleAssignment.source === 'SCIM') {\n acc.push({\n role_id: roleId,\n group_id: roleAssignment.groupId,\n });\n }\n });\n return acc;\n },\n [] as SCIMGroupRoleAssignments,\n );\n\n const isSame = arraysHaveSameContents(localScimGroups, remoteScimGroups);\n const updatedScimRoleAssignments = isSame ? [] : localScimGroups;\n\n return {\n hasUpdatedScimGroups: !isSame,\n updatedScimRoleAssignments: updatedScimRoleAssignments,\n };\n }, [localState.idMap, scimConnection]);\n\n const handleSave = async () => {\n if (hasUpdatedEmails) {\n await setOrgEmailAssignments(updatedEmailRoleAssignments);\n }\n\n await Promise.all(\n Object.entries(updatedSsoRoleAssignments).map(async ([connectionId, ssoRoleAssignment]) => {\n const connection = taggedConnectionsById[connectionId];\n if (!connection) {\n return;\n }\n\n if (connection.connectionType === 'saml') {\n await mutateSamlConnection({\n connection_id: connectionId,\n saml_connection_implicit_role_assignments: ssoRoleAssignment.connectionRoleAssignments,\n saml_group_implicit_role_assignments: ssoRoleAssignment.groupRoleAssignments,\n });\n } else {\n await mutateExternalConnection({\n connection_id: connectionId,\n external_connection_implicit_role_assignments: ssoRoleAssignment.connectionRoleAssignments,\n external_group_implicit_role_assignments: ssoRoleAssignment.groupRoleAssignments,\n });\n }\n }),\n );\n\n if (scimConnection && hasUpdatedScimGroups) {\n await mutateScimConnection({\n connection_id: scimConnection.connection_id,\n scim_group_implicit_role_assignments: updatedScimRoleAssignments,\n });\n }\n };\n\n if (isLoadingSso || isLoadingScim || isLoadingScimGroups) {\n return <PageLoadingIndicator />;\n }\n\n const disableSave = !hasUpdatedEmails && !hasUpdatedSso && !hasUpdatedScimGroups;\n\n return (\n <SettingsContainer\n title=\"Automatic Role assignments\"\n hasCTA={canSetRoles}\n onSave={handleSave}\n useBlockNavigation={useBlockNavigation}\n editing={editing}\n setEditing={handleSetEditing}\n disableSave={disableSave}\n >\n <OrgSettingsRoleAssignmentsBody\n editing={editing}\n remoteState={remoteState}\n localState={localState}\n setLocalState={setLocalState}\n ssoConnections={taggedConnections}\n roles={sortedRoles}\n isSsoEnabled={isSsoEnabled}\n isScimEnabled={isScimEnabled}\n canViewCustomOrgRoles={canGetOrgCustomRoles ?? false}\n allScimGroupIdToGroupName={allScimGroupIdToGroupName}\n scimConnection={scimConnection}\n />\n </SettingsContainer>\n );\n};\n"],"names":["roleAssignmentsItemRenderers","idMap","rolesById","title","getValue","role","React","FlexBox","flexDirection","alignItems","Tag","role_id","displayName","Typography","variant","String","length","roleAssigmnentsKeyExtractor","roleItemRendererer","value","source","group","groupName","roleKeyExtractor","useMutateRoleAssignments","mutate","useMutateOrganization","setOrgEmailAssignments","emails","rbac_email_implicit_role_assignments","errorMessage","RoleTable","localState","remoteState","editing","setLocalState","isSsoEnabled","isScimEnabled","roleId","items","TableContainer","component","Paper","Table","itemRenderer","rowKeyExtractor","disableBottomBorder","titleVariant","getItemActionProps","roleAssignment","warningAction","text","onClick","state","assignments","filter","item","undefined","filterRoleAssignmentsBy","arr","slice","val","OrgSettingsRoleAssignmentsBody","ssoConnections","roles","canViewCustomOrgRoles","allScimGroupIdToGroupName","scimConnection","rolesWithAssignments","useRolesById","itemRenderers","selectedRole","setSelectedRole","useState","selectedSource","setSelectedSource","emailDomain","setEmailDomain","ssoRoleAssignments","setSsoRoleAssignments","id","scimGroupIds","setScimGroupIds","roleOpenIds","setRoleOpenIds","Set","idToHasGroupAttributeMapping","reduce","acc","connection","connection_id","connectionType","attribute_mapping","groups","sourceItems","add","Object","keys","sourceSelectItems","Array","from","map","label","addRoleAssignmentModalProps","useModalState","prev","concat","remoteRoleAssignments","mergedRoleAssignments","filteredRoleAssignments","domains","forEach","uniqueValuesSplitOnSpaces","input","domain","has","push","ssoConnection","connectionId","trim","some","find","display_name","currentGroupIds","groupId","showInputContent","disableConfirm","every","roleAutocompleteProps","useRoleAutocomplete","includeOrgRoles","roleSelectItems","selectItems","getOptionLabel","subtext","getOptionDescription","ssoGroupSelectItems","useMemo","scimGroupSelectItems","sourceToInputContentMap","Email","SettingsSection","Input","fullWidth","onChange","SSO","index","isValidConnection","connectionHasGroupMapping","isValidConnectionWithGroupMapping","disableGroupInput","groupInputPlaceholder","groupInputCaption","key","gap","Select","width","placeholder","connections","currentIndex","disabled","caption","hasGroupAttributeMapping","Button","startIcon","AddIcon","compact","SCIM","Autocomplete","Modal","confirmButtonText","close","Divider","color","justifyContent","open","openIds","onOpenChange","newRoleOpenIds","delete","ExpandedContent","data","sortByKeyAndValue","array","sortKey","sortedByKeys","sort","a","b","localeCompare","obj","fromEntries","entries","keyA","valA","keyB","valB","OrgSettingsRoleAssignmentsSection","orgInfo","adminPortalConfig","useAdminPortalConfig","shouldFetch","canSetRoles","useRbac","canGetSsoPerm","canGetScimPerm","canGetOrgCustomRoles","sso_config","sso_enabled","scim_config","scim_enabled","canGetSso","canGetScim","isLoading","isLoadingSso","useSsoConnections","isLoadingScim","useScimConnection","scimConnectionGroups","isLoadingScimGroups","useScimConnectionGroups","useRoles","sortRoles","useRoleSortFn","sortedRoles","rbacEmails","taggedConnections","saml_connections","c","external_connections","taggedConnectionsById","allScimGroups","scim_groups","group_id","group_name","mutateSamlConnection","useMutateSsoConnection","mutateExternalConnection","mutateScimConnection","useMutateScimConnectionRoleAssignments","idToRoleAssignments","connectionRoleAssignments","getSsoConnectionRoleAssignments","groupRoleAssignments","getSsoGroupRoleAssignments","implicitRole","rbacEmail","scim_group_implicit_role_assignments","handleSetEditing","useFormState","useBlockNavigation","useOrgSettingsRouterController","hasUpdatedEmails","updatedEmailRoleAssignments","remoteEmails","localEmails","roleAssignments","sortedLocalEmails","sortedRemoteEmails","isSame","arraysHaveSameContents","hasUpdatedSso","updatedSsoRoleAssignments","remoteAssignments","localAssignments","localConnection","remoteConnection","localImplicitRoleAssignments","remoteImplicitRoleAssignments","localGroupImplicitRoleAssignments","remoteGroupImplicitRoleAssignments","hasUpdatedScimGroups","updatedScimRoleAssignments","remoteScimGroups","localScimGroups","handleSave","Promise","all","ssoRoleAssignment","saml_connection_implicit_role_assignments","saml_group_implicit_role_assignments","external_connection_implicit_role_assignments","external_group_implicit_role_assignments","PageLoadingIndicator","disableSave","SettingsContainer","hasCTA","onSave","setEditing"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoEA,MAAMA,4BAAAA,GAA+B,CACnCC,KAAAA,EACAC,SAAAA,GACG;AACH,QAAA;YACEC,KAAAA,EAAO,MAAA;AACPC,YAAAA,QAAAA,EAAU,CAACC,IAAAA,GAAAA;AACT,gBAAA,qBACEC,cAAA,CAAA,aAAA,CAACC,OAAAA,EAAAA;oBAAQC,aAAAA,EAAc,KAAA;oBAAMC,UAAAA,EAAW;iCACtCH,cAAA,CAAA,aAAA,CAACI,GAAAA,EAAAA,IAAAA,EAAKR,SAAAA,GAAYG,IAAAA,CAAKM,OAAO,CAAC,EAAEC,WAAAA,IAAeP,IAAAA,CAAKM,OAAO,CAAA,gBAC5DL,cAAA,CAAA,aAAA,CAACO,UAAAA,EAAAA;oBAAWC,OAAAA,EAAQ;AAAS,iBAAA,EAAA,CAAC,CAAC,EAAEC,MAAAA,CAAOd,KAAK,CAACI,IAAAA,CAAKM,OAAO,CAAC,EAAEK,MAAAA,IAAU,CAAA,CAAA,CAAG,CAAC,CAAC,CAAA,CAAA;AAGlF,YAAA;AACF;AACD,KAAA;AACD,MAAMC,2BAAAA,GAA8B,CAACZ,IAAAA,GAAiCA,IAAAA,CAAKM,OAAO;AAuBlF,MAAMO,kBAAAA,GAA0D;AAC9D,IAAA;QACEf,KAAAA,EAAO,QAAA;AACPC,QAAAA,QAAAA,EAAU,CAACe,KAAAA,GAAAA;AACT,YAAA,qBAAOb,cAAA,CAAA,aAAA,CAACO,UAAAA,EAAAA;gBAAWC,OAAAA,EAAQ;AAASK,aAAAA,EAAAA,KAAAA,CAAMC,MAAM,CAAA;AAClD,QAAA;AACF,KAAA;AACA,IAAA;QACEjB,KAAAA,EAAO,aAAA;AACPC,QAAAA,QAAAA,EAAU,CAACe,KAAAA,GAAAA;AACT,YAAA,qBAAOb,cAAA,CAAA,aAAA,CAACO,UAAAA,EAAAA;gBAAWC,OAAAA,EAAQ;AAASK,aAAAA,EAAAA,KAAAA,CAAMP,WAAW,CAAA;AACvD,QAAA;AACF,KAAA;AACA,IAAA;QACET,KAAAA,EAAO,OAAA;AACPC,QAAAA,QAAAA,EAAU,CAACe,KAAAA,GAAAA;AACT,YAAA,qBACEb,cAAA,CAAA,aAAA,CAACO,UAAAA,EAAAA;gBAAWC,OAAAA,EAAQ;AACjBK,aAAAA,EAAAA,KAAAA,CAAMC,MAAM,KAAK,KAAA,GAAQD,KAAAA,CAAME,KAAK,GAAGF,KAAAA,CAAMC,MAAM,KAAK,MAAA,GAASD,KAAAA,CAAMG,SAAS,GAAG,EAAA,CAAA;AAG1F,QAAA;AACF;AACD,CAAA;AACD,MAAMC,gBAAAA,GAAmB,CAAClB,IAAAA,GAAiCA,IAAAA,CAAKO,WAAW;AAE3E,MAAMY,wBAAAA,GAA2B,IAAA;IAC/B,MAAM,EAAEC,MAAM,EAAE,GAAGC,qBAAAA,EAAAA;AAEnB,IAAA,MAAMC,yBAAyB,CAACC,MAAAA,GAAAA;AAC9B,QAAA,OAAOH,MAAAA,CACL;YACEI,oCAAAA,EAAsCD;SACxC,EACA;YACEE,YAAAA,EAAc;AAChB,SAAA,CAAA;AAEJ,IAAA,CAAA;IAEA,OAAO;AAAEH,QAAAA;AAAuB,KAAA;AAClC,CAAA;AACA,MAAMI,YAAY,CAAC,EACjBC,UAAU,EACVC,WAAW,EACXC,OAAO,EACPC,aAAa,EACb9B,IAAI,EACJ+B,YAAY,EACZC,aAAa,EACE,GAAA;IACf,MAAMC,MAAAA,GAASjC,KAAKM,OAAO;IAC3B,MAAM4B,KAAAA,GAAQ,CAACL,OAAAA,GAAUF,UAAAA,GAAaC,WAAU,EAAGhC,KAAK,CAACqC,MAAAA,CAAO,IAAI,EAAE;AAEtE,IAAA,qBACEhC,cAAA,CAAA,aAAA,CAACkC,cAAAA,EAAAA;QAAeC,SAAAA,EAAWC,KAAAA;QAAO5B,OAAAA,EAAS;qBACzCR,cAAA,CAAA,aAAA,CAACqC,KAAAA,EAAAA;QACCC,YAAAA,EAAc1B,kBAAAA;QACdqB,KAAAA,EAAOA,KAAAA;QACPM,eAAAA,EAAiBtB,gBAAAA;QACjBuB,mBAAAA,EAAqB,IAAA;QACrBC,YAAAA,EAAa,SAAA;QACbC,kBAAAA,EACEd,OAAAA,GACI,CAACe,cAAAA,IAAoB;AACnBC,gBAAAA,aAAAA,EACED,cAAAA,CAAe7B,MAAM,KAAK,OAAA,IACzB6B,cAAAA,CAAe7B,MAAM,KAAK,KAAA,IAASgB,YAAAA,IACnCa,cAAAA,CAAe7B,MAAM,KAAK,UAAUiB,aAAAA,GACjC;oBACEc,IAAAA,EAAM,QAAA;oBACNC,OAAAA,EAAS,IAAA;AACPjB,wBAAAA,aAAAA,CAAc,CAACkB,KAAAA,GAAAA;4BACb,MAAMC,WAAAA,GAAcD,KAAAA,CAAMpD,KAAK,CAACqC,MAAAA,CAAO,CAACiB,MAAM,CAAC,CAACC,IAAAA,GAASA,IAAAA,KAASP,cAAAA,CAAAA;4BAClE,OAAO;AACL,gCAAA,GAAGI,KAAK;gCACRpD,KAAAA,EAAO;AACL,oCAAA,GAAGoD,MAAMpD,KAAK;AACd,oCAAA,CAACqC,SAASgB;AACZ;AACF,6BAAA;AACF,wBAAA,CAAA,CAAA;AACF,oBAAA;iBACF,GACAG;AACR,aAAA,CAAA,GACAA;;AAKd,CAAA;AAMA,MAAMC,uBAAAA,GAA0B,CAACC,GAAAA,EAAuB,EAAEvC,MAAM,EAAsB,GAAA;IACpF,OAAOuC,GAAAA,CAAIC,KAAK,EAAA,CAAGL,MAAM,CAAC,CAACM,GAAAA,GAAQA,GAAAA,CAAIzC,MAAM,KAAKA,MAAAA,CAAAA;AACpD,CAAA;AAYA,MAAM0C,8BAAAA,GAAiC,CAAC,EACtC5B,OAAO,EACP6B,cAAc,EACdC,KAAK,EACLhC,UAAU,EACVC,WAAW,EACXE,aAAa,EACbC,YAAY,EACZC,aAAa,EACb4B,qBAAqB,EACrBC,yBAAyB,EACzBC,cAAc,EACsB,GAAA;AACpC,IAAA,MAAMlE,QAAQ,CAACiC,UAAUF,UAAAA,GAAaC,WAAU,EAAGhC,KAAK;AACxD,IAAA,MAAMmE,oBAAAA,GAAuBJ,KAAAA,CAAMT,MAAM,CAAC,CAAClD,IAAAA,GAASJ,KAAK,CAACI,IAAAA,CAAKM,OAAO,CAAC,CAACK,MAAM,GAAG,CAAA,CAAA;AACjF,IAAA,MAAMd,SAAAA,GAAYmE,YAAAA,EAAAA;IAClB,MAAMC,aAAAA,GAAgBtE,6BAA6BC,KAAAA,EAAOC,SAAAA,CAAAA;AAE1D,IAAA,MAAM,CAACqE,YAAAA,EAAcC,eAAAA,CAAgB,GAAGC,QAAAA,CAAwB,IAAA,CAAA;AAChE,IAAA,MAAM,CAACC,cAAAA,EAAgBC,iBAAAA,CAAkB,GAAGF,QAAAA,CAAwB,IAAA,CAAA;AAEpE,IAAA,MAAM,CAACG,WAAAA,EAAaC,cAAAA,CAAe,GAAGJ,QAAAA,CAAS,EAAA,CAAA;AAC/C,IAAA,MAAM,CAACK,kBAAAA,EAAoBC,qBAAAA,CAAsB,GAAGN,QAAAA,CAA6B;AAC/E,QAAA;YACEO,EAAAA,EAAI,EAAA;YACJ3D,KAAAA,EAAO;AACT;AACD,KAAA,CAAA;AACD,IAAA,MAAM,CAAC4D,YAAAA,EAAcC,eAAAA,CAAgB,GAAGT,SAAmB,EAAE,CAAA;AAE7D,IAAA,MAAM,CAACU,WAAAA,EAAaC,cAAAA,CAAe,GAAGX,SAAsB,IAAIY,GAAAA,EAAAA,CAAAA;AAEhE,IAAA,MAAMC,4BAAAA,GAA+BvB,cAAAA,CAAewB,MAAM,CAA0B,CAACC,GAAAA,EAAKC,UAAAA,GAAAA;AACxFD,QAAAA,GAAG,CAACC,UAAAA,CAAWC,aAAa,CAAC,GAAGD,UAAAA,CAAWE,cAAc,KAAK,MAAA,IAAU,CAAC,CAACF,UAAAA,CAAWG,iBAAiB,CAACC,MAAM;QAC7G,OAAOL,GAAAA;AACT,IAAA,CAAA,EAAG,EAAC,CAAA;IAEJ,MAAMM,WAAAA,GAAc,IAAIT,GAAAA,CAAY;AAAC,QAAA;AAAQ,KAAA,CAAA;AAC7C,IAAA,IAAIjD,YAAAA,IAAgB2B,cAAAA,CAAe/C,MAAM,GAAG,CAAA,EAAG;AAC7C8E,QAAAA,WAAAA,CAAYC,GAAG,CAAC,KAAA,CAAA;AAClB,IAAA;IACA,IAAI1D,aAAAA,IAAiB8B,kBAAkB6B,MAAAA,CAAOC,IAAI,CAAC/B,yBAAAA,CAAAA,CAA2BlD,MAAM,GAAG,CAAA,EAAG;AACxF8E,QAAAA,WAAAA,CAAYC,GAAG,CAAC,MAAA,CAAA;AAClB,IAAA;IAEA,MAAMG,iBAAAA,GAAoBC,MAAMC,IAAI,CAACN,aAAaO,GAAG,CAAC,CAACjF,MAAAA,IAAY;YACjEkF,KAAAA,EAAOlF,MAAAA;YACPD,KAAAA,EAAOC;SACT,CAAA,CAAA;AAEA,IAAA,MAAMmF,8BAA8BC,aAAAA,CAAc,IAAA;AAChD,QAAA,IAAI,CAAC9B,cAAAA,EAAgB;AAErB,QAAA,MAAMpC,MAAAA,GAASiC,YAAAA;QACfa,cAAAA,CAAe,CAACqB,IAAAA,GAAS,IAAIpB,GAAAA,CAAI;AAAIoB,gBAAAA,GAAAA;AAAK,aAAA,CAACC,MAAM,CAACpE,MAAAA,CAAAA,CAAAA,CAAAA;AAClDH,QAAAA,aAAAA,CAAc,CAACkB,KAAAA,GAAAA;AACb,YAAA,MAAMsD,qBAAAA,GAAwB;mBAAItD,KAAAA,CAAMpD,KAAK,CAACqC,MAAAA;AAAQ,aAAA;AACtD,YAAA,MAAMsE,qBAAAA,GAA0C;AAAID,gBAAAA,GAAAA;AAAsB,aAAA;YAE1E,MAAME,uBAAAA,GAA0BnD,wBAAwBiD,qBAAAA,EAAuB;gBAAEvF,MAAAA,EAAQsD;AAAe,aAAA,CAAA;AACxG,YAAA,IAAIA,mBAAmB,OAAA,EAAS;AAC9B,gBAAA,MAAMoC,UAAU,IAAIzB,GAAAA,EAAAA;gBAEnBwB,uBAAAA,CAAkDE,OAAO,CAAC,CAAC9D,cAAAA,GAAAA;oBAC1D6D,OAAAA,CAAQf,GAAG,CAAC9C,cAAAA,CAAerC,WAAW,CAAA;AACxC,gBAAA,CAAA,CAAA;gBACAoG,yBAAAA,CAA0B;oBAAEC,KAAAA,EAAOrC;iBAAY,CAAA,CAAGmC,OAAO,CAAC,CAACG,MAAAA,GAAAA;AACzD,oBAAA,IAAI,CAACJ,OAAAA,CAAQK,GAAG,CAACD,MAAAA,CAAAA,EAAS;AACxBJ,wBAAAA,OAAAA,CAAQf,GAAG,CAACmB,MAAAA,CAAAA;AACZN,wBAAAA,qBAAAA,CAAsBQ,IAAI,CAAC;4BACzBhG,MAAAA,EAAQsD,cAAAA;4BACR9D,WAAAA,EAAasG;AACf,yBAAA,CAAA;AACF,oBAAA;AACF,gBAAA,CAAA,CAAA;YACF,CAAA,MAAO,IAAIxC,mBAAmB,KAAA,EAAO;gBACnCI,kBAAAA,CAAmBiC,OAAO,CAAC,CAACM,aAAAA,GAAAA;oBAC1B,MAAMC,YAAAA,GAAeD,cAAcrC,EAAE;oBACrC,IAAIsC,YAAAA,CAAatG,MAAM,KAAK,CAAA,EAAG;AAC7B,wBAAA,MAAMK,KAAAA,GAAQgG,aAAAA,CAAchG,KAAK,CAACkG,IAAI,EAAA;AAEtC,wBAAA,IACE,CAACX,qBAAAA,CAAsBY,IAAI,CACzB,CAACvE,iBACCA,cAAAA,CAAe7B,MAAM,KAAK,KAAA,IAC1B6B,eAAe+B,EAAE,KAAKsC,gBACtBrE,cAAAA,CAAe5B,KAAK,KAAKA,KAAAA,CAAAA,EAE7B;AACAuF,4BAAAA,qBAAAA,CAAsBQ,IAAI,CAAC;gCACzBhG,MAAAA,EAAQsD,cAAAA;gCACR9D,WAAAA,EAAamD,cAAAA,CAAe0D,IAAI,CAAC,CAAC5D,MAAQA,GAAAA,CAAI6B,aAAa,KAAK4B,YAAAA,CAAAA,EAAeI,YAAAA,IAAgB,EAAA;AAC/F1C,gCAAAA,EAAAA,EAAIqC,cAAcrC,EAAE;AACpB3D,gCAAAA;AACF,6BAAA,CAAA;AACF,wBAAA;AACF,oBAAA;AACF,gBAAA,CAAA,CAAA;YACF,CAAA,MAAO,IAAIqD,mBAAmB,MAAA,EAAQ;AACpC,gBAAA,MAAMiD,kBAA+B,IAAItC,GAAAA,EAAAA;gBAExCwB,uBAAAA,CAAiDE,OAAO,CAAC,CAAC9D,cAAAA,GAAAA;oBACzD0E,eAAAA,CAAgB5B,GAAG,CAAC9C,cAAAA,CAAe2E,OAAO,CAAA;AAC5C,gBAAA,CAAA,CAAA;gBAEA3C,YAAAA,CAAa8B,OAAO,CAAC,CAAC/B,EAAAA,GAAAA;AACpB,oBAAA,IAAI,CAAC2C,eAAAA,CAAgBR,GAAG,CAACnC,EAAAA,CAAAA,EAAK;AAC5B4B,wBAAAA,qBAAAA,CAAsBQ,IAAI,CAAC;4BACzBhG,MAAAA,EAAQsD,cAAAA;AACR9D,4BAAAA,WAAAA,EAAauD,gBAAgBuD,YAAAA,IAAgB,EAAA;4BAC7CE,OAAAA,EAAS5C,EAAAA;4BACT1D,SAAAA,EAAW4C,yBAAyB,CAACc,EAAAA;AACvC,yBAAA,CAAA;AACF,oBAAA;AACF,gBAAA,CAAA,CAAA;AACF,YAAA;AACA,YAAA,IAAI4B,qBAAAA,CAAsB5F,MAAM,KAAK2F,qBAAAA,CAAsB3F,MAAM,EAAE;gBACjE,OAAO;AACL,oBAAA,GAAGqC,KAAK;oBACRpD,KAAAA,EAAO;AACL,wBAAA,GAAGoD,MAAMpD,KAAK;AACd,wBAAA,CAACqC,SAASsE;AACZ;AACF,iBAAA;AACF,YAAA;YACA,OAAOvD,KAAAA;AACT,QAAA,CAAA,CAAA;AACF,IAAA,CAAA,CAAA;AAEA,IAAA,MAAMwE,gBAAAA,GAAmB,CAAC,CAACtD,YAAAA,IAAgB,CAAC,CAACG,cAAAA;AAC7C,IAAA,MAAMoD,iBACJ,CAACD,gBAAAA,IACAnD,mBAAmB,OAAA,IAAWE,WAAAA,CAAY5D,MAAM,KAAK,CAAA,IACrD0D,cAAAA,KAAmB,KAAA,IAASI,mBAAmBiD,KAAK,CAAC,CAACtC,UAAAA,GAAe,CAACA,WAAWT,EAAE,CAAA;AAEtF,IAAA,MAAMgD,wBAAwBC,mBAAAA,CAAoB;QAAEC,eAAAA,EAAiBjE;AAAsB,KAAA,CAAA;IAC3F,MAAMkE,eAAAA,GAAkBH,sBAAsBI,WAAW,CAAC/B,GAAG,CAAC,CAAC/D,UAAY;YACzEgE,KAAAA,EAAO0B,qBAAAA,CAAsBK,cAAc,CAAC/F,MAAAA,CAAAA;YAC5CnB,KAAAA,EAAOmB,MAAAA;YACPgG,OAAAA,EAASN,qBAAAA,CAAsBO,oBAAoB,CAACjG,MAAAA;SACtD,CAAA,CAAA;AAEA,IAAA,MAAMkG,mBAAAA,GAAsBC,OAAAA,CAC1B,IACE1E,cAAAA,CAAesC,GAAG,CAAC,CAAC,EAAEX,aAAAA,EAAeV,EAAE,EAAE0C,YAAAA,EAAc9G,WAAW,EAAE,IAAM;gBACxE0F,KAAAA,EAAO1F,WAAAA;gBACPO,KAAAA,EAAO6D;AACT,aAAA,CAAA,CAAA,EACF;AAACjB,QAAAA;AAAe,KAAA,CAAA;AAGlB,IAAA,MAAM2E,uBAAuBD,OAAAA,CAAQ,IAAMzC,MAAAA,CAAOC,IAAI,CAAC/B,yBAAAA,CAAAA,EAA4B;AAACA,QAAAA;AAA0B,KAAA,CAAA;AAE9G,IAAA,MAAMyE,uBAAAA,GAAuD;AAC3DC,QAAAA,KAAAA,gBACEtI,0EACEA,cAAA,CAAA,aAAA,CAACuI,eAAAA,EAAAA;YAAgB1I,KAAAA,EAAM;yBACrBG,cAAA,CAAA,aAAA,CAACO,UAAAA,EAAAA;YAAWC,OAAAA,EAAQ;AAAQ,SAAA,EAAA,yEAAA,CAAA,gBAG5BR,cAAA,CAAA,aAAA,CAACwI,KAAAA,EAAAA;YAAMxC,KAAAA,EAAM,QAAA;YAASyC,SAAAA,EAAAA,IAAAA;YAAU5H,KAAAA,EAAOyD,WAAAA;YAAaoE,QAAAA,EAAUnE;;AAIpEoE,QAAAA,GAAAA,gBACE3I,0EACEA,cAAA,CAAA,aAAA,CAACuI,eAAAA,EAAAA;YAAgB1I,KAAAA,EAAM;yBACrBG,cAAA,CAAA,aAAA,CAACO,UAAAA,EAAAA;YAAWC,OAAAA,EAAQ;WAAQ,8OAAA,CAAA,EAM3BgE,kBAAAA,CAAmBuB,GAAG,CAAC,CAAC,EAAErB,EAAE,EAAE3D,KAAK,EAAE,EAAE6H,KAAAA,GAAAA;YACtC,MAAMC,iBAAAA,GAAoB,CAAC,CAACnE,EAAAA;AAC5B,YAAA,MAAMoE,yBAAAA,GAA4B,CAAC,CAAC9D,4BAA4B,CAACN,EAAAA,CAAG;AACpE,YAAA,MAAMqE,oCAAoCF,iBAAAA,IAAqBC,yBAAAA;AAE/D,YAAA,MAAME,oBAAoB,CAACD,iCAAAA;AAC3B,YAAA,MAAME,qBAAAA,GACJJ,iBAAAA,IAAqB,CAACC,yBAAAA,GAA4B,0BAAA,GAA6B,sBAAA;AACjF,YAAA,MAAMI,iBAAAA,GACJL,iBAAAA,IAAqB,CAACC,yBAAAA,GAClB,8EAAA,GACA3F,SAAAA;AACN,YAAA,qBACEnD,cAAA,CAAA,aAAA,CAACC,OAAAA,EAAAA;gBAAQkJ,GAAAA,EAAKP,KAAAA;gBAAO1I,aAAAA,EAAc,KAAA;gBAAMkJ,GAAAA,EAAK;6BAC5CpJ,cAAA,CAAA,aAAA,CAACqJ,MAAAA,EAAAA;gBACCrD,KAAAA,EAAM,yBAAA;gBACNsD,KAAAA,EAAO,GAAA;gBACPC,WAAAA,EAAY,QAAA;gBACZzB,WAAAA,EAAa7D,YAAAA,GAAeiE,sBAAsB,EAAE;gBACpDrH,KAAAA,EAAO6D,EAAAA;AACPgE,gBAAAA,QAAAA,EAAU,CAACnF,GAAAA,GAAAA;AACTkB,oBAAAA,qBAAAA,CAAsB,CAAC+E,WAAAA,GAAAA;AACrB,wBAAA,OAAOA,WAAAA,CAAYzD,GAAG,CAAC,CAACZ,UAAAA,EAAYsE,YAAAA,GAAAA;AAClC,4BAAA,IAAIA,iBAAiBb,KAAAA,EAAO;gCAC1B,OAAO;AACL,oCAAA,GAAGzD,UAAU;oCACbT,EAAAA,EAAInB;AACN,iCAAA;AACF,4BAAA;4BACA,OAAO4B,UAAAA;AACT,wBAAA,CAAA,CAAA;AACF,oBAAA,CAAA,CAAA;AACF,gBAAA;8BAEFnF,cAAA,CAAA,aAAA,CAACwI,KAAAA,EAAAA;gBACCxC,KAAAA,EAAM,YAAA;gBACNnF,KAAAA,EAAOE,KAAAA;gBACP2I,QAAAA,EAAUV,iBAAAA;gBACVO,WAAAA,EAAaN,qBAAAA;gBACbU,OAAAA,EAAST,iBAAAA;AACTR,gBAAAA,QAAAA,EAAU,CAACnF,GAAAA,GAAAA;AACTkB,oBAAAA,qBAAAA,CAAsB,CAAC+E,WAAAA,GAAAA;AACrB,wBAAA,OAAOA,WAAAA,CAAYzD,GAAG,CAAC,CAACZ,UAAAA,EAAYsE,YAAAA,GAAAA;AAClC,4BAAA,IAAIA,iBAAiBb,KAAAA,EAAO;gCAC1B,OAAO;AACL,oCAAA,GAAGzD,UAAU;oCACbpE,KAAAA,EAAOwC,GAAAA;oCACPmB,EAAAA,EAAIA,EAAAA;oCACJkF,wBAAAA,EAA0B5E,4BAA4B,CAACN,EAAAA;AACzD,iCAAA;AACF,4BAAA;4BACA,OAAOS,UAAAA;AACT,wBAAA,CAAA,CAAA;AACF,oBAAA,CAAA,CAAA;AACF,gBAAA;;AAIR,QAAA,CAAA,CAAA,gBACAnF,cAAA,CAAA,aAAA,CAAC6J,MAAAA,EAAAA;YACCrJ,OAAAA,EAAQ,MAAA;AACRsJ,YAAAA,SAAAA,gBAAW9J,cAAA,CAAA,aAAA,CAAC+J,OAAAA,EAAAA,IAAAA,CAAAA;YACZC,OAAAA,EAAAA,IAAAA;YACAlH,OAAAA,EAAS,IAAA;AACP2B,gBAAAA,qBAAAA,CAAsB,CAAC+E,WAAAA,GAAAA;oBACrB,OAAO;AACFA,wBAAAA,GAAAA,WAAAA;AACH,wBAAA;4BACE9E,EAAAA,EAAI,EAAA;4BACJ3D,KAAAA,EAAO;AACT;AACD,qBAAA;AACH,gBAAA,CAAA,CAAA;AACF,YAAA;AACD,SAAA,EAAA,yBAAA,CAAA,CAAA,CAAA;AAMPkJ,QAAAA,IAAAA,gBACEjK,cAAA,CAAA,aAAA,CAACuI,eAAAA,EAAAA;YAAgB1I,KAAAA,EAAM;yBACrBG,cAAA,CAAA,aAAA,CAACkK,YAAAA,EAAAA;YACClE,KAAAA,EAAM,YAAA;YACN8B,WAAAA,EAAaM,oBAAAA;YACbvH,KAAAA,EAAO8D,YAAAA;AACPoD,YAAAA,cAAAA,EAAgB,CAAClH,KAAAA,GAAU+C,yBAAyB,CAAC/C,KAAAA,CAAM;AAC3D6H,YAAAA,QAAAA,EAAU,CAAC7H,KAAAA,GAAAA;AACT+D,gBAAAA,eAAAA,CAAgB,IAAM/D,KAAAA,CAAAA;AACxB,YAAA;;AAIR,KAAA;AACA,IAAA,qBACEb,cAAA,CAAA,aAAA,CAACC,OAAAA,EAAAA;QAAQC,aAAAA,EAAc,QAAA;QAASkJ,GAAAA,EAAK;qBACnCpJ,cAAA,CAAA,aAAA,CAACmK,KAAAA,EAAAA;AACE,QAAA,GAAGlE,2BAA2B;QAC/BpG,KAAAA,EAAM,qBAAA;QACNuK,iBAAAA,EAAkB,MAAA;QAClB5C,cAAAA,EAAgBA,cAAAA;QAChB6C,KAAAA,EAAO,IAAA;AACLpE,YAAAA,2BAAAA,CAA4BoE,KAAK,EAAA;YACjCnG,eAAAA,CAAgB,IAAA,CAAA;YAChBG,iBAAAA,CAAkB,IAAA,CAAA;YAClBE,cAAAA,CAAe,EAAA,CAAA;YACfE,qBAAAA,CAAsB;AACpB,gBAAA;oBACEC,EAAAA,EAAI,EAAA;oBACJ3D,KAAAA,EAAO;AACT;AACD,aAAA,CAAA;AACH,QAAA;qBAEAf,cAAA,CAAA,aAAA,CAACC,OAAAA,EAAAA;QAAQC,aAAAA,EAAc,QAAA;QAASkJ,GAAAA,EAAK;qBACnCpJ,cAAA,CAAA,aAAA,CAACqJ,MAAAA,EAAAA;QACCrD,KAAAA,EAAM,aAAA;QACN8B,WAAAA,EAAaD,eAAAA;QACbhH,KAAAA,EAAOoD,YAAAA;AACPyE,QAAAA,QAAAA,EAAU,CAACnF,GAAAA,GAAAA;YACTW,eAAAA,CAAgBX,GAAAA,CAAAA;AAClB,QAAA,CAAA;QACAgG,WAAAA,EAAY;sBAEdvJ,cAAA,CAAA,aAAA,CAACqJ,MAAAA,EAAAA;QACCrD,KAAAA,EAAM,eAAA;QACN8B,WAAAA,EAAalC,iBAAAA;QACb/E,KAAAA,EAAOuD,cAAAA;QACPmF,WAAAA,EAAY,eAAA;AACZb,QAAAA,QAAAA,EAAU,CAACnF,GAAAA,GAAAA;YACTc,iBAAAA,CAAkBd,GAAAA,CAAAA;AACpB,QAAA;AAEDgE,KAAAA,CAAAA,EAAAA,gBAAAA,kBACCvH,0EACEA,cAAA,CAAA,aAAA,CAACsK,OAAAA,EAAAA,IAAAA,CAAAA,EACAjC,uBAAuB,CAACjE,cAAAA,CAAgB,mBAKjDpE,cAAA,CAAA,aAAA,CAACO,UAAAA,EAAAA;QAAWC,OAAAA,EAAQ,OAAA;QAAQ+J,KAAAA,EAAM;AAE9B,KAAA,EAAA,kIAAA,CAAA,EAGH3I,yBACC5B,cAAA,CAAA,aAAA,CAACC,OAAAA,EAAAA;QAAQuK,cAAAA,EAAe;qBACtBxK,cAAA,CAAA,aAAA,CAAC6J,MAAAA,EAAAA;QAAOrJ,OAAAA,EAAQ,MAAA;AAAOsJ,QAAAA,SAAAA,gBAAW9J,cAAA,CAAA,aAAA,CAAC+J,OAAAA,EAAAA,IAAAA,CAAAA;QAAYC,OAAAA,EAAS,IAAA;AAAMlH,QAAAA,OAAAA,EAASmD,4BAA4BwE;AAAM,KAAA,EAAA,qBAAA,CAAA,CAAA,EAK5G3G,oBAAAA,CAAqBpD,MAAM,GAAG,CAAA,iBAC7BV,cAAA,CAAA,aAAA,CAACqC,KAAAA,EAAAA;QACCI,YAAAA,EAAa,SAAA;QACbH,YAAAA,EAAc0B,aAAAA;QACd/B,KAAAA,EAAO6B,oBAAAA;QACPvB,eAAAA,EAAiB5B,2BAAAA;QACjB+J,OAAAA,EAAS7F,WAAAA;AACT8F,QAAAA,YAAAA,EAAc,CAAC,EAAEjG,EAAE,EAAE+F,IAAI,EAAE,GAAA;AACzB3F,YAAAA,cAAAA,CAAe,CAACqB,IAAAA,GAAAA;gBACd,MAAMyE,cAAAA,GAAiB,IAAI7F,GAAAA,CAAIoB,IAAAA,CAAAA;AAC/B,gBAAA,IAAIsE,IAAAA,EAAM;AACRG,oBAAAA,cAAAA,CAAenF,GAAG,CAACf,EAAAA,CAAAA;gBACrB,CAAA,MAAO;AACLkG,oBAAAA,cAAAA,CAAeC,MAAM,CAACnG,EAAAA,CAAAA;AACxB,gBAAA;gBACA,OAAOkG,cAAAA;AACT,YAAA,CAAA,CAAA;AACF,QAAA,CAAA;AACAE,QAAAA,eAAAA,EAAiB,CAAC,EAAEC,IAAAA,EAAMhL,IAAI,EAAE,GAAA;AAC9B,YAAA,qBACEC,cAAA,CAAA,aAAA,CAACyB,SAAAA,EAAAA;gBACC1B,IAAAA,EAAMA,IAAAA;gBACN6B,OAAAA,EAASA,OAAAA;gBACTC,aAAAA,EAAeA,aAAAA;gBACfH,UAAAA,EAAYA,UAAAA;gBACZC,WAAAA,EAAaA,WAAAA;gBACbG,YAAAA,EAAcA,YAAAA;gBACdC,aAAAA,EAAeA;;AAGrB,QAAA;uBAGF/B,cAAA,CAAA,aAAA,CAACO,UAAAA,EAAAA;QAAWC,OAAAA,EAAQ;AAAQ,KAAA,EAAA,sBAAA,CAAA,CAAA;AAIpC,CAAA;AACA,MAAMwK,iBAAAA,GAAoB,CAAmCC,KAAAA,EAAYC,OAAAA,GAAAA;AACvE,IAAA,MAAMC,YAAAA,GAAe;AAAIF,QAAAA,GAAAA;AAAM,KAAA,CAACG,IAAI,CAAC,CAACC,CAAAA,EAAGC,CAAAA,GAAMD,CAAC,CAACH,OAAAA,CAAQ,CAACK,aAAa,CAACD,CAAC,CAACJ,OAAAA,CAAQ,CAAA,CAAA;;IAGlF,OAAOC,YAAAA,CAAapF,GAAG,CAAC,CAACyF,GAAAA,GAAAA;AACvB,QAAA,OAAO9F,OAAO+F,WAAW,CACvB/F,MAAAA,CAAOgG,OAAO,CAACF,GAAAA,CAAAA,CAAKJ,IAAI,CAAC,CAAC,CAACO,IAAAA,EAAMC,IAAAA,CAAK,EAAE,CAACC,MAAMC,IAAAA,CAAK,GAAA;AAClD,YAAA,OAAOH,KAAKJ,aAAa,CAACM,IAAAA,CAAAA,IAASD,IAAAA,CAAKL,aAAa,CAACO,IAAAA,CAAAA;AACxD,QAAA,CAAA,CAAA,CAAA;AAEJ,IAAA,CAAA,CAAA;AACF,CAAA;AAGO,MAAMC,iCAAAA,GAAoC,CAAC,EAAEC,OAAO,EAA6B,GAAA;AACtF,IAAA,MAAM,EAAEjB,IAAAA,EAAMkB,iBAAiB,EAAE,GAAGC,oBAAAA,CAAqB;QAAEC,WAAAA,EAAa;AAAK,KAAA,CAAA;AAC7E,IAAA,MAAM,EAAEpB,IAAAA,EAAMqB,WAAW,EAAE,GAAGC,QAAQ,qBAAA,EAAuB,gCAAA,CAAA;AAC7D,IAAA,MAAM,EAAEtB,IAAAA,EAAMuB,aAAa,EAAE,GAAGD,QAAQ,YAAA,EAAc,KAAA,CAAA;AACtD,IAAA,MAAM,EAAEtB,IAAAA,EAAMwB,cAAc,EAAE,GAAGF,QAAQ,aAAA,EAAe,KAAA,CAAA;AACxD,IAAA,MAAM,EAAEtB,IAAAA,EAAMyB,oBAAoB,EAAE,GAAGH,QAAQ,yBAAA,EAA2B,KAAA,CAAA;IAC1E,MAAMvK,YAAAA,GAAemK,iBAAAA,EAAmBQ,UAAAA,CAAWC,WAAAA,IAAe,KAAA;IAClE,MAAM3K,aAAAA,GAAgBkK,iBAAAA,EAAmBU,WAAAA,CAAYC,YAAAA,IAAgB,KAAA;AAErE,IAAA,MAAMC,SAAAA,GAAa/K,CAAAA,YAAAA,IAAgBwK,aAAY,KAAM,KAAA;AACrD,IAAA,MAAMQ,UAAAA,GAAc/K,CAAAA,aAAAA,IAAiBwK,cAAa,KAAM,KAAA;IAExD,MAAM,EAAExB,MAAMtH,cAAc,EAAEsJ,WAAWC,YAAY,EAAE,GAAGC,iBAAAA,CAAkB;QAC1Ed,WAAAA,EAAaU,SAAAA,IAAa,CAAC,CAACT;AAC9B,KAAA,CAAA;IACA,MAAM,EAAErB,MAAMlH,cAAc,EAAEkJ,WAAWG,aAAa,EAAE,GAAGC,iBAAAA,CAAkB;QAC3EhB,WAAAA,EAAaW,UAAAA,IAAc,CAAC,CAACV;AAC/B,KAAA,CAAA;IACA,MAAM,EAAErB,MAAMqC,oBAAoB,EAAEL,WAAWM,mBAAmB,EAAE,GAAGC,uBAAAA,CAAwB;QAC7FnB,WAAAA,EAAaW,UAAAA,IAAc,CAAC,CAACV;AAC/B,KAAA,CAAA;AAEA,IAAA,MAAM1I,QAAQ6J,QAAAA,CAASf,oBAAAA,CAAAA;AACvB,IAAA,MAAMgB,SAAAA,GAAYC,aAAAA,EAAAA;AAClB,IAAA,MAAMC,cAAcvF,OAAAA,CAAQ,IAAMqF,SAAAA,CAAU9J,KAAAA,IAAS,EAAE,CAAA,EAAG;AAACA,QAAAA,KAAAA;AAAO8J,QAAAA;AAAU,KAAA,CAAA;IAE5E,MAAMG,UAAAA,GAAa3B,QAAQzK,oCAAoC;IAC/D,MAAMqM,iBAAAA,GAAyEzF,QAC7E,IAAM;AACA1E,YAAAA,GAAAA,cAAAA,EAAgBoK,gBAAAA,CAAiB9H,GAAAA,CAAI,CAAC+H,CAAAA,IAAO;AAAE,oBAAA,GAAGA,CAAC;oBAAEzI,cAAAA,EAAgB;AAAgB,iBAAA,MAAO,EAAE;AAC9F5B,YAAAA,GAAAA,cAAAA,EAAgBsK,oBAAAA,CAAqBhI,GAAAA,CAAI,CAAC+H,CAAAA,IAAO;AAAE,oBAAA,GAAGA,CAAC;oBAAEzI,cAAAA,EAAgB;AAAoB,iBAAA,MAAO;SACzG,EACD;QAAC5B,cAAAA,EAAgBsK,oBAAAA;QAAsBtK,cAAAA,EAAgBoK;AAAiB,KAAA,CAAA;AAE1E,IAAA,MAAMG,wBAAwB7F,OAAAA,CAC5B,IACEyF,kBAAkB3I,MAAM,CAAkE,CAACC,GAAAA,EAAK3B,GAAAA,GAAAA;AAC9F2B,YAAAA,GAAG,CAAC3B,GAAAA,CAAI6B,aAAa,CAAC,GAAG7B,GAAAA;YACzB,OAAO2B,GAAAA;AACT,QAAA,CAAA,EAAG,EAAC,CAAA,EACN;AAAC0I,QAAAA;AAAkB,KAAA,CAAA;IAErB,MAAMK,aAAAA,GAAgBb,oBAAAA,EAAsBc,WAAAA,IAAe,EAAE;AAC7D,IAAA,MAAMtK,yBAAAA,GAA4BqK,aAAAA,CAAchJ,MAAM,CACpD,CAACC,GAAAA,EAAK3B,GAAAA,GAAAA;AACJ2B,QAAAA,GAAG,CAAC3B,GAAAA,CAAI4K,QAAQ,CAAC,GAAG5K,IAAI6K,UAAU;QAClC,OAAOlJ,GAAAA;AACT,IAAA,CAAA,EACA,EAAC,CAAA;IAEH,MAAM,EAAE7D,sBAAsB,EAAE,GAAGH,wBAAAA,EAAAA;AACnC,IAAA,MAAM,EAAEC,MAAAA,EAAQkN,oBAAoB,EAAE,GAAGC,sBAAAA,CAAuB,MAAA,CAAA;AAChE,IAAA,MAAM,EAAEnN,MAAAA,EAAQoN,wBAAwB,EAAE,GAAGD,sBAAAA,CAAuB,UAAA,CAAA;AACpE,IAAA,MAAM,EAAEnN,MAAAA,EAAQqN,oBAAoB,EAAE,GAAGC,sCAAAA,EAAAA;AACzC,IAAA,MAAM9O,QAAQwI,OAAAA,CAAQ,IAAA;AACpB,QAAA,MAAMuG,sBAA2C,EAAC;QAClDhB,WAAAA,CAAYjH,OAAO,CAAC,CAAC1G,IAAAA,GAAAA;AACnB2O,YAAAA,mBAAmB,CAAC3O,IAAAA,CAAKM,OAAO,CAAC,GAAG,EAAE;AACxC,QAAA,CAAA,CAAA;QAEAuN,iBAAAA,CAAkBnH,OAAO,CAAC,CAACtB,UAAAA,GAAAA;AACzB,YAAA,MAAMwJ,4BAA4BC,+BAAAA,CAAgCzJ,UAAAA,CAAAA;AAClE,YAAA,MAAM0J,uBAAuBC,0BAAAA,CAA2B3J,UAAAA,CAAAA;YAExDwJ,yBAAAA,CAA0BlI,OAAO,CAAC,CAACsI,YAAAA,GAAAA;gBACjC,MAAMhP,IAAAA,GAAOgP,aAAa1O,OAAO;AACjC,gBAAA,IAAI,CAACqO,mBAAmB,CAAC3O,IAAAA,CAAK,EAAE;oBAC9B2O,mBAAmB,CAAC3O,IAAAA,CAAK,GAAG,EAAE;AAChC,gBAAA;AACA2O,gBAAAA,mBAAmB,CAAC3O,IAAAA,CAAK,CAAC+G,IAAI,CAAC;oBAC7BhG,MAAAA,EAAQ,KAAA;AACRR,oBAAAA,WAAAA,EAAa6E,WAAWiC,YAAY;AACpC1C,oBAAAA,EAAAA,EAAIS,WAAWC,aAAa;oBAC5BrE,KAAAA,EAAO;AACT,iBAAA,CAAA;AACF,YAAA,CAAA,CAAA;YAEA8N,oBAAAA,CAAqBpI,OAAO,CAAC,CAACsI,YAAAA,GAAAA;gBAC5B,MAAMhP,IAAAA,GAAOgP,aAAa1O,OAAO;AACjC,gBAAA,IAAI,CAACqO,mBAAmB,CAAC3O,IAAAA,CAAK,EAAE;oBAC9B2O,mBAAmB,CAAC3O,IAAAA,CAAK,GAAG,EAAE;AAChC,gBAAA;AAEA2O,gBAAAA,mBAAmB,CAAC3O,IAAAA,CAAK,CAAC+G,IAAI,CAAC;oBAC7BhG,MAAAA,EAAQ,KAAA;AACRR,oBAAAA,WAAAA,EAAa6E,WAAWiC,YAAY;AACpC1C,oBAAAA,EAAAA,EAAIS,WAAWC,aAAa;AAC5BrE,oBAAAA,KAAAA,EAAOgO,aAAahO;AACtB,iBAAA,CAAA;AACF,YAAA,CAAA,CAAA;AACF,QAAA,CAAA,CAAA;AAEA4M,QAAAA,UAAAA,EAAYlH,QAAQ,CAACuI,SAAAA,GAAAA;YACnB,MAAMjP,IAAAA,GAAOiP,UAAU3O,OAAO;AAC9B,YAAA,IAAI,CAACqO,mBAAmB,CAAC3O,IAAAA,CAAK,EAAE;gBAC9B2O,mBAAmB,CAAC3O,IAAAA,CAAK,GAAG,EAAE;AAChC,YAAA;AACA2O,YAAAA,mBAAmB,CAAC3O,IAAAA,CAAK,CAAC+G,IAAI,CAAC;gBAC7BhG,MAAAA,EAAQ,OAAA;AACRR,gBAAAA,WAAAA,EAAa0O,UAAUpI;AACzB,aAAA,CAAA;AACF,QAAA,CAAA,CAAA;QAEA/C,cAAAA,EAAgBoL,oCAAAA,CAAqCxI,QAAQ,CAACsI,YAAAA,GAAAA;YAC5D,MAAMhP,IAAAA,GAAOgP,aAAa1O,OAAO;AACjC,YAAA,IAAI,CAACqO,mBAAmB,CAAC3O,IAAAA,CAAK,EAAE;gBAC9B2O,mBAAmB,CAAC3O,IAAAA,CAAK,GAAG,EAAE;AAChC,YAAA;AACA2O,YAAAA,mBAAmB,CAAC3O,IAAAA,CAAK,CAAC+G,IAAI,CAAC;gBAC7BhG,MAAAA,EAAQ,MAAA;AACRR,gBAAAA,WAAAA,EAAauD,eAAeuD,YAAY;AACxCE,gBAAAA,OAAAA,EAASyH,aAAaZ,QAAQ;AAC9BnN,gBAAAA,SAAAA,EAAW4C,yBAAyB,CAACmL,YAAAA,CAAaZ,QAAQ;AAC5D,aAAA,CAAA;AACF,QAAA,CAAA,CAAA;QAEA,OAAOO,mBAAAA;IACT,CAAA,EAAG;AACD9K,QAAAA,yBAAAA;AACAgK,QAAAA,iBAAAA;AACAD,QAAAA,UAAAA;QACA9J,cAAAA,EAAgBuD,YAAAA;QAChBvD,cAAAA,EAAgBoL,oCAAAA;AAChBvB,QAAAA;AACD,KAAA,CAAA;AAED,IAAA,MAAM/L,WAAAA,GAAwC;QAC5ChC,KAAAA,EAAOA;AACT,KAAA;IACA,MAAM,EAAE+B,UAAU,EAAEG,aAAa,EAAED,OAAO,EAAEsN,gBAAgB,EAAE,GAAGC,YAAAA,CAAa;AAAExN,QAAAA;AAAY,KAAA,CAAA;IAC5F,MAAM,EAAEyN,kBAAkB,EAAE,GAAGC,8BAAAA,EAAAA;AAE/B,IAAA,MAAM,EAAEC,gBAAgB,EAAEC,2BAA2B,EAAE,GAAGpH,OAAAA,CAAQ,IAAA;AAChE,QAAA,MAAMqH,YAAAA,GAAexD,OAAAA,CAAQzK,oCAAoC,IAAI,EAAE;AACvE,QAAA,MAAMkO,WAAAA,GAAc/J,MAAAA,CAAOgG,OAAO,CAAChK,UAAAA,CAAW/B,KAAK,CAAA,CAAEsF,MAAM,CACzD,CAACC,GAAAA,EAAK,CAAClD,QAAQ0N,eAAAA,CAAgB,GAAA;YAC7BA,eAAAA,CAAgBjJ,OAAO,CAAC,CAAC9D,cAAAA,GAAAA;gBACvB,IAAIA,cAAAA,CAAe7B,MAAM,KAAK,OAAA,EAAS;AACrCoE,oBAAAA,GAAAA,CAAI4B,IAAI,CAAC;wBACPzG,OAAAA,EAAS2B,MAAAA;AACT4E,wBAAAA,MAAAA,EAAQjE,eAAerC;AACzB,qBAAA,CAAA;AACF,gBAAA;AACF,YAAA,CAAA,CAAA;YACA,OAAO4E,GAAAA;AACT,QAAA,CAAA,EACA,EAAE,CAAA;QAGJ,MAAMyK,iBAAAA,GAAoB3E,kBAAkByE,WAAAA,EAAa,QAAA,CAAA;AACzD,QAAA,MAAMG,kBAAAA,GAAqB5E,iBAAAA,CAAkBwE,YAAAA,IAAgB,EAAE,EAAE,QAAA,CAAA;QAEjE,MAAMK,MAAAA,GAASC,uBAAuBH,iBAAAA,EAAmBC,kBAAAA,CAAAA;QACzD,MAAML,2BAAAA,GAA8BM,MAAAA,GAAS,EAAE,GAAGF,iBAAAA;QAElD,OAAO;AACLL,YAAAA,gBAAAA,EAAkB,CAACO,MAAAA;YACnBN,2BAAAA,EAA6BA;AAC/B,SAAA;IACF,CAAA,EAAG;AAAC7N,QAAAA,UAAAA,CAAW/B,KAAK;AAAEqM,QAAAA,OAAAA,CAAQzK;AAAqC,KAAA,CAAA;AAEnE,IAAA,MAAM,EAAEwO,aAAa,EAAEC,yBAAyB,EAAE,GAAG7H,OAAAA,CAAQ,IAAA;AAC3D,QAAA,MAAM8H,oBAA2D,EAAC;AAClE,QAAA,MAAMC,mBAA0D,EAAC;AAEjEtC,QAAAA,iBAAAA,EAAmBnH,QAAQ,CAACtB,UAAAA,GAAAA;AAC1B8K,YAAAA,iBAAiB,CAAC9K,UAAAA,CAAWC,aAAa,CAAC,GAAG;AAC5CuJ,gBAAAA,yBAAAA,EAA2BC,+BAAAA,CAAgCzJ,UAAAA,CAAAA;AAC3D0J,gBAAAA,oBAAAA,EAAsBC,0BAAAA,CAA2B3J,UAAAA;AACnD,aAAA;AACA+K,YAAAA,gBAAgB,CAAC/K,UAAAA,CAAWC,aAAa,CAAC,GAAG;AAAEuJ,gBAAAA,yBAAAA,EAA2B,EAAE;AAAEE,gBAAAA,oBAAAA,EAAsB;AAAG,aAAA;AACzG,QAAA,CAAA,CAAA;;QAGAnJ,MAAAA,CAAOgG,OAAO,CAAChK,UAAAA,CAAW/B,KAAK,CAAA,CAAE8G,OAAO,CAAC,CAAC,CAACzE,MAAAA,EAAQ0N,eAAAA,CAAgB,GAAA;YACjEA,eAAAA,CAAgBjJ,OAAO,CAAC,CAAC9D,cAAAA,GAAAA;gBACvB,IAAIA,cAAAA,CAAe7B,MAAM,KAAK,KAAA,EAAO;oBACnC,MAAMkG,YAAAA,GAAerE,eAAe+B,EAAE;oBAEtC,IAAI/B,cAAAA,CAAe5B,KAAK,EAAE;AACxBmP,wBAAAA,gBAAgB,CAAClJ,YAAAA,CAAa,CAAC6H,oBAAoB,CAAC/H,IAAI,CAAC;4BACvDzG,OAAAA,EAAS2B,MAAAA;AACTjB,4BAAAA,KAAAA,EAAO4B,eAAe5B;AACxB,yBAAA,CAAA;oBACF,CAAA,MAAO;AACLmP,wBAAAA,gBAAgB,CAAClJ,YAAAA,CAAa,CAAC2H,yBAAyB,CAAC7H,IAAI,CAAC;4BAC5DzG,OAAAA,EAAS2B;AACX,yBAAA,CAAA;AACF,oBAAA;AACF,gBAAA;AACF,YAAA,CAAA,CAAA;AACF,QAAA,CAAA,CAAA;AAEA,QAAA,MAAMgO,4BAAmE,EAAC;;QAG1EtK,MAAAA,CAAOgG,OAAO,CAACwE,gBAAAA,CAAAA,CAAkBnK,GAAG,CAAC,CAAC,CAACiB,cAAcmJ,eAAAA,CAAgB,GAAA;YACnE,MAAMC,gBAAAA,GAAmBH,iBAAiB,CAACjJ,YAAAA,CAAa;YAExD,MAAMqJ,4BAAAA,GAA+BF,gBAAgBxB,yBAAyB,CAAC5I,GAAG,CAAC,CAACxC,GAAAA,GAAQA,GAAAA,CAAIlD,OAAO,CAAA;YACvG,MAAMiQ,6BAAAA,GAAgCF,iBAAiBzB,yBAAyB,CAAC5I,GAAG,CAAC,CAACxC,GAAAA,GAAQA,GAAAA,CAAIlD,OAAO,CAAA;AAEzG,YAAA,MAAMkQ,iCAAAA,GAAoCvF,iBAAAA,CAAkBmF,eAAAA,CAAgBtB,oBAAoB,EAAE,OAAA,CAAA;AAClG,YAAA,MAAM2B,kCAAAA,GAAqCxF,iBAAAA,CAAkBoF,gBAAAA,CAAiBvB,oBAAoB,EAAE,OAAA,CAAA;AAEpG,YAAA,IACE,CAACiB,sBAAAA,CAAuBO,4BAAAA,EAA8BC,kCACtD,CAACR,sBAAAA,CAAuBS,mCAAmCC,kCAAAA,CAAAA,EAC3D;gBACAR,yBAAyB,CAAChJ,aAAa,GAAGmJ,eAAAA;AAC5C,YAAA;AACF,QAAA,CAAA,CAAA;QAEA,OAAO;AACLJ,YAAAA,aAAAA,EAAerK,MAAAA,CAAOC,IAAI,CAACqK,yBAAAA,CAAAA,CAA2BtP,MAAM,GAAG,CAAA;YAC/DsP,yBAAAA,EAA2BA;AAC7B,SAAA;IACF,CAAA,EAAG;AAACtO,QAAAA,UAAAA,CAAW/B,KAAK;AAAEiO,QAAAA;AAAkB,KAAA,CAAA;AAExC,IAAA,MAAM,EAAE6C,oBAAoB,EAAEC,0BAA0B,EAAE,GAAGvI,OAAAA,CAAQ,IAAA;QACnE,MAAMwI,gBAAAA,GAA6C9M,cAAAA,EAAgBoL,oCAAAA,IAAwC,EAAE;AAC7G,QAAA,MAAM2B,eAAAA,GAA4ClL,MAAAA,CAAOgG,OAAO,CAAChK,UAAAA,CAAW/B,KAAK,CAAA,CAAEsF,MAAM,CACvF,CAACC,GAAAA,EAAK,CAAClD,QAAQ0N,eAAAA,CAAgB,GAAA;YAC7BA,eAAAA,CAAgBjJ,OAAO,CAAC,CAAC9D,cAAAA,GAAAA;gBACvB,IAAIA,cAAAA,CAAe7B,MAAM,KAAK,MAAA,EAAQ;AACpCoE,oBAAAA,GAAAA,CAAI4B,IAAI,CAAC;wBACPzG,OAAAA,EAAS2B,MAAAA;AACTmM,wBAAAA,QAAAA,EAAUxL,eAAe2E;AAC3B,qBAAA,CAAA;AACF,gBAAA;AACF,YAAA,CAAA,CAAA;YACA,OAAOpC,GAAAA;AACT,QAAA,CAAA,EACA,EAAE,CAAA;QAGJ,MAAM2K,MAAAA,GAASC,uBAAuBc,eAAAA,EAAiBD,gBAAAA,CAAAA;QACvD,MAAMD,0BAAAA,GAA6Bb,MAAAA,GAAS,EAAE,GAAGe,eAAAA;QAEjD,OAAO;AACLH,YAAAA,oBAAAA,EAAsB,CAACZ,MAAAA;YACvBa,0BAAAA,EAA4BA;AAC9B,SAAA;IACF,CAAA,EAAG;AAAChP,QAAAA,UAAAA,CAAW/B,KAAK;AAAEkE,QAAAA;AAAe,KAAA,CAAA;AAErC,IAAA,MAAMgN,UAAAA,GAAa,UAAA;AACjB,QAAA,IAAIvB,gBAAAA,EAAkB;AACpB,YAAA,MAAMjO,sBAAAA,CAAuBkO,2BAAAA,CAAAA;AAC/B,QAAA;AAEA,QAAA,MAAMuB,OAAAA,CAAQC,GAAG,CACfrL,MAAAA,CAAOgG,OAAO,CAACsE,yBAAAA,CAAAA,CAA2BjK,GAAG,CAAC,OAAO,CAACiB,YAAAA,EAAcgK,iBAAAA,CAAkB,GAAA;YACpF,MAAM7L,UAAAA,GAAa6I,qBAAqB,CAAChH,YAAAA,CAAa;AACtD,YAAA,IAAI,CAAC7B,UAAAA,EAAY;AACf,gBAAA;AACF,YAAA;YAEA,IAAIA,UAAAA,CAAWE,cAAc,KAAK,MAAA,EAAQ;AACxC,gBAAA,MAAMgJ,oBAAAA,CAAqB;oBACzBjJ,aAAAA,EAAe4B,YAAAA;AACfiK,oBAAAA,yCAAAA,EAA2CD,kBAAkBrC,yBAAyB;AACtFuC,oBAAAA,oCAAAA,EAAsCF,kBAAkBnC;AAC1D,iBAAA,CAAA;YACF,CAAA,MAAO;AACL,gBAAA,MAAMN,wBAAAA,CAAyB;oBAC7BnJ,aAAAA,EAAe4B,YAAAA;AACfmK,oBAAAA,6CAAAA,EAA+CH,kBAAkBrC,yBAAyB;AAC1FyC,oBAAAA,wCAAAA,EAA0CJ,kBAAkBnC;AAC9D,iBAAA,CAAA;AACF,YAAA;AACF,QAAA,CAAA,CAAA,CAAA;AAGF,QAAA,IAAIhL,kBAAkB4M,oBAAAA,EAAsB;AAC1C,YAAA,MAAMjC,oBAAAA,CAAqB;AACzBpJ,gBAAAA,aAAAA,EAAevB,eAAeuB,aAAa;gBAC3C6J,oCAAAA,EAAsCyB;AACxC,aAAA,CAAA;AACF,QAAA;AACF,IAAA,CAAA;IAEA,IAAI1D,YAAAA,IAAgBE,iBAAiBG,mBAAAA,EAAqB;AACxD,QAAA,qBAAOrN,cAAA,CAAA,aAAA,CAACqR,oBAAAA,EAAAA,IAAAA,CAAAA;AACV,IAAA;AAEA,IAAA,MAAMC,WAAAA,GAAc,CAAChC,gBAAAA,IAAoB,CAACS,iBAAiB,CAACU,oBAAAA;AAE5D,IAAA,qBACEzQ,cAAA,CAAA,aAAA,CAACuR,iBAAAA,EAAAA;QACC1R,KAAAA,EAAM,4BAAA;QACN2R,MAAAA,EAAQpF,WAAAA;QACRqF,MAAAA,EAAQZ,UAAAA;QACRzB,kBAAAA,EAAoBA,kBAAAA;QACpBxN,OAAAA,EAASA,OAAAA;QACT8P,UAAAA,EAAYxC,gBAAAA;QACZoC,WAAAA,EAAaA;qBAEbtR,cAAA,CAAA,aAAA,CAACwD,8BAAAA,EAAAA;QACC5B,OAAAA,EAASA,OAAAA;QACTD,WAAAA,EAAaA,WAAAA;QACbD,UAAAA,EAAYA,UAAAA;QACZG,aAAAA,EAAeA,aAAAA;QACf4B,cAAAA,EAAgBmK,iBAAAA;QAChBlK,KAAAA,EAAOgK,WAAAA;QACP5L,YAAAA,EAAcA,YAAAA;QACdC,aAAAA,EAAeA,aAAAA;AACf4B,QAAAA,qBAAAA,EAAuB6I,oBAAAA,IAAwB,KAAA;QAC/C5I,yBAAAA,EAA2BA,yBAAAA;QAC3BC,cAAAA,EAAgBA;;AAIxB;;;;"}
|
|
@@ -12,6 +12,7 @@ import { Typography } from '../components/Typography.mjs';
|
|
|
12
12
|
import { getSsoConnectionRoleAssignments, getSsoGroupRoleAssignments } from '../utils/getSsoRoleAssignments.mjs';
|
|
13
13
|
import { useFormState } from '../utils/useFormState.mjs';
|
|
14
14
|
import { useMutateSsoConnection } from '../utils/useMutateSsoConnection.mjs';
|
|
15
|
+
import { useRbac } from '../utils/useRbac.mjs';
|
|
15
16
|
import { useRoleAutocomplete } from '../utils/useRoleAutocomplete.mjs';
|
|
16
17
|
import { getIdpInfo } from './IdpInfo.mjs';
|
|
17
18
|
import { useSsoRouterController } from './SSORouter.mjs';
|
|
@@ -19,9 +20,12 @@ import Add from '../../../../../node_modules/@mui/icons-material/esm/Add.mjs';
|
|
|
19
20
|
|
|
20
21
|
const RoleAssignmentsSectionBody = ({ connection, localState, setLocalState, remoteState })=>{
|
|
21
22
|
const { editing } = useSettingsContainer();
|
|
23
|
+
const { data: canGetOrgCustomRoles } = useRbac('stytch.custom-org-roles', 'get');
|
|
22
24
|
const { connectionRoleIds, groupedRoles } = editing ? localState : remoteState;
|
|
23
25
|
const connectionNeedsGroupAttributeMapping = connection.connectionType === 'saml' && !connection.attribute_mapping.groups;
|
|
24
|
-
const roleAutocompleteProps = useRoleAutocomplete(
|
|
26
|
+
const roleAutocompleteProps = useRoleAutocomplete({
|
|
27
|
+
includeOrgRoles: canGetOrgCustomRoles ?? false
|
|
28
|
+
});
|
|
25
29
|
const handleAddGroupRole = useCallback(()=>{
|
|
26
30
|
setLocalState((state)=>({
|
|
27
31
|
...state,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RoleAssignmentsSection.mjs","sources":["../../../../../../../../web/src/adminPortal/sso/RoleAssignmentsSection.tsx"],"sourcesContent":["import { Add } from '@mui/icons-material';\nimport { B2BSSOSAMLUpdateConnectionOptions, B2BSSOUpdateExternalConnectionOptions } from '@stytch/core/public';\nimport React, { SetStateAction, useCallback, useMemo } from 'react';\nimport { deepEqual } from '../../utils/deepEqual';\nimport { Autocomplete } from '../components/Autocomplete';\nimport { Button } from '../components/Button';\nimport { FlexBox } from '../components/FlexBox';\nimport { Input } from '../components/Input';\nimport { RolesList } from '../components/RolesList';\nimport { SettingsContainer, useSettingsContainer } from '../components/SettingsContainer';\nimport { SettingsSection } from '../components/SettingsSection';\nimport { Table } from '../components/Table';\nimport { Typography } from '../components/Typography';\nimport { TableItemRenderer } from '../shared/components/types';\nimport { getSsoConnectionRoleAssignments, getSsoGroupRoleAssignments } from '../utils/getSsoRoleAssignments';\nimport { useFormState } from '../utils/useFormState';\nimport { useMutateSsoConnection } from '../utils/useMutateSsoConnection';\nimport { useRoleAutocomplete } from '../utils/useRoleAutocomplete';\nimport { getIdpInfo } from './IdpInfo';\nimport { useSsoRouterController } from './SSORouter';\nimport { ExternalTaggedConnection, SAMLTaggedConnection } from './TaggedConnection';\n\ntype ImplicitRoleAssignment = {\n group: string;\n roleIds: string[];\n};\n\ninterface RoleAssignmentsFormState {\n connectionRoleIds: string[];\n groupedRoles: ImplicitRoleAssignment[];\n}\n\nconst RoleAssignmentsSectionBody = ({\n connection,\n localState,\n setLocalState,\n remoteState,\n}: {\n connection: SAMLTaggedConnection | ExternalTaggedConnection;\n localState: RoleAssignmentsFormState;\n setLocalState: (state: SetStateAction<RoleAssignmentsFormState>) => void;\n remoteState: RoleAssignmentsFormState;\n}) => {\n const { editing } = useSettingsContainer();\n\n const { connectionRoleIds, groupedRoles } = editing ? localState : remoteState;\n\n const connectionNeedsGroupAttributeMapping =\n connection.connectionType === 'saml' && !connection.attribute_mapping.groups;\n\n const roleAutocompleteProps = useRoleAutocomplete();\n\n const handleAddGroupRole = useCallback(() => {\n setLocalState((state) => ({\n ...state,\n groupedRoles: [...state.groupedRoles, { group: '', roleIds: [] }],\n }));\n }, [setLocalState]);\n\n const handleConnectionRolesChange = useCallback(\n (value: string[]): void => {\n return setLocalState((state) => ({ ...state, connectionRoleIds: value }));\n },\n [setLocalState],\n );\n\n const idpInfo = connection.connectionType === 'saml' ? getIdpInfo(connection.identity_provider, 'saml') : undefined;\n\n const implicitRoleAssignments =\n connection.connectionType === 'saml'\n ? connection.saml_connection_implicit_role_assignments\n : connection.external_connection_implicit_role_assignments;\n\n return (\n <FlexBox flexDirection=\"column\" gap={2}>\n <SettingsSection\n title=\"Connection Roles\"\n tooltipText=\"Connection Roles are automatically assigned to all Members who authenticate via this SSO connection.\"\n >\n {editing ? (\n <Autocomplete {...roleAutocompleteProps} value={connectionRoleIds} onChange={handleConnectionRolesChange} />\n ) : implicitRoleAssignments.length > 0 ? (\n <RolesList roles={implicitRoleAssignments} />\n ) : (\n <Typography variant=\"body2\">No roles assigned.</Typography>\n )}\n </SettingsSection>\n <SettingsSection\n title=\"Group Roles\"\n tooltipText=\"If a Member is part of a group, they will be assigned both the Connection Role and their Group Role.\"\n >\n {connection.connectionType === 'external' && (\n <Typography variant=\"body2\">\n Ensure a "groups" key exists in the external connection Attribute Mapping first to assign group\n roles.\n </Typography>\n )}\n {!connectionNeedsGroupAttributeMapping ? (\n editing ? (\n <>\n {groupedRoles.map(({ group, roleIds }, i) => (\n <FlexBox key={i} alignItems=\"stretch\" justifyContent=\"space-between\">\n <Input\n label=\"Group name\"\n fullWidth\n value={group}\n onChange={(value) => {\n setLocalState((state) => ({\n ...state,\n groupedRoles: state.groupedRoles.map((item, index) =>\n index === i ? { ...item, group: value } : item,\n ),\n }));\n }}\n />\n <Autocomplete\n {...roleAutocompleteProps}\n label=\"Group Role\"\n value={roleIds}\n fullWidth\n onChange={(values) => {\n setLocalState((state) => ({\n ...state,\n groupedRoles: state.groupedRoles.map((item, index) =>\n index === i ? { ...item, roleIds: values } : item,\n ),\n }));\n }}\n />\n </FlexBox>\n ))}\n <Button variant=\"text\" startIcon={<Add />} onClick={handleAddGroupRole}>\n Add group roles\n </Button>\n </>\n ) : groupedRoles.length > 0 ? (\n <Table\n items={groupedRoles}\n rowKeyExtractor={roleAssignmentKeyExtractor}\n itemRenderer={roleAssignmentItemRenderer}\n ></Table>\n ) : (\n <Typography variant=\"body2\">No roles assigned.</Typography>\n )\n ) : (\n idpInfo && (\n <Typography variant=\"body2\">\n Add a "groups" key in the {idpInfo.idp.attributeMappingLabel} first to assign group roles.\n </Typography>\n )\n )}\n </SettingsSection>\n </FlexBox>\n );\n};\n\nconst roleAssignmentKeyExtractor = ({ group }: ImplicitRoleAssignment) => group;\n\nconst roleAssignmentItemRenderer: TableItemRenderer<ImplicitRoleAssignment>[] = [\n {\n title: 'Group',\n getValue: ({ group }) => (\n <Typography variant=\"body2\" color=\"secondary\">\n {group}\n </Typography>\n ),\n },\n { title: 'Role', getValue: ({ roleIds }) => <RolesList roles={roleIds} /> },\n];\n\nexport const RoleAssignmentsSection = ({\n canUpdateConnection,\n connection,\n}: {\n canUpdateConnection: boolean;\n connection: SAMLTaggedConnection | ExternalTaggedConnection;\n}) => {\n const implicitRoleAssignments = getSsoConnectionRoleAssignments(connection);\n const implicitGroupAssignments = getSsoGroupRoleAssignments(connection);\n\n const connectionRoleIds = useMemo(\n () => implicitRoleAssignments.map(({ role_id }) => role_id),\n [implicitRoleAssignments],\n );\n\n const groupedRoles = useMemo(() => {\n return Object.values(\n implicitGroupAssignments.reduce<Record<string, ImplicitRoleAssignment>>((acc, { group, role_id }) => {\n if (!acc[group]) {\n acc[group] = { group, roleIds: [] };\n }\n\n acc[group].roleIds.push(role_id);\n\n return acc;\n }, {}),\n );\n }, [implicitGroupAssignments]);\n\n const remoteState = useMemo<RoleAssignmentsFormState>(\n () => ({\n connectionRoleIds,\n groupedRoles,\n }),\n [connectionRoleIds, groupedRoles],\n );\n\n const { localState, setLocalState, editing, handleSetEditing } = useFormState({ remoteState });\n\n const { mutate } = useMutateSsoConnection(connection.connectionType);\n\n const handleSave = useCallback(async () => {\n const baseOptions = {\n connection_id: connection.connection_id,\n };\n\n const implicitRoleAssignments = !deepEqual(remoteState.connectionRoleIds, localState.connectionRoleIds)\n ? localState.connectionRoleIds.map((role_id) => ({\n role_id,\n }))\n : undefined;\n\n const filteredGroupRoles = localState.groupedRoles.filter(({ group, roleIds }) => group && roleIds.length > 0);\n const implicitGroupAssignments = !deepEqual(remoteState.groupedRoles, filteredGroupRoles)\n ? filteredGroupRoles.flatMap(({ group, roleIds }) => roleIds.map((role_id) => ({ group, role_id })))\n : undefined;\n\n if (connection.connectionType === 'saml') {\n const mutatedProperties: Partial<B2BSSOSAMLUpdateConnectionOptions> = {\n ...(implicitRoleAssignments && { saml_connection_implicit_role_assignments: implicitRoleAssignments }),\n ...(implicitGroupAssignments && { saml_group_implicit_role_assignments: implicitGroupAssignments }),\n };\n\n if (Object.keys(mutatedProperties).length > 0) {\n return mutate({ ...baseOptions, ...mutatedProperties }, { errorMessage: 'Failed to update role assignments.' });\n }\n } else {\n const mutatedProperties: Partial<B2BSSOUpdateExternalConnectionOptions> = {\n ...(implicitRoleAssignments && { external_connection_implicit_role_assignments: implicitRoleAssignments }),\n ...(implicitGroupAssignments && { external_group_implicit_role_assignments: implicitGroupAssignments }),\n };\n\n if (Object.keys(mutatedProperties).length > 0) {\n return mutate({ ...baseOptions, ...mutatedProperties }, { errorMessage: 'Failed to update role assignments.' });\n }\n }\n\n return Promise.resolve();\n }, [\n connection.connectionType,\n connection.connection_id,\n localState.connectionRoleIds,\n localState.groupedRoles,\n mutate,\n remoteState.connectionRoleIds,\n remoteState.groupedRoles,\n ]);\n\n const { useBlockNavigation } = useSsoRouterController();\n\n return (\n <SettingsContainer\n title=\"Role assignments\"\n hasCTA={canUpdateConnection}\n onSave={handleSave}\n useBlockNavigation={useBlockNavigation}\n editing={editing}\n setEditing={handleSetEditing}\n >\n <RoleAssignmentsSectionBody\n connection={connection}\n localState={localState}\n remoteState={remoteState}\n setLocalState={setLocalState}\n />\n </SettingsContainer>\n );\n};\n"],"names":["RoleAssignmentsSectionBody","connection","localState","setLocalState","remoteState","editing","useSettingsContainer","connectionRoleIds","groupedRoles","connectionNeedsGroupAttributeMapping","connectionType","attribute_mapping","groups","roleAutocompleteProps","useRoleAutocomplete","handleAddGroupRole","useCallback","state","group","roleIds","handleConnectionRolesChange","value","idpInfo","getIdpInfo","identity_provider","undefined","implicitRoleAssignments","saml_connection_implicit_role_assignments","external_connection_implicit_role_assignments","React","FlexBox","flexDirection","gap","SettingsSection","title","tooltipText","Autocomplete","onChange","length","RolesList","roles","Typography","variant","map","i","key","alignItems","justifyContent","Input","label","fullWidth","item","index","values","Button","startIcon","Add","onClick","Table","items","rowKeyExtractor","roleAssignmentKeyExtractor","itemRenderer","roleAssignmentItemRenderer","idp","attributeMappingLabel","getValue","color","RoleAssignmentsSection","canUpdateConnection","getSsoConnectionRoleAssignments","implicitGroupAssignments","getSsoGroupRoleAssignments","useMemo","role_id","Object","reduce","acc","push","handleSetEditing","useFormState","mutate","useMutateSsoConnection","handleSave","baseOptions","connection_id","deepEqual","filteredGroupRoles","filter","flatMap","mutatedProperties","saml_group_implicit_role_assignments","keys","errorMessage","external_group_implicit_role_assignments","Promise","resolve","useBlockNavigation","useSsoRouterController","SettingsContainer","hasCTA","onSave","setEditing"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"RoleAssignmentsSection.mjs","sources":["../../../../../../../../web/src/adminPortal/sso/RoleAssignmentsSection.tsx"],"sourcesContent":["import { Add } from '@mui/icons-material';\nimport { B2BSSOSAMLUpdateConnectionOptions, B2BSSOUpdateExternalConnectionOptions } from '@stytch/core/public';\nimport React, { SetStateAction, useCallback, useMemo } from 'react';\nimport { deepEqual } from '../../utils/deepEqual';\nimport { Autocomplete } from '../components/Autocomplete';\nimport { Button } from '../components/Button';\nimport { FlexBox } from '../components/FlexBox';\nimport { Input } from '../components/Input';\nimport { RolesList } from '../components/RolesList';\nimport { SettingsContainer, useSettingsContainer } from '../components/SettingsContainer';\nimport { SettingsSection } from '../components/SettingsSection';\nimport { Table } from '../components/Table';\nimport { Typography } from '../components/Typography';\nimport { TableItemRenderer } from '../shared/components/types';\nimport { getSsoConnectionRoleAssignments, getSsoGroupRoleAssignments } from '../utils/getSsoRoleAssignments';\nimport { useFormState } from '../utils/useFormState';\nimport { useMutateSsoConnection } from '../utils/useMutateSsoConnection';\nimport { useRbac } from '../utils/useRbac';\nimport { useRoleAutocomplete } from '../utils/useRoleAutocomplete';\nimport { getIdpInfo } from './IdpInfo';\nimport { useSsoRouterController } from './SSORouter';\nimport { ExternalTaggedConnection, SAMLTaggedConnection } from './TaggedConnection';\n\ntype ImplicitRoleAssignment = {\n group: string;\n roleIds: string[];\n};\n\ninterface RoleAssignmentsFormState {\n connectionRoleIds: string[];\n groupedRoles: ImplicitRoleAssignment[];\n}\n\nconst RoleAssignmentsSectionBody = ({\n connection,\n localState,\n setLocalState,\n remoteState,\n}: {\n connection: SAMLTaggedConnection | ExternalTaggedConnection;\n localState: RoleAssignmentsFormState;\n setLocalState: (state: SetStateAction<RoleAssignmentsFormState>) => void;\n remoteState: RoleAssignmentsFormState;\n}) => {\n const { editing } = useSettingsContainer();\n\n const { data: canGetOrgCustomRoles } = useRbac('stytch.custom-org-roles', 'get');\n\n const { connectionRoleIds, groupedRoles } = editing ? localState : remoteState;\n\n const connectionNeedsGroupAttributeMapping =\n connection.connectionType === 'saml' && !connection.attribute_mapping.groups;\n\n const roleAutocompleteProps = useRoleAutocomplete({ includeOrgRoles: canGetOrgCustomRoles ?? false });\n\n const handleAddGroupRole = useCallback(() => {\n setLocalState((state) => ({\n ...state,\n groupedRoles: [...state.groupedRoles, { group: '', roleIds: [] }],\n }));\n }, [setLocalState]);\n\n const handleConnectionRolesChange = useCallback(\n (value: string[]): void => {\n return setLocalState((state) => ({ ...state, connectionRoleIds: value }));\n },\n [setLocalState],\n );\n\n const idpInfo = connection.connectionType === 'saml' ? getIdpInfo(connection.identity_provider, 'saml') : undefined;\n\n const implicitRoleAssignments =\n connection.connectionType === 'saml'\n ? connection.saml_connection_implicit_role_assignments\n : connection.external_connection_implicit_role_assignments;\n\n return (\n <FlexBox flexDirection=\"column\" gap={2}>\n <SettingsSection\n title=\"Connection Roles\"\n tooltipText=\"Connection Roles are automatically assigned to all Members who authenticate via this SSO connection.\"\n >\n {editing ? (\n <Autocomplete {...roleAutocompleteProps} value={connectionRoleIds} onChange={handleConnectionRolesChange} />\n ) : implicitRoleAssignments.length > 0 ? (\n <RolesList roles={implicitRoleAssignments} />\n ) : (\n <Typography variant=\"body2\">No roles assigned.</Typography>\n )}\n </SettingsSection>\n <SettingsSection\n title=\"Group Roles\"\n tooltipText=\"If a Member is part of a group, they will be assigned both the Connection Role and their Group Role.\"\n >\n {connection.connectionType === 'external' && (\n <Typography variant=\"body2\">\n Ensure a "groups" key exists in the external connection Attribute Mapping first to assign group\n roles.\n </Typography>\n )}\n {!connectionNeedsGroupAttributeMapping ? (\n editing ? (\n <>\n {groupedRoles.map(({ group, roleIds }, i) => (\n <FlexBox key={i} alignItems=\"stretch\" justifyContent=\"space-between\">\n <Input\n label=\"Group name\"\n fullWidth\n value={group}\n onChange={(value) => {\n setLocalState((state) => ({\n ...state,\n groupedRoles: state.groupedRoles.map((item, index) =>\n index === i ? { ...item, group: value } : item,\n ),\n }));\n }}\n />\n <Autocomplete\n {...roleAutocompleteProps}\n label=\"Group Role\"\n value={roleIds}\n fullWidth\n onChange={(values) => {\n setLocalState((state) => ({\n ...state,\n groupedRoles: state.groupedRoles.map((item, index) =>\n index === i ? { ...item, roleIds: values } : item,\n ),\n }));\n }}\n />\n </FlexBox>\n ))}\n <Button variant=\"text\" startIcon={<Add />} onClick={handleAddGroupRole}>\n Add group roles\n </Button>\n </>\n ) : groupedRoles.length > 0 ? (\n <Table\n items={groupedRoles}\n rowKeyExtractor={roleAssignmentKeyExtractor}\n itemRenderer={roleAssignmentItemRenderer}\n ></Table>\n ) : (\n <Typography variant=\"body2\">No roles assigned.</Typography>\n )\n ) : (\n idpInfo && (\n <Typography variant=\"body2\">\n Add a "groups" key in the {idpInfo.idp.attributeMappingLabel} first to assign group roles.\n </Typography>\n )\n )}\n </SettingsSection>\n </FlexBox>\n );\n};\n\nconst roleAssignmentKeyExtractor = ({ group }: ImplicitRoleAssignment) => group;\n\nconst roleAssignmentItemRenderer: TableItemRenderer<ImplicitRoleAssignment>[] = [\n {\n title: 'Group',\n getValue: ({ group }) => (\n <Typography variant=\"body2\" color=\"secondary\">\n {group}\n </Typography>\n ),\n },\n { title: 'Role', getValue: ({ roleIds }) => <RolesList roles={roleIds} /> },\n];\n\nexport const RoleAssignmentsSection = ({\n canUpdateConnection,\n connection,\n}: {\n canUpdateConnection: boolean;\n connection: SAMLTaggedConnection | ExternalTaggedConnection;\n}) => {\n const implicitRoleAssignments = getSsoConnectionRoleAssignments(connection);\n const implicitGroupAssignments = getSsoGroupRoleAssignments(connection);\n\n const connectionRoleIds = useMemo(\n () => implicitRoleAssignments.map(({ role_id }) => role_id),\n [implicitRoleAssignments],\n );\n\n const groupedRoles = useMemo(() => {\n return Object.values(\n implicitGroupAssignments.reduce<Record<string, ImplicitRoleAssignment>>((acc, { group, role_id }) => {\n if (!acc[group]) {\n acc[group] = { group, roleIds: [] };\n }\n\n acc[group].roleIds.push(role_id);\n\n return acc;\n }, {}),\n );\n }, [implicitGroupAssignments]);\n\n const remoteState = useMemo<RoleAssignmentsFormState>(\n () => ({\n connectionRoleIds,\n groupedRoles,\n }),\n [connectionRoleIds, groupedRoles],\n );\n\n const { localState, setLocalState, editing, handleSetEditing } = useFormState({ remoteState });\n\n const { mutate } = useMutateSsoConnection(connection.connectionType);\n\n const handleSave = useCallback(async () => {\n const baseOptions = {\n connection_id: connection.connection_id,\n };\n\n const implicitRoleAssignments = !deepEqual(remoteState.connectionRoleIds, localState.connectionRoleIds)\n ? localState.connectionRoleIds.map((role_id) => ({\n role_id,\n }))\n : undefined;\n\n const filteredGroupRoles = localState.groupedRoles.filter(({ group, roleIds }) => group && roleIds.length > 0);\n const implicitGroupAssignments = !deepEqual(remoteState.groupedRoles, filteredGroupRoles)\n ? filteredGroupRoles.flatMap(({ group, roleIds }) => roleIds.map((role_id) => ({ group, role_id })))\n : undefined;\n\n if (connection.connectionType === 'saml') {\n const mutatedProperties: Partial<B2BSSOSAMLUpdateConnectionOptions> = {\n ...(implicitRoleAssignments && { saml_connection_implicit_role_assignments: implicitRoleAssignments }),\n ...(implicitGroupAssignments && { saml_group_implicit_role_assignments: implicitGroupAssignments }),\n };\n\n if (Object.keys(mutatedProperties).length > 0) {\n return mutate({ ...baseOptions, ...mutatedProperties }, { errorMessage: 'Failed to update role assignments.' });\n }\n } else {\n const mutatedProperties: Partial<B2BSSOUpdateExternalConnectionOptions> = {\n ...(implicitRoleAssignments && { external_connection_implicit_role_assignments: implicitRoleAssignments }),\n ...(implicitGroupAssignments && { external_group_implicit_role_assignments: implicitGroupAssignments }),\n };\n\n if (Object.keys(mutatedProperties).length > 0) {\n return mutate({ ...baseOptions, ...mutatedProperties }, { errorMessage: 'Failed to update role assignments.' });\n }\n }\n\n return Promise.resolve();\n }, [\n connection.connectionType,\n connection.connection_id,\n localState.connectionRoleIds,\n localState.groupedRoles,\n mutate,\n remoteState.connectionRoleIds,\n remoteState.groupedRoles,\n ]);\n\n const { useBlockNavigation } = useSsoRouterController();\n\n return (\n <SettingsContainer\n title=\"Role assignments\"\n hasCTA={canUpdateConnection}\n onSave={handleSave}\n useBlockNavigation={useBlockNavigation}\n editing={editing}\n setEditing={handleSetEditing}\n >\n <RoleAssignmentsSectionBody\n connection={connection}\n localState={localState}\n remoteState={remoteState}\n setLocalState={setLocalState}\n />\n </SettingsContainer>\n );\n};\n"],"names":["RoleAssignmentsSectionBody","connection","localState","setLocalState","remoteState","editing","useSettingsContainer","data","canGetOrgCustomRoles","useRbac","connectionRoleIds","groupedRoles","connectionNeedsGroupAttributeMapping","connectionType","attribute_mapping","groups","roleAutocompleteProps","useRoleAutocomplete","includeOrgRoles","handleAddGroupRole","useCallback","state","group","roleIds","handleConnectionRolesChange","value","idpInfo","getIdpInfo","identity_provider","undefined","implicitRoleAssignments","saml_connection_implicit_role_assignments","external_connection_implicit_role_assignments","React","FlexBox","flexDirection","gap","SettingsSection","title","tooltipText","Autocomplete","onChange","length","RolesList","roles","Typography","variant","map","i","key","alignItems","justifyContent","Input","label","fullWidth","item","index","values","Button","startIcon","Add","onClick","Table","items","rowKeyExtractor","roleAssignmentKeyExtractor","itemRenderer","roleAssignmentItemRenderer","idp","attributeMappingLabel","getValue","color","RoleAssignmentsSection","canUpdateConnection","getSsoConnectionRoleAssignments","implicitGroupAssignments","getSsoGroupRoleAssignments","useMemo","role_id","Object","reduce","acc","push","handleSetEditing","useFormState","mutate","useMutateSsoConnection","handleSave","baseOptions","connection_id","deepEqual","filteredGroupRoles","filter","flatMap","mutatedProperties","saml_group_implicit_role_assignments","keys","errorMessage","external_group_implicit_role_assignments","Promise","resolve","useBlockNavigation","useSsoRouterController","SettingsContainer","hasCTA","onSave","setEditing"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import merge from '../../../../../_virtual/
|
|
1
|
+
import merge from '../../../../../_virtual/index4.mjs';
|
|
2
2
|
import 'react';
|
|
3
3
|
import createTheme from '../../../../../node_modules/@mui/material/styles/createTheme.mjs';
|
|
4
4
|
import selectClasses from '../../../../../node_modules/@mui/material/Select/selectClasses.mjs';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useRbac.mjs","sources":["../../../../../../../../web/src/adminPortal/utils/useRbac.ts"],"sourcesContent":["import useSWR from 'swr';\nimport { useSelf } from './useSelf';\nimport { useStytchClient } from './useStytchClient';\n\ntype RbacMap = {\n 'stytch.organization': [\n 'update.info.name',\n 'update.info.slug',\n 'update.info.logo-url',\n 'update.settings.allowed-auth-methods',\n 'update.settings.allowed-mfa-methods',\n 'update.settings.email-jit-provisioning',\n 'update.settings.email-invites',\n 'update.settings.allowed-domains',\n 'update.settings.default-sso-connection',\n 'update.settings.sso-jit-provisioning',\n 'update.settings.mfa-policy',\n 'update.settings.implicit-roles',\n 'update.settings.oauth-tenant-jit-provisioning',\n 'update.settings.allowed-oauth-tenants',\n 'delete',\n ];\n 'stytch.member': [\n 'create',\n 'update.info.name',\n 'update.info.email',\n 'update.info.untrusted-metadata',\n 'update.info.mfa-phone',\n 'update.info.delete.mfa-phone',\n 'update.info.delete.mfa-totp',\n 'update.info.delete.password',\n 'update.settings.is-breakglass',\n 'update.settings.mfa-enrolled',\n 'update.settings.default-mfa-method',\n 'update.settings.roles',\n 'search',\n 'delete',\n 'revoke-sessions',\n ];\n 'stytch.sso': ['create', 'get', 'update', 'delete'];\n 'stytch.self': [\n 'update.info.name',\n 'update.info.untrusted-metadata',\n 'update.info.mfa-phone',\n 'update.info.delete.mfa-phone',\n 'update.info.delete.password',\n 'update.info.delete.mfa-totp',\n 'update.settings.mfa-enrolled',\n 'update.settings.default-mfa-method',\n 'delete',\n 'revoke-sessions',\n ];\n 'stytch.scim': ['create', 'get', 'update', 'delete'];\n};\n\ntype RbacResourceId = keyof RbacMap;\n\ntype RbacAction<TResourceId extends RbacResourceId> = RbacMap[TResourceId][number];\n\nexport const useRbac = <TResourceId extends RbacResourceId>(\n resourceId: TResourceId,\n action: RbacAction<TResourceId>,\n) => {\n const client = useStytchClient();\n const { self } = useSelf();\n const memberId = self?.member_id;\n\n return useSWR(\n () => memberId && ['rbac', memberId, resourceId, action],\n () => client.rbac.isAuthorized(resourceId, action),\n {\n keepPreviousData: true,\n },\n );\n};\n"],"names":["useRbac","resourceId","action","client","useStytchClient","self","useSelf","memberId","member_id","useSWR","rbac","isAuthorized","keepPreviousData"],"mappings":";;;;
|
|
1
|
+
{"version":3,"file":"useRbac.mjs","sources":["../../../../../../../../web/src/adminPortal/utils/useRbac.ts"],"sourcesContent":["import useSWR from 'swr';\nimport { useSelf } from './useSelf';\nimport { useStytchClient } from './useStytchClient';\n\ntype RbacMap = {\n 'stytch.organization': [\n 'update.info.name',\n 'update.info.slug',\n 'update.info.logo-url',\n 'update.settings.allowed-auth-methods',\n 'update.settings.allowed-mfa-methods',\n 'update.settings.email-jit-provisioning',\n 'update.settings.email-invites',\n 'update.settings.allowed-domains',\n 'update.settings.default-sso-connection',\n 'update.settings.sso-jit-provisioning',\n 'update.settings.mfa-policy',\n 'update.settings.implicit-roles',\n 'update.settings.oauth-tenant-jit-provisioning',\n 'update.settings.allowed-oauth-tenants',\n 'delete',\n ];\n 'stytch.member': [\n 'create',\n 'update.info.name',\n 'update.info.email',\n 'update.info.untrusted-metadata',\n 'update.info.mfa-phone',\n 'update.info.delete.mfa-phone',\n 'update.info.delete.mfa-totp',\n 'update.info.delete.password',\n 'update.settings.is-breakglass',\n 'update.settings.mfa-enrolled',\n 'update.settings.default-mfa-method',\n 'update.settings.roles',\n 'search',\n 'delete',\n 'revoke-sessions',\n ];\n 'stytch.sso': ['create', 'get', 'update', 'delete'];\n 'stytch.self': [\n 'update.info.name',\n 'update.info.untrusted-metadata',\n 'update.info.mfa-phone',\n 'update.info.delete.mfa-phone',\n 'update.info.delete.password',\n 'update.info.delete.mfa-totp',\n 'update.settings.mfa-enrolled',\n 'update.settings.default-mfa-method',\n 'delete',\n 'revoke-sessions',\n ];\n 'stytch.scim': ['create', 'get', 'update', 'delete'];\n 'stytch.custom-org-roles': ['create', 'get', 'update', 'delete'];\n};\n\ntype RbacResourceId = keyof RbacMap;\n\ntype RbacAction<TResourceId extends RbacResourceId> = RbacMap[TResourceId][number];\n\nexport const useRbac = <TResourceId extends RbacResourceId>(\n resourceId: TResourceId,\n action: RbacAction<TResourceId>,\n) => {\n const client = useStytchClient();\n const { self } = useSelf();\n const memberId = self?.member_id;\n\n return useSWR(\n () => memberId && ['rbac', memberId, resourceId, action],\n () => client.rbac.isAuthorized(resourceId, action),\n {\n keepPreviousData: true,\n },\n );\n};\n"],"names":["useRbac","resourceId","action","client","useStytchClient","self","useSelf","memberId","member_id","useSWR","rbac","isAuthorized","keepPreviousData"],"mappings":";;;;AA4DO,MAAMA,OAAAA,GAAU,CACrBC,UAAAA,EACAC,MAAAA,GAAAA;AAEA,IAAA,MAAMC,MAAAA,GAASC,eAAAA,EAAAA;IACf,MAAM,EAAEC,IAAI,EAAE,GAAGC,OAAAA,EAAAA;AACjB,IAAA,MAAMC,WAAWF,IAAAA,EAAMG,SAAAA;IAEvB,OAAOC,MAAAA,CACL,IAAMF,QAAAA,IAAY;AAAC,YAAA,MAAA;AAAQA,YAAAA,QAAAA;AAAUN,YAAAA,UAAAA;AAAYC,YAAAA;AAAO,SAAA,EACxD,IAAMC,MAAAA,CAAOO,IAAI,CAACC,YAAY,CAACV,YAAYC,MAAAA,CAAAA,EAC3C;QACEU,gBAAAA,EAAkB;AACpB,KAAA,CAAA;AAEJ;;;;"}
|
|
@@ -4,8 +4,8 @@ import { useRoleDisplayInfo } from './useRoleDisplayInfo.mjs';
|
|
|
4
4
|
import { useRoleSortFn } from './useRoleSortFn.mjs';
|
|
5
5
|
import { useRoles } from './useRoles.mjs';
|
|
6
6
|
|
|
7
|
-
const useRoleAutocomplete = ({ excludeStytchMember = false } = {})=>{
|
|
8
|
-
const allRoles = useRoles();
|
|
7
|
+
const useRoleAutocomplete = ({ excludeStytchMember = false, includeOrgRoles = false } = {})=>{
|
|
8
|
+
const allRoles = useRoles(includeOrgRoles);
|
|
9
9
|
const assignableRoles = useMemo(()=>excludeStytchMember ? allRoles?.filter((role)=>role.role_id !== ROLE_ID_STYTCH_MEMBER) : allRoles, [
|
|
10
10
|
allRoles,
|
|
11
11
|
excludeStytchMember
|
|
@@ -17,7 +17,7 @@ const useRoleAutocomplete = ({ excludeStytchMember = false } = {})=>{
|
|
|
17
17
|
assignableRoles,
|
|
18
18
|
sortRoles
|
|
19
19
|
]);
|
|
20
|
-
const { roleInfo, getRoleIdDisplayName } = useRoleDisplayInfo();
|
|
20
|
+
const { roleInfo, getRoleIdDisplayName } = useRoleDisplayInfo(includeOrgRoles);
|
|
21
21
|
return {
|
|
22
22
|
selectItems: roleSelectItems,
|
|
23
23
|
getOptionDescription: (roleId)=>roleInfo[roleId].description,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useRoleAutocomplete.mjs","sources":["../../../../../../../../web/src/adminPortal/utils/useRoleAutocomplete.ts"],"sourcesContent":["import { useMemo } from 'react';\nimport { ROLE_ID_STYTCH_MEMBER } from './roles';\nimport { useRoleDisplayInfo } from './useRoleDisplayInfo';\nimport { useRoleSortFn } from './useRoleSortFn';\nimport { useRoles } from './useRoles';\n\nexport const useRoleAutocomplete = ({
|
|
1
|
+
{"version":3,"file":"useRoleAutocomplete.mjs","sources":["../../../../../../../../web/src/adminPortal/utils/useRoleAutocomplete.ts"],"sourcesContent":["import { useMemo } from 'react';\nimport { ROLE_ID_STYTCH_MEMBER } from './roles';\nimport { useRoleDisplayInfo } from './useRoleDisplayInfo';\nimport { useRoleSortFn } from './useRoleSortFn';\nimport { useRoles } from './useRoles';\n\nexport const useRoleAutocomplete = ({\n excludeStytchMember = false,\n includeOrgRoles = false,\n}: { excludeStytchMember?: boolean; includeOrgRoles?: boolean } = {}) => {\n const allRoles = useRoles(includeOrgRoles);\n const assignableRoles = useMemo(\n () => (excludeStytchMember ? allRoles?.filter((role) => role.role_id !== ROLE_ID_STYTCH_MEMBER) : allRoles),\n [allRoles, excludeStytchMember],\n );\n\n const sortRoles = useRoleSortFn();\n\n const roleSelectItems = useMemo(() => {\n return sortRoles(assignableRoles ?? []).map((role) => role.role_id);\n }, [assignableRoles, sortRoles]);\n\n const { roleInfo, getRoleIdDisplayName } = useRoleDisplayInfo(includeOrgRoles);\n\n return {\n selectItems: roleSelectItems,\n getOptionDescription: (roleId: string) => roleInfo[roleId].description,\n getOptionLabel: getRoleIdDisplayName,\n };\n};\n"],"names":["useRoleAutocomplete","excludeStytchMember","includeOrgRoles","allRoles","useRoles","assignableRoles","useMemo","filter","role","role_id","ROLE_ID_STYTCH_MEMBER","sortRoles","useRoleSortFn","roleSelectItems","map","roleInfo","getRoleIdDisplayName","useRoleDisplayInfo","selectItems","getOptionDescription","roleId","description","getOptionLabel"],"mappings":";;;;;;AAMO,MAAMA,mBAAAA,GAAsB,CAAC,EAClCC,mBAAAA,GAAsB,KAAK,EAC3BC,eAAAA,GAAkB,KAAK,EACsC,GAAG,EAAE,GAAA;AAClE,IAAA,MAAMC,WAAWC,QAAAA,CAASF,eAAAA,CAAAA;AAC1B,IAAA,MAAMG,eAAAA,GAAkBC,OAAAA,CACtB,IAAOL,mBAAAA,GAAsBE,QAAAA,EAAUI,MAAAA,CAAO,CAACC,IAAAA,GAASA,IAAAA,CAAKC,OAAO,KAAKC,qBAAAA,CAAAA,GAAyBP,QAAAA,EAClG;AAACA,QAAAA,QAAAA;AAAUF,QAAAA;AAAoB,KAAA,CAAA;AAGjC,IAAA,MAAMU,SAAAA,GAAYC,aAAAA,EAAAA;AAElB,IAAA,MAAMC,kBAAkBP,OAAAA,CAAQ,IAAA;QAC9B,OAAOK,SAAAA,CAAUN,mBAAmB,EAAE,CAAA,CAAES,GAAG,CAAC,CAACN,IAAAA,GAASA,IAAAA,CAAKC,OAAO,CAAA;IACpE,CAAA,EAAG;AAACJ,QAAAA,eAAAA;AAAiBM,QAAAA;AAAU,KAAA,CAAA;AAE/B,IAAA,MAAM,EAAEI,QAAQ,EAAEC,oBAAoB,EAAE,GAAGC,kBAAAA,CAAmBf,eAAAA,CAAAA;IAE9D,OAAO;QACLgB,WAAAA,EAAaL,eAAAA;AACbM,QAAAA,oBAAAA,EAAsB,CAACC,MAAAA,GAAmBL,QAAQ,CAACK,MAAAA,CAAO,CAACC,WAAW;QACtEC,cAAAA,EAAgBN;AAClB,KAAA;AACF;;;;"}
|
|
@@ -3,8 +3,8 @@ import { useGetRoleDescription } from './useGetRoleDescription.mjs';
|
|
|
3
3
|
import { useGetRoleDisplayName } from './useGetRoleDisplayName.mjs';
|
|
4
4
|
import { useRoles } from './useRoles.mjs';
|
|
5
5
|
|
|
6
|
-
const useRoleDisplayInfo = ()=>{
|
|
7
|
-
const allRoles = useRoles();
|
|
6
|
+
const useRoleDisplayInfo = (includeOrgRoles = false)=>{
|
|
7
|
+
const allRoles = useRoles(includeOrgRoles);
|
|
8
8
|
const getRoleDisplayName = useGetRoleDisplayName();
|
|
9
9
|
const getRoleDescription = useGetRoleDescription();
|
|
10
10
|
const roleInfo = useMemo(()=>{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useRoleDisplayInfo.mjs","sources":["../../../../../../../../web/src/adminPortal/utils/useRoleDisplayInfo.ts"],"sourcesContent":["import { useCallback, useMemo } from 'react';\nimport { useGetRoleDescription } from './useGetRoleDescription';\nimport { useGetRoleDisplayName } from './useGetRoleDisplayName';\nimport { useRoles } from './useRoles';\n\nexport const useRoleDisplayInfo = () => {\n const allRoles = useRoles();\n\n const getRoleDisplayName = useGetRoleDisplayName();\n const getRoleDescription = useGetRoleDescription();\n\n const roleInfo = useMemo(() => {\n return (\n allRoles?.reduce<Record<string, { description: string; label: string }>>((acc, role) => {\n acc[role.role_id] = { description: getRoleDescription(role), label: getRoleDisplayName(role) };\n return acc;\n }, {}) ?? {}\n );\n }, [allRoles, getRoleDescription, getRoleDisplayName]);\n\n const getRoleIdDisplayName = useCallback((roleId: string) => roleInfo[roleId].label ?? roleId, [roleInfo]);\n\n return { roleInfo, getRoleIdDisplayName };\n};\n"],"names":["useRoleDisplayInfo","allRoles","useRoles","getRoleDisplayName","useGetRoleDisplayName","getRoleDescription","useGetRoleDescription","roleInfo","useMemo","reduce","acc","role","role_id","description","label","getRoleIdDisplayName","useCallback","roleId"],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"useRoleDisplayInfo.mjs","sources":["../../../../../../../../web/src/adminPortal/utils/useRoleDisplayInfo.ts"],"sourcesContent":["import { useCallback, useMemo } from 'react';\nimport { useGetRoleDescription } from './useGetRoleDescription';\nimport { useGetRoleDisplayName } from './useGetRoleDisplayName';\nimport { useRoles } from './useRoles';\n\nexport const useRoleDisplayInfo = (includeOrgRoles = false) => {\n const allRoles = useRoles(includeOrgRoles);\n\n const getRoleDisplayName = useGetRoleDisplayName();\n const getRoleDescription = useGetRoleDescription();\n\n const roleInfo = useMemo(() => {\n return (\n allRoles?.reduce<Record<string, { description: string; label: string }>>((acc, role) => {\n acc[role.role_id] = { description: getRoleDescription(role), label: getRoleDisplayName(role) };\n return acc;\n }, {}) ?? {}\n );\n }, [allRoles, getRoleDescription, getRoleDisplayName]);\n\n const getRoleIdDisplayName = useCallback((roleId: string) => roleInfo[roleId].label ?? roleId, [roleInfo]);\n\n return { roleInfo, getRoleIdDisplayName };\n};\n"],"names":["useRoleDisplayInfo","includeOrgRoles","allRoles","useRoles","getRoleDisplayName","useGetRoleDisplayName","getRoleDescription","useGetRoleDescription","roleInfo","useMemo","reduce","acc","role","role_id","description","label","getRoleIdDisplayName","useCallback","roleId"],"mappings":";;;;;AAKO,MAAMA,kBAAAA,GAAqB,CAACC,eAAAA,GAAkB,KAAK,GAAA;AACxD,IAAA,MAAMC,WAAWC,QAAAA,CAASF,eAAAA,CAAAA;AAE1B,IAAA,MAAMG,kBAAAA,GAAqBC,qBAAAA,EAAAA;AAC3B,IAAA,MAAMC,kBAAAA,GAAqBC,qBAAAA,EAAAA;AAE3B,IAAA,MAAMC,WAAWC,OAAAA,CAAQ,IAAA;QACvB,OACEP,QAAAA,EAAUQ,MAAAA,CAA+D,CAACC,GAAAA,EAAKC,IAAAA,GAAAA;AAC7ED,YAAAA,GAAG,CAACC,IAAAA,CAAKC,OAAO,CAAC,GAAG;AAAEC,gBAAAA,WAAAA,EAAaR,kBAAAA,CAAmBM,IAAAA,CAAAA;AAAOG,gBAAAA,KAAAA,EAAOX,kBAAAA,CAAmBQ,IAAAA;AAAM,aAAA;YAC7F,OAAOD,GAAAA;QACT,CAAA,EAAG,OAAO,EAAC;IAEf,CAAA,EAAG;AAACT,QAAAA,QAAAA;AAAUI,QAAAA,kBAAAA;AAAoBF,QAAAA;AAAmB,KAAA,CAAA;IAErD,MAAMY,oBAAAA,GAAuBC,WAAAA,CAAY,CAACC,MAAAA,GAAmBV,QAAQ,CAACU,MAAAA,CAAO,CAACH,KAAK,IAAIG,MAAAA,EAAQ;AAACV,QAAAA;AAAS,KAAA,CAAA;IAEzG,OAAO;AAAEA,QAAAA,QAAAA;AAAUQ,QAAAA;AAAqB,KAAA;AAC1C;;;;"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { useState, useEffect } from 'react';
|
|
2
2
|
import { useB2BInternals } from './useB2BInternals.mjs';
|
|
3
3
|
|
|
4
|
-
const useRoles = ()=>{
|
|
4
|
+
const useRoles = (includeOrgRoles = false)=>{
|
|
5
5
|
const b2bInternals = useB2BInternals();
|
|
6
6
|
const [roles, setRoles] = useState(b2bInternals.bootstrap.getSync().rbacPolicy?.roles);
|
|
7
7
|
useEffect(()=>{
|
|
@@ -9,7 +9,12 @@ const useRoles = ()=>{
|
|
|
9
9
|
setRoles(value.rbacPolicy?.roles);
|
|
10
10
|
});
|
|
11
11
|
});
|
|
12
|
-
|
|
12
|
+
let allRoles = roles;
|
|
13
|
+
if (includeOrgRoles) {
|
|
14
|
+
const orgRoles = b2bInternals.dataLayer.state?.organization?.custom_roles ?? [];
|
|
15
|
+
allRoles = (roles ?? []).concat(orgRoles ?? []);
|
|
16
|
+
}
|
|
17
|
+
return allRoles;
|
|
13
18
|
};
|
|
14
19
|
|
|
15
20
|
export { useRoles };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useRoles.mjs","sources":["../../../../../../../../web/src/adminPortal/utils/useRoles.ts"],"sourcesContent":["import { RBACPolicyRole } from '@stytch/core';\nimport { useEffect, useState } from 'react';\nimport { useB2BInternals } from './useB2BInternals';\n\nexport const useRoles = () => {\n const b2bInternals = useB2BInternals();\n const [roles, setRoles] = useState<RBACPolicyRole[] | undefined>(b2bInternals.bootstrap.getSync().rbacPolicy?.roles);\n
|
|
1
|
+
{"version":3,"file":"useRoles.mjs","sources":["../../../../../../../../web/src/adminPortal/utils/useRoles.ts"],"sourcesContent":["import { RBACPolicyRole } from '@stytch/core';\nimport { useEffect, useState } from 'react';\nimport { useB2BInternals } from './useB2BInternals';\n\nexport const useRoles = (includeOrgRoles = false) => {\n const b2bInternals = useB2BInternals();\n const [roles, setRoles] = useState<RBACPolicyRole[] | undefined>(b2bInternals.bootstrap.getSync().rbacPolicy?.roles);\n useEffect(() => {\n b2bInternals.bootstrap.getAsync().then((value) => {\n setRoles(value.rbacPolicy?.roles);\n });\n });\n\n let allRoles = roles;\n if (includeOrgRoles) {\n const orgRoles: RBACPolicyRole[] = b2bInternals.dataLayer.state?.organization?.custom_roles ?? [];\n allRoles = (roles ?? []).concat(orgRoles ?? []);\n }\n\n return allRoles;\n};\n"],"names":["useRoles","includeOrgRoles","b2bInternals","useB2BInternals","roles","setRoles","useState","bootstrap","getSync","rbacPolicy","useEffect","getAsync","then","value","allRoles","orgRoles","dataLayer","state","organization","custom_roles","concat"],"mappings":";;;AAIO,MAAMA,QAAAA,GAAW,CAACC,eAAAA,GAAkB,KAAK,GAAA;AAC9C,IAAA,MAAMC,YAAAA,GAAeC,eAAAA,EAAAA;IACrB,MAAM,CAACC,KAAAA,EAAOC,QAAAA,CAAS,GAAGC,QAAAA,CAAuCJ,YAAAA,CAAaK,SAAS,CAACC,OAAO,EAAA,CAAGC,UAAU,EAAEL,KAAAA,CAAAA;IAC9GM,SAAAA,CAAU,IAAA;AACRR,QAAAA,YAAAA,CAAaK,SAAS,CAACI,QAAQ,EAAA,CAAGC,IAAI,CAAC,CAACC,KAAAA,GAAAA;YACtCR,QAAAA,CAASQ,KAAAA,CAAMJ,UAAU,EAAEL,KAAAA,CAAAA;AAC7B,QAAA,CAAA,CAAA;AACF,IAAA,CAAA,CAAA;AAEA,IAAA,IAAIU,QAAAA,GAAWV,KAAAA;AACf,IAAA,IAAIH,eAAAA,EAAiB;QACnB,MAAMc,QAAAA,GAA6Bb,aAAac,SAAS,CAACC,KAAK,EAAEC,YAAAA,EAAcC,gBAAgB,EAAE;QACjGL,QAAAA,GAAYV,CAAAA,KAAAA,IAAS,EAAE,EAAEgB,MAAM,CAACL,QAAAA,IAAY,EAAE,CAAA;AAChD,IAAA;IAEA,OAAOD,QAAAA;AACT;;;;"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React__default from 'react';
|
|
2
|
-
import classNames from '../../../../../../_virtual/
|
|
2
|
+
import classNames from '../../../../../../_virtual/index.mjs';
|
|
3
3
|
import { Badge } from '../../components/molecules/Badge.mjs';
|
|
4
4
|
import { buttonClassNames } from '../../components/atoms/Button.mjs';
|
|
5
5
|
import VerticalTransition, { hoverTriggerClass } from '../../components/atoms/VerticalTransition.mjs';
|