@atlashub/smartstack 3.39.0 → 3.40.0
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/dist/chunks/{AgentSkillsPage-DgqyaZwI.js → AgentSkillsPage-BS_W2KTh.js} +2 -2
- package/dist/chunks/{AgentSkillsPage-DgqyaZwI.js.map → AgentSkillsPage-BS_W2KTh.js.map} +1 -1
- package/dist/chunks/{AgentSkillsPage-ojivq0Cu.js → AgentSkillsPage-CmDFLnp7.js} +2 -2
- package/dist/chunks/{AgentSkillsPage-ojivq0Cu.js.map → AgentSkillsPage-CmDFLnp7.js.map} +1 -1
- package/dist/chunks/{AgentWorkloadPage-BGGTfOLs.js → AgentWorkloadPage-C8IvYfhT.js} +2 -2
- package/dist/chunks/{AgentWorkloadPage-BGGTfOLs.js.map → AgentWorkloadPage-C8IvYfhT.js.map} +1 -1
- package/dist/chunks/{AgentWorkloadPage-DWsC5VoS.js → AgentWorkloadPage-JXsQbwuM.js} +2 -2
- package/dist/chunks/{AgentWorkloadPage-DWsC5VoS.js.map → AgentWorkloadPage-JXsQbwuM.js.map} +1 -1
- package/dist/chunks/{ApiCatalogDetailPage-7EifQOAh.js → ApiCatalogDetailPage-CYOt34Vy.js} +2 -2
- package/dist/chunks/{ApiCatalogDetailPage-7EifQOAh.js.map → ApiCatalogDetailPage-CYOt34Vy.js.map} +1 -1
- package/dist/chunks/{ApiCatalogDetailPage-BD7XE4xK.js → ApiCatalogDetailPage-wFZDsTGy.js} +3 -3
- package/dist/chunks/{ApiCatalogDetailPage-BD7XE4xK.js.map → ApiCatalogDetailPage-wFZDsTGy.js.map} +1 -1
- package/dist/chunks/{ApiCatalogPage-BfPoZGD3.js → ApiCatalogPage-Bdm3HNGP.js} +2 -2
- package/dist/chunks/{ApiCatalogPage-BfPoZGD3.js.map → ApiCatalogPage-Bdm3HNGP.js.map} +1 -1
- package/dist/chunks/{ApiCatalogPage-BOPTnk-b.js → ApiCatalogPage-m_TWQyGv.js} +2 -2
- package/dist/chunks/{ApiCatalogPage-BOPTnk-b.js.map → ApiCatalogPage-m_TWQyGv.js.map} +1 -1
- package/dist/chunks/ApplicationDetailPage-C2BSpEoW.js +2 -0
- package/dist/chunks/{ApplicationDetailPage-CWdz0TS4.js.map → ApplicationDetailPage-C2BSpEoW.js.map} +1 -1
- package/dist/chunks/{ApplicationDetailPage-CDQqViuH.js → ApplicationDetailPage-CcgDAP-J.js} +503 -501
- package/dist/chunks/{ApplicationDetailPage-CDQqViuH.js.map → ApplicationDetailPage-CcgDAP-J.js.map} +1 -1
- package/dist/chunks/{ApplicationsDashboardPage-ZyXm2Cd1.js → ApplicationsDashboardPage-CDIjziL3.js} +3 -3
- package/dist/chunks/{ApplicationsDashboardPage-ZyXm2Cd1.js.map → ApplicationsDashboardPage-CDIjziL3.js.map} +1 -1
- package/dist/chunks/{ApplicationsDashboardPage-BH4S3qA2.js → ApplicationsDashboardPage-DslDyNzJ.js} +2 -2
- package/dist/chunks/{ApplicationsDashboardPage-BH4S3qA2.js.map → ApplicationsDashboardPage-DslDyNzJ.js.map} +1 -1
- package/dist/chunks/{ApplicationsGridPage-D0fU1_Le.js → ApplicationsGridPage-BCjsQGU0.js} +2 -2
- package/dist/chunks/{ApplicationsGridPage-D0fU1_Le.js.map → ApplicationsGridPage-BCjsQGU0.js.map} +1 -1
- package/dist/chunks/{ApplicationsGridPage-C1WF2Htv.js → ApplicationsGridPage-CIfKiCND.js} +2 -2
- package/dist/chunks/{ApplicationsGridPage-C1WF2Htv.js.map → ApplicationsGridPage-CIfKiCND.js.map} +1 -1
- package/dist/chunks/{ApplicationsListPage-Cxvt2_WQ.js → ApplicationsListPage-CT75kNcH.js} +2 -2
- package/dist/chunks/{ApplicationsListPage-Cxvt2_WQ.js.map → ApplicationsListPage-CT75kNcH.js.map} +1 -1
- package/dist/chunks/{ApplicationsListPage-B3ItaY4r.js → ApplicationsListPage-D2B4PZ5n.js} +2 -2
- package/dist/chunks/{ApplicationsListPage-B3ItaY4r.js.map → ApplicationsListPage-D2B4PZ5n.js.map} +1 -1
- package/dist/chunks/{ApplicationsPage-BqfNR-kc.js → ApplicationsPage-CaTBtduL.js} +2 -2
- package/dist/chunks/{ApplicationsPage-BqfNR-kc.js.map → ApplicationsPage-CaTBtduL.js.map} +1 -1
- package/dist/chunks/{ApplicationsPage-DuxuWfrN.js → ApplicationsPage-DW1LhL0U.js} +4 -4
- package/dist/chunks/{ApplicationsPage-DuxuWfrN.js.map → ApplicationsPage-DW1LhL0U.js.map} +1 -1
- package/dist/chunks/{AssignmentRulesPage-CR1C7V0a.js → AssignmentRulesPage-Bt9M0ki7.js} +2 -2
- package/dist/chunks/{AssignmentRulesPage-CR1C7V0a.js.map → AssignmentRulesPage-Bt9M0ki7.js.map} +1 -1
- package/dist/chunks/{AssignmentRulesPage-C4Jouh2g.js → AssignmentRulesPage-Y7xv60NY.js} +2 -2
- package/dist/chunks/{AssignmentRulesPage-C4Jouh2g.js.map → AssignmentRulesPage-Y7xv60NY.js.map} +1 -1
- package/dist/chunks/{AssignmentsPage-v8QUJkE7.js → AssignmentsPage-1eQGTjTi.js} +2 -2
- package/dist/chunks/{AssignmentsPage-v8QUJkE7.js.map → AssignmentsPage-1eQGTjTi.js.map} +1 -1
- package/dist/chunks/{AssignmentsPage-CjuGAd8n.js → AssignmentsPage-RURdPvfZ.js} +2 -2
- package/dist/chunks/{AssignmentsPage-CjuGAd8n.js.map → AssignmentsPage-RURdPvfZ.js.map} +1 -1
- package/dist/chunks/{AuthCallbackPage-BxIXPUJk.js → AuthCallbackPage-8hF0jYlK.js} +2 -2
- package/dist/chunks/{AuthCallbackPage-BxIXPUJk.js.map → AuthCallbackPage-8hF0jYlK.js.map} +1 -1
- package/dist/chunks/{AuthCallbackPage-CuS-efzY.js → AuthCallbackPage-DPL68Asu.js} +2 -2
- package/dist/chunks/{AuthCallbackPage-CuS-efzY.js.map → AuthCallbackPage-DPL68Asu.js.map} +1 -1
- package/dist/chunks/{ConfirmEmailPage-CWIqy2bT.js → ConfirmEmailPage-BKlpZkVk.js} +2 -2
- package/dist/chunks/{ConfirmEmailPage-CWIqy2bT.js.map → ConfirmEmailPage-BKlpZkVk.js.map} +1 -1
- package/dist/chunks/{ConfirmEmailPage-CkN8IfP-.js → ConfirmEmailPage-CawSZypI.js} +2 -2
- package/dist/chunks/{ConfirmEmailPage-CkN8IfP-.js.map → ConfirmEmailPage-CawSZypI.js.map} +1 -1
- package/dist/chunks/{CreateSupportTicketPage-Df0ow5ge.js → CreateSupportTicketPage-AwbMbBIH.js} +2 -2
- package/dist/chunks/{CreateSupportTicketPage-Df0ow5ge.js.map → CreateSupportTicketPage-AwbMbBIH.js.map} +1 -1
- package/dist/chunks/{CreateSupportTicketPage-CmrDfFxP.js → CreateSupportTicketPage-Dg1YW1eA.js} +2 -2
- package/dist/chunks/{CreateSupportTicketPage-CmrDfFxP.js.map → CreateSupportTicketPage-Dg1YW1eA.js.map} +1 -1
- package/dist/chunks/{DashboardPage-B4Pi5P3O.js → DashboardPage-B4YxOF-9.js} +3 -3
- package/dist/chunks/{DashboardPage-B4Pi5P3O.js.map → DashboardPage-B4YxOF-9.js.map} +1 -1
- package/dist/chunks/{DashboardPage-wEKZ_DWf.js → DashboardPage-BZxjinar.js} +2 -2
- package/dist/chunks/{DashboardPage-wEKZ_DWf.js.map → DashboardPage-BZxjinar.js.map} +1 -1
- package/dist/chunks/{DashboardPage-BAqpoxCW.js → DashboardPage-Bo09y8r7.js} +3 -3
- package/dist/chunks/{DashboardPage-BAqpoxCW.js.map → DashboardPage-Bo09y8r7.js.map} +1 -1
- package/dist/chunks/{DashboardPage-BT5kFaQA.js → DashboardPage-Cq5adDjP.js} +2 -2
- package/dist/chunks/{DashboardPage-BT5kFaQA.js.map → DashboardPage-Cq5adDjP.js.map} +1 -1
- package/dist/chunks/{EscalationConfigPage-4pF38E4N.js → EscalationConfigPage-C8Hv5naz.js} +2 -2
- package/dist/chunks/{EscalationConfigPage-4pF38E4N.js.map → EscalationConfigPage-C8Hv5naz.js.map} +1 -1
- package/dist/chunks/{EscalationConfigPage-Bcifnt_h.js → EscalationConfigPage-DNAqMRxA.js} +2 -2
- package/dist/chunks/{EscalationConfigPage-Bcifnt_h.js.map → EscalationConfigPage-DNAqMRxA.js.map} +1 -1
- package/dist/chunks/{ForceChangePasswordPage-CBaMV_PS.js → ForceChangePasswordPage-BURE_vNg.js} +2 -2
- package/dist/chunks/{ForceChangePasswordPage-CBaMV_PS.js.map → ForceChangePasswordPage-BURE_vNg.js.map} +1 -1
- package/dist/chunks/{ForceChangePasswordPage-ClDXluX1.js → ForceChangePasswordPage-C6jDZshk.js} +2 -2
- package/dist/chunks/{ForceChangePasswordPage-ClDXluX1.js.map → ForceChangePasswordPage-C6jDZshk.js.map} +1 -1
- package/dist/chunks/{ForgotPasswordPage--ueWRNSO.js → ForgotPasswordPage-C5HLYbz4.js} +2 -2
- package/dist/chunks/{ForgotPasswordPage--ueWRNSO.js.map → ForgotPasswordPage-C5HLYbz4.js.map} +1 -1
- package/dist/chunks/{ForgotPasswordPage-CzpAkP5R.js → ForgotPasswordPage-D3ZQBtjd.js} +2 -2
- package/dist/chunks/{ForgotPasswordPage-CzpAkP5R.js.map → ForgotPasswordPage-D3ZQBtjd.js.map} +1 -1
- package/dist/chunks/{GroupDetailPage-dXNOoSXE.js → GroupDetailPage-CTuzp9Vp.js} +5 -5
- package/dist/chunks/{GroupDetailPage-dXNOoSXE.js.map → GroupDetailPage-CTuzp9Vp.js.map} +1 -1
- package/dist/chunks/{GroupDetailPage-BIgBzQk0.js → GroupDetailPage-NJc2zCxC.js} +2 -2
- package/dist/chunks/{GroupDetailPage-BIgBzQk0.js.map → GroupDetailPage-NJc2zCxC.js.map} +1 -1
- package/dist/chunks/{MyAccessRequestsPage-K2NXkdy4.js → MyAccessRequestsPage-Cvr29Pnq.js} +2 -2
- package/dist/chunks/{MyAccessRequestsPage-K2NXkdy4.js.map → MyAccessRequestsPage-Cvr29Pnq.js.map} +1 -1
- package/dist/chunks/{MyAccessRequestsPage-Be8VvLhh.js → MyAccessRequestsPage-t6I24rHN.js} +2 -2
- package/dist/chunks/{MyAccessRequestsPage-Be8VvLhh.js.map → MyAccessRequestsPage-t6I24rHN.js.map} +1 -1
- package/dist/chunks/{MyTenantsPage-BXx1nPC8.js → MyTenantsPage-Dy2RZ_Ei.js} +2 -2
- package/dist/chunks/{MyTenantsPage-BXx1nPC8.js.map → MyTenantsPage-Dy2RZ_Ei.js.map} +1 -1
- package/dist/chunks/{MyTenantsPage-B9ZAUeCa.js → MyTenantsPage-SvDCQ4Wt.js} +3 -3
- package/dist/chunks/{MyTenantsPage-B9ZAUeCa.js.map → MyTenantsPage-SvDCQ4Wt.js.map} +1 -1
- package/dist/chunks/{MyTicketsPage-C9MSmmR5.js → MyTicketsPage-C3lEBFD9.js} +2 -2
- package/dist/chunks/{MyTicketsPage-C9MSmmR5.js.map → MyTicketsPage-C3lEBFD9.js.map} +1 -1
- package/dist/chunks/{MyTicketsPage-d0PoJpnX.js → MyTicketsPage-DydDgFyz.js} +2 -2
- package/dist/chunks/{MyTicketsPage-d0PoJpnX.js.map → MyTicketsPage-DydDgFyz.js.map} +1 -1
- package/dist/chunks/{NavigationAppsPage-CJ3BjLlz.js → NavigationAppsPage-Dyv767w8.js} +2 -2
- package/dist/chunks/{NavigationAppsPage-CJ3BjLlz.js.map → NavigationAppsPage-Dyv767w8.js.map} +1 -1
- package/dist/chunks/{NavigationAppsPage-8t2xbddT.js → NavigationAppsPage-WqSspaVo.js} +2 -2
- package/dist/chunks/{NavigationAppsPage-8t2xbddT.js.map → NavigationAppsPage-WqSspaVo.js.map} +1 -1
- package/dist/chunks/{NotificationsPage-_62-bmuk.js → NotificationsPage-Di4I95PM.js} +2 -2
- package/dist/chunks/{NotificationsPage-_62-bmuk.js.map → NotificationsPage-Di4I95PM.js.map} +1 -1
- package/dist/chunks/{NotificationsPage-CLHfVUxm.js → NotificationsPage-elSovpBw.js} +2 -2
- package/dist/chunks/{NotificationsPage-CLHfVUxm.js.map → NotificationsPage-elSovpBw.js.map} +1 -1
- package/dist/chunks/{OnboardingWizardPage-Dkc22Jc4.js → OnboardingWizardPage-fdWdkwiT.js} +2 -2
- package/dist/chunks/{OnboardingWizardPage-Dkc22Jc4.js.map → OnboardingWizardPage-fdWdkwiT.js.map} +1 -1
- package/dist/chunks/{OnboardingWizardPage-D1rzD6gR.js → OnboardingWizardPage-nPLe2buQ.js} +2 -2
- package/dist/chunks/{OnboardingWizardPage-D1rzD6gR.js.map → OnboardingWizardPage-nPLe2buQ.js.map} +1 -1
- package/dist/chunks/{PermissionDetailPage-BSvSe4SI.js → PermissionDetailPage-B8C7tWFP.js} +2 -2
- package/dist/chunks/{PermissionDetailPage-BSvSe4SI.js.map → PermissionDetailPage-B8C7tWFP.js.map} +1 -1
- package/dist/chunks/{PermissionDetailPage-_HhbxzlG.js → PermissionDetailPage-IUgUaTkE.js} +2 -2
- package/dist/chunks/{PermissionDetailPage-_HhbxzlG.js.map → PermissionDetailPage-IUgUaTkE.js.map} +1 -1
- package/dist/chunks/{PermissionsPage-Xb92YAHn.js → PermissionsPage-CmX5sQf2.js} +2 -2
- package/dist/chunks/{PermissionsPage-Xb92YAHn.js.map → PermissionsPage-CmX5sQf2.js.map} +1 -1
- package/dist/chunks/{PermissionsPage-B0M4gA5m.js → PermissionsPage-Kg0rduOM.js} +2 -2
- package/dist/chunks/{PermissionsPage-B0M4gA5m.js.map → PermissionsPage-Kg0rduOM.js.map} +1 -1
- package/dist/chunks/{PortalDashboardPage-DTeMESj9.js → PortalDashboardPage-CCAYuhtI.js} +2 -2
- package/dist/chunks/{PortalDashboardPage-DTeMESj9.js.map → PortalDashboardPage-CCAYuhtI.js.map} +1 -1
- package/dist/chunks/{PortalDashboardPage-pt9hipR4.js → PortalDashboardPage-Dme1XmzN.js} +2 -2
- package/dist/chunks/{PortalDashboardPage-pt9hipR4.js.map → PortalDashboardPage-Dme1XmzN.js.map} +1 -1
- package/dist/chunks/{PreferencesPage-Cy30AWIN.js → PreferencesPage-Ct6xWAFp.js} +2 -2
- package/dist/chunks/{PreferencesPage-Cy30AWIN.js.map → PreferencesPage-Ct6xWAFp.js.map} +1 -1
- package/dist/chunks/{PreferencesPage-CsHVGMgp.js → PreferencesPage-Db2RjMpm.js} +2 -2
- package/dist/chunks/{PreferencesPage-CsHVGMgp.js.map → PreferencesPage-Db2RjMpm.js.map} +1 -1
- package/dist/chunks/{ProfilePage-6Gf7igUI.js → ProfilePage-D6Xb1ALH.js} +2 -2
- package/dist/chunks/{ProfilePage-6Gf7igUI.js.map → ProfilePage-D6Xb1ALH.js.map} +1 -1
- package/dist/chunks/{ProfilePage-BzBWkztf.js → ProfilePage-DN2s-lfp.js} +2 -2
- package/dist/chunks/{ProfilePage-BzBWkztf.js.map → ProfilePage-DN2s-lfp.js.map} +1 -1
- package/dist/chunks/{ReferencesManagementPage-DEDoHrnU.js → ReferencesManagementPage-B5mcshG1.js} +2 -2
- package/dist/chunks/{ReferencesManagementPage-DEDoHrnU.js.map → ReferencesManagementPage-B5mcshG1.js.map} +1 -1
- package/dist/chunks/{ReferencesManagementPage-DD1QiFYr.js → ReferencesManagementPage-DB975ktX.js} +3 -3
- package/dist/chunks/{ReferencesManagementPage-DD1QiFYr.js.map → ReferencesManagementPage-DB975ktX.js.map} +1 -1
- package/dist/chunks/{RegisterPage-asdx33fV.js → RegisterPage-ZskZrLZH.js} +2 -2
- package/dist/chunks/{RegisterPage-asdx33fV.js.map → RegisterPage-ZskZrLZH.js.map} +1 -1
- package/dist/chunks/{RegisterPage-CIPHRYkl.js → RegisterPage-b8yIPVgh.js} +2 -2
- package/dist/chunks/{RegisterPage-CIPHRYkl.js.map → RegisterPage-b8yIPVgh.js.map} +1 -1
- package/dist/chunks/{ResetPasswordPage-B4Dj24vU.js → ResetPasswordPage-CeAvfsE-.js} +2 -2
- package/dist/chunks/{ResetPasswordPage-B4Dj24vU.js.map → ResetPasswordPage-CeAvfsE-.js.map} +1 -1
- package/dist/chunks/{ResetPasswordPage-B8MWH_Vi.js → ResetPasswordPage-Dzp5dCp8.js} +2 -2
- package/dist/chunks/{ResetPasswordPage-B8MWH_Vi.js.map → ResetPasswordPage-Dzp5dCp8.js.map} +1 -1
- package/dist/chunks/{ResolutionModal-Cs6T441o.js → ResolutionModal-CRVN7gHv.js} +2 -2
- package/dist/chunks/{ResolutionModal-Cs6T441o.js.map → ResolutionModal-CRVN7gHv.js.map} +1 -1
- package/dist/chunks/{ResolutionModal-rLoFOxm9.js → ResolutionModal-DJOw1sLT.js} +2 -2
- package/dist/chunks/{ResolutionModal-rLoFOxm9.js.map → ResolutionModal-DJOw1sLT.js.map} +1 -1
- package/dist/chunks/{RoleDetailPage-Pkw0wU5g.js → RoleDetailPage-CLVoFVF8.js} +2 -2
- package/dist/chunks/{RoleDetailPage-Pkw0wU5g.js.map → RoleDetailPage-CLVoFVF8.js.map} +1 -1
- package/dist/chunks/{RoleDetailPage-CNFG6j6P.js → RoleDetailPage-XGnPD_8C.js} +3 -3
- package/dist/chunks/{RoleDetailPage-CNFG6j6P.js.map → RoleDetailPage-XGnPD_8C.js.map} +1 -1
- package/dist/chunks/{RolesPage-BHEkMR2O.js → RolesPage-BnAMpR2b.js} +2 -2
- package/dist/chunks/{RolesPage-BHEkMR2O.js.map → RolesPage-BnAMpR2b.js.map} +1 -1
- package/dist/chunks/{RolesPage-D35jwDJU.js → RolesPage-Czj9LMkL.js} +2 -2
- package/dist/chunks/{RolesPage-D35jwDJU.js.map → RolesPage-Czj9LMkL.js.map} +1 -1
- package/dist/chunks/{SlaConfigPage-DtonDehw.js → SlaConfigPage-HM0MpIlg.js} +2 -2
- package/dist/chunks/{SlaConfigPage-DtonDehw.js.map → SlaConfigPage-HM0MpIlg.js.map} +1 -1
- package/dist/chunks/{SlaConfigPage-C5Jstix-.js → SlaConfigPage-ZRyAs8aY.js} +2 -2
- package/dist/chunks/{SlaConfigPage-C5Jstix-.js.map → SlaConfigPage-ZRyAs8aY.js.map} +1 -1
- package/dist/chunks/{SupportPermissionsPage-6pC73oCY.js → SupportPermissionsPage-CxJuGgcQ.js} +2 -2
- package/dist/chunks/{SupportPermissionsPage-6pC73oCY.js.map → SupportPermissionsPage-CxJuGgcQ.js.map} +1 -1
- package/dist/chunks/{SupportPermissionsPage-CsJKGt__.js → SupportPermissionsPage-DNd323OK.js} +2 -2
- package/dist/chunks/{SupportPermissionsPage-CsJKGt__.js.map → SupportPermissionsPage-DNd323OK.js.map} +1 -1
- package/dist/chunks/{TemplatesPage-DjmYOGEC.js → TemplatesPage-CdwPLsHj.js} +2 -2
- package/dist/chunks/{TemplatesPage-DjmYOGEC.js.map → TemplatesPage-CdwPLsHj.js.map} +1 -1
- package/dist/chunks/{TemplatesPage-DlY91VO_.js → TemplatesPage-Co3ygZvF.js} +2 -2
- package/dist/chunks/{TemplatesPage-DlY91VO_.js.map → TemplatesPage-Co3ygZvF.js.map} +1 -1
- package/dist/chunks/{TenantCard-BHLcv2gD.js → TenantCard-CmCfIK2F.js} +2 -2
- package/dist/chunks/{TenantCard-BHLcv2gD.js.map → TenantCard-CmCfIK2F.js.map} +1 -1
- package/dist/chunks/{TenantCard-DGCKVvKI.js → TenantCard-DI66acce.js} +2 -2
- package/dist/chunks/{TenantCard-DGCKVvKI.js.map → TenantCard-DI66acce.js.map} +1 -1
- package/dist/chunks/{TenantScopeSelector-dsSwnOWg.js → TenantScopeSelector-5NOwmFX2.js} +2 -2
- package/dist/chunks/{TenantScopeSelector-dsSwnOWg.js.map → TenantScopeSelector-5NOwmFX2.js.map} +1 -1
- package/dist/chunks/{TenantScopeSelector-CU5z5PJH.js → TenantScopeSelector-CEFgxiWt.js} +2 -2
- package/dist/chunks/{TenantScopeSelector-CU5z5PJH.js.map → TenantScopeSelector-CEFgxiWt.js.map} +1 -1
- package/dist/chunks/{TicketDetailPage-BQHMaRmq.js → TicketDetailPage-BhZ-mpv7.js} +2 -2
- package/dist/chunks/{TicketDetailPage-BQHMaRmq.js.map → TicketDetailPage-BhZ-mpv7.js.map} +1 -1
- package/dist/chunks/{TicketDetailPage-Bk_0uQ3B.js → TicketDetailPage-BxOiOG22.js} +2 -2
- package/dist/chunks/{TicketDetailPage-Bk_0uQ3B.js.map → TicketDetailPage-BxOiOG22.js.map} +1 -1
- package/dist/chunks/{TicketsPage-CufUJctx.js → TicketsPage-BiTvIcM8.js} +2 -2
- package/dist/chunks/{TicketsPage-CufUJctx.js.map → TicketsPage-BiTvIcM8.js.map} +1 -1
- package/dist/chunks/{TicketsPage-C8QQ4SKy.js → TicketsPage-CSiinHME.js} +2 -2
- package/dist/chunks/{TicketsPage-C8QQ4SKy.js.map → TicketsPage-CSiinHME.js.map} +1 -1
- package/dist/chunks/{UserCreateTicketPage-DoEMtJoe.js → UserCreateTicketPage-B3TW1oV7.js} +2 -2
- package/dist/chunks/{UserCreateTicketPage-DoEMtJoe.js.map → UserCreateTicketPage-B3TW1oV7.js.map} +1 -1
- package/dist/chunks/{UserCreateTicketPage-XxjNlR9K.js → UserCreateTicketPage-BszUd_WZ.js} +2 -2
- package/dist/chunks/{UserCreateTicketPage-XxjNlR9K.js.map → UserCreateTicketPage-BszUd_WZ.js.map} +1 -1
- package/dist/chunks/{UserDashboardPage-fdhZwMLg.js → UserDashboardPage-C6MvatAb.js} +2 -2
- package/dist/chunks/{UserDashboardPage-fdhZwMLg.js.map → UserDashboardPage-C6MvatAb.js.map} +1 -1
- package/dist/chunks/{UserDashboardPage-BV1d2hMG.js → UserDashboardPage-Dtt9VzG_.js} +2 -2
- package/dist/chunks/{UserDashboardPage-BV1d2hMG.js.map → UserDashboardPage-Dtt9VzG_.js.map} +1 -1
- package/dist/chunks/{UserDetailPage-C97e-Dax.js → UserDetailPage-BEEV2vlJ.js} +5 -5
- package/dist/chunks/{UserDetailPage-C97e-Dax.js.map → UserDetailPage-BEEV2vlJ.js.map} +1 -1
- package/dist/chunks/{UserDetailPage-BcA7Vhb2.js → UserDetailPage-Dw5OHheZ.js} +2 -2
- package/dist/chunks/{UserDetailPage-BcA7Vhb2.js.map → UserDetailPage-Dw5OHheZ.js.map} +1 -1
- package/dist/chunks/{UserTicketDetailPage-BA2syxXG.js → UserTicketDetailPage-B4YkzzbR.js} +2 -2
- package/dist/chunks/{UserTicketDetailPage-BA2syxXG.js.map → UserTicketDetailPage-B4YkzzbR.js.map} +1 -1
- package/dist/chunks/{UserTicketDetailPage-CXuZVAa2.js → UserTicketDetailPage-DCFV-0ny.js} +2 -2
- package/dist/chunks/{UserTicketDetailPage-CXuZVAa2.js.map → UserTicketDetailPage-DCFV-0ny.js.map} +1 -1
- package/dist/chunks/{UsersGroupsPage-CPVk31Dh.js → UsersGroupsPage-CY-l9fTp.js} +3 -3
- package/dist/chunks/{UsersGroupsPage-CPVk31Dh.js.map → UsersGroupsPage-CY-l9fTp.js.map} +1 -1
- package/dist/chunks/{UsersGroupsPage-DS2YiUE4.js → UsersGroupsPage-c28vYHN9.js} +2 -2
- package/dist/chunks/{UsersGroupsPage-DS2YiUE4.js.map → UsersGroupsPage-c28vYHN9.js.map} +1 -1
- package/dist/chunks/{UsersPage-BIXWHFmG.js → UsersPage-1sLlq9QD.js} +2 -2
- package/dist/chunks/{UsersPage-BIXWHFmG.js.map → UsersPage-1sLlq9QD.js.map} +1 -1
- package/dist/chunks/{UsersPage-DS8aWUKj.js → UsersPage-Bm-uNxh0.js} +2 -2
- package/dist/chunks/{UsersPage-DS8aWUKj.js.map → UsersPage-Bm-uNxh0.js.map} +1 -1
- package/dist/chunks/{accessRequestsApi-C-r0mrCH.js → accessRequestsApi-CJPjyEkH.js} +2 -2
- package/dist/chunks/{accessRequestsApi-C-r0mrCH.js.map → accessRequestsApi-CJPjyEkH.js.map} +1 -1
- package/dist/chunks/{accessRequestsApi-k3ZwhcFb.js → accessRequestsApi-D_pj1wl6.js} +2 -2
- package/dist/chunks/{accessRequestsApi-k3ZwhcFb.js.map → accessRequestsApi-D_pj1wl6.js.map} +1 -1
- package/dist/chunks/{aiApi-B-H-76wM.js → aiApi-ByF-oo1J.js} +2 -2
- package/dist/chunks/{aiApi-B-H-76wM.js.map → aiApi-ByF-oo1J.js.map} +1 -1
- package/dist/chunks/{aiApi-CcdrBILv.js → aiApi-Dt3fj0dU.js} +2 -2
- package/dist/chunks/{aiApi-CcdrBILv.js.map → aiApi-Dt3fj0dU.js.map} +1 -1
- package/dist/chunks/{applicationAnalyticsApi-CO3tk6Ju.js → applicationAnalyticsApi-BgG3SGJm.js} +2 -2
- package/dist/chunks/{applicationAnalyticsApi-CO3tk6Ju.js.map → applicationAnalyticsApi-BgG3SGJm.js.map} +1 -1
- package/dist/chunks/{applicationAnalyticsApi-CLVdVLDu.js → applicationAnalyticsApi-ktD65iLO.js} +2 -2
- package/dist/chunks/{applicationAnalyticsApi-CLVdVLDu.js.map → applicationAnalyticsApi-ktD65iLO.js.map} +1 -1
- package/dist/chunks/{groupsApi-DExOJZPF.js → groupsApi-C-FLWPCO.js} +2 -2
- package/dist/chunks/{groupsApi-DExOJZPF.js.map → groupsApi-C-FLWPCO.js.map} +1 -1
- package/dist/chunks/{groupsApi-CyqyYsmi.js → groupsApi-CBI5vMLa.js} +2 -2
- package/dist/chunks/{groupsApi-CyqyYsmi.js.map → groupsApi-CBI5vMLa.js.map} +1 -1
- package/dist/chunks/{index-DtAReZI6.js → index-B727-QSU.js} +2 -2
- package/dist/chunks/{index-DtAReZI6.js.map → index-B727-QSU.js.map} +1 -1
- package/dist/chunks/{index-BlOgmQzc.js → index-B9q3vx13.js} +2 -2
- package/dist/chunks/{index-BlOgmQzc.js.map → index-B9q3vx13.js.map} +1 -1
- package/dist/chunks/{index-VSQ2prtJ.js → index-BD-REzV9.js} +2 -2
- package/dist/chunks/{index-VSQ2prtJ.js.map → index-BD-REzV9.js.map} +1 -1
- package/dist/chunks/{index-XOOiD_zY.js → index-BDRogQH_.js} +3 -3
- package/dist/chunks/{index-XOOiD_zY.js.map → index-BDRogQH_.js.map} +1 -1
- package/dist/chunks/{index-DOQyf5yZ.js → index-C-DYxdvd.js} +8 -8
- package/dist/chunks/{index-DOQyf5yZ.js.map → index-C-DYxdvd.js.map} +1 -1
- package/dist/chunks/{index-Cq80YBne.js → index-CBtjGPod.js} +105 -105
- package/dist/chunks/{index-Cq80YBne.js.map → index-CBtjGPod.js.map} +1 -1
- package/dist/chunks/{index-dlXYTPWH.js → index-CF1cvNUL.js} +4 -4
- package/dist/chunks/{index-dlXYTPWH.js.map → index-CF1cvNUL.js.map} +1 -1
- package/dist/chunks/{index-COA_xJVJ.js → index-CH0pTHy1.js} +2 -2
- package/dist/chunks/{index-COA_xJVJ.js.map → index-CH0pTHy1.js.map} +1 -1
- package/dist/chunks/{index-DjZQ6ZG_.js → index-Ca88RIuT.js} +2 -2
- package/dist/chunks/{index-DjZQ6ZG_.js.map → index-Ca88RIuT.js.map} +1 -1
- package/dist/chunks/{index-Cj-9tGpd.js → index-CkWvsvKW.js} +2 -2
- package/dist/chunks/{index-Cj-9tGpd.js.map → index-CkWvsvKW.js.map} +1 -1
- package/dist/chunks/{index-EL_ZNnMH.js → index-CzYKE5fL.js} +2 -2
- package/dist/chunks/{index-EL_ZNnMH.js.map → index-CzYKE5fL.js.map} +1 -1
- package/dist/chunks/{index-qXfYaEmV.js → index-D32ol7lq.js} +2 -2
- package/dist/chunks/{index-qXfYaEmV.js.map → index-D32ol7lq.js.map} +1 -1
- package/dist/chunks/{index-DMQQ0KyA.js → index-D7hmx9IX.js} +2 -2
- package/dist/chunks/{index-DMQQ0KyA.js.map → index-D7hmx9IX.js.map} +1 -1
- package/dist/chunks/{index-BetDcNZm.js → index-DThcQmwZ.js} +2 -2
- package/dist/chunks/{index-BetDcNZm.js.map → index-DThcQmwZ.js.map} +1 -1
- package/dist/chunks/{index-C7h5yvcP.js → index-D_3J6ziZ.js} +2 -2
- package/dist/chunks/{index-C7h5yvcP.js.map → index-D_3J6ziZ.js.map} +1 -1
- package/dist/chunks/{index-C_nDTEP5.js → index-JSjfMShT.js} +2 -2
- package/dist/chunks/{index-C_nDTEP5.js.map → index-JSjfMShT.js.map} +1 -1
- package/dist/chunks/{index-COXxU0FH.js → index-gzXJw_ow.js} +3 -3
- package/dist/chunks/{index-COXxU0FH.js.map → index-gzXJw_ow.js.map} +1 -1
- package/dist/chunks/{index-jJxtz2bs.js → index-rRAbl04H.js} +2 -2
- package/dist/chunks/{index-jJxtz2bs.js.map → index-rRAbl04H.js.map} +1 -1
- package/dist/chunks/{tenantIconMap-Ddvguo0l.js → tenantIconMap-Cw-hQ9n4.js} +2 -2
- package/dist/chunks/{tenantIconMap-Ddvguo0l.js.map → tenantIconMap-Cw-hQ9n4.js.map} +1 -1
- package/dist/chunks/{tenantIconMap-DBa5MjIz.js → tenantIconMap-DinwojNW.js} +2 -2
- package/dist/chunks/{tenantIconMap-DBa5MjIz.js.map → tenantIconMap-DinwojNW.js.map} +1 -1
- package/dist/chunks/{ticketingApi-Cr6QSv0g.js → ticketingApi-CcWdebXv.js} +2 -2
- package/dist/chunks/{ticketingApi-Cr6QSv0g.js.map → ticketingApi-CcWdebXv.js.map} +1 -1
- package/dist/chunks/{ticketingApi-D6s75rOB.js → ticketingApi-x0BwZ1NH.js} +2 -2
- package/dist/chunks/{ticketingApi-D6s75rOB.js.map → ticketingApi-x0BwZ1NH.js.map} +1 -1
- package/dist/chunks/{useAccessRequests-VuQT-n-P.js → useAccessRequests-BBTIYht3.js} +2 -2
- package/dist/chunks/{useAccessRequests-VuQT-n-P.js.map → useAccessRequests-BBTIYht3.js.map} +1 -1
- package/dist/chunks/{useAccessRequests-CanI2ypo.js → useAccessRequests-BBUj9XY9.js} +71 -71
- package/dist/chunks/{useAccessRequests-CanI2ypo.js.map → useAccessRequests-BBUj9XY9.js.map} +1 -1
- package/dist/chunks/{useUserAccessRequests-BEVZLX_M.js → useUserAccessRequests-BKQxcOXH.js} +2 -2
- package/dist/chunks/{useUserAccessRequests-BEVZLX_M.js.map → useUserAccessRequests-BKQxcOXH.js.map} +1 -1
- package/dist/chunks/{useUserAccessRequests-Ba40FDLm.js → useUserAccessRequests-BPUPiP55.js} +2 -2
- package/dist/chunks/{useUserAccessRequests-Ba40FDLm.js.map → useUserAccessRequests-BPUPiP55.js.map} +1 -1
- package/dist/pages/platform/administration/applications/ApplicationDetailPage.d.ts.map +1 -1
- package/dist/smartstack.cjs +1 -1
- package/dist/smartstack.js +1 -1
- package/package.json +1 -1
- package/dist/chunks/ApplicationDetailPage-CWdz0TS4.js +0 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"groupsApi-DExOJZPF.js","sources":["../../src/services/api/groupsApi.ts"],"sourcesContent":["import { api, apiClient } from './apiClient';\r\nimport type { UserApplicationAccessDto } from './adminApi';\r\n\r\n/**\r\n * Creates API methods with a specific tenant context.\r\n * Used when Super Admins view tenant-specific pages without \"switching\" to that tenant.\r\n */\r\nconst withTenantContext = (tenantSlug?: string) => ({\r\n get: <T>(url: string, config?: Parameters<typeof apiClient.get>[1]) =>\r\n apiClient.get<T>(url, {\r\n ...config,\r\n headers: tenantSlug ? { ...config?.headers, 'X-Tenant-Slug': tenantSlug } : config?.headers,\r\n }).then(res => res.data),\r\n\r\n post: <T>(url: string, data?: unknown, config?: Parameters<typeof apiClient.post>[2]) =>\r\n apiClient.post<T>(url, data, {\r\n ...config,\r\n headers: tenantSlug ? { ...config?.headers, 'X-Tenant-Slug': tenantSlug } : config?.headers,\r\n }).then(res => res.data),\r\n\r\n put: <T>(url: string, data?: unknown, config?: Parameters<typeof apiClient.put>[2]) =>\r\n apiClient.put<T>(url, data, {\r\n ...config,\r\n headers: tenantSlug ? { ...config?.headers, 'X-Tenant-Slug': tenantSlug } : config?.headers,\r\n }).then(res => res.data),\r\n\r\n patch: <T>(url: string, data?: unknown, config?: Parameters<typeof apiClient.patch>[2]) =>\r\n apiClient.patch<T>(url, data, {\r\n ...config,\r\n headers: tenantSlug ? { ...config?.headers, 'X-Tenant-Slug': tenantSlug } : config?.headers,\r\n }).then(res => res.data),\r\n\r\n delete: <T>(url: string, config?: Parameters<typeof apiClient.delete>[1]) =>\r\n apiClient.delete<T>(url, {\r\n ...config,\r\n headers: tenantSlug ? { ...config?.headers, 'X-Tenant-Slug': tenantSlug } : config?.headers,\r\n }).then(res => res.data),\r\n});\r\n\r\n// Types\r\nexport interface GroupListDto {\r\n id: string;\r\n name: string;\r\n description: string | null;\r\n isActive: boolean;\r\n isSecurityGroup: boolean;\r\n isMailEnabled: boolean;\r\n entraObjectId: string | null;\r\n lastEntraSyncAt: string | null;\r\n isSyncedFromEntra: boolean;\r\n memberCount: number;\r\n roles: string[];\r\n createdAt: string;\r\n parentGroupId: string | null;\r\n parentGroupName: string | null;\r\n childCount: number;\r\n}\r\n\r\nexport interface GroupDetailDto {\r\n id: string;\r\n name: string;\r\n description: string | null;\r\n isActive: boolean;\r\n isSecurityGroup: boolean;\r\n isMailEnabled: boolean;\r\n mail: string | null;\r\n mailNickname: string | null;\r\n entraObjectId: string | null;\r\n lastEntraSyncAt: string | null;\r\n isSyncedFromEntra: boolean;\r\n parentGroupId: string | null;\r\n parentGroupName: string | null;\r\n members: GroupMemberDto[];\r\n roles: GroupRoleDto[];\r\n childGroups: GroupChildDto[];\r\n createdAt: string;\r\n updatedAt: string | null;\r\n createdBy: string | null;\r\n updatedBy: string | null;\r\n}\r\n\r\nexport interface GroupMemberDto {\r\n userId: string;\r\n email: string;\r\n fullName: string;\r\n addedAt: string;\r\n addedBy: string | null;\r\n}\r\n\r\nexport interface GroupRoleDto {\r\n roleId: string;\r\n roleName: string;\r\n roleDescription: string | null;\r\n assignedAt: string;\r\n assignedBy: string;\r\n isInheritable: boolean;\r\n tenantId: string | null;\r\n tenantName: string | null;\r\n isGlobal: boolean;\r\n}\r\n\r\nexport interface GroupChildDto {\r\n id: string;\r\n name: string;\r\n isActive: boolean;\r\n}\r\n\r\nexport interface CreateGroupRequest {\r\n name: string;\r\n description?: string;\r\n isSecurityGroup?: boolean;\r\n parentGroupId?: string;\r\n}\r\n\r\nexport interface UpdateGroupRequest {\r\n name: string;\r\n description?: string;\r\n}\r\n\r\nexport interface LinkEntraRequest {\r\n entraObjectId: string;\r\n}\r\n\r\nexport interface AddMemberRequest {\r\n userId: string;\r\n}\r\n\r\nexport interface AssignRoleRequest {\r\n roleId: string;\r\n isInheritable?: boolean;\r\n tenantId?: string | null;\r\n}\r\n\r\nexport interface SetInheritableRequest {\r\n isInheritable: boolean;\r\n}\r\n\r\nexport interface SetParentGroupRequest {\r\n parentGroupId: string | null;\r\n}\r\n\r\nexport interface InheritedTenantDto {\r\n tenantId: string;\r\n tenantName: string;\r\n tenantSlug: string;\r\n tenantType: string;\r\n inheritedFromGroupId: string;\r\n inheritedFromGroupName: string;\r\n}\r\n\r\nexport interface InheritedMemberDto {\r\n userId: string;\r\n email: string;\r\n fullName: string;\r\n inheritedFromGroupId: string;\r\n inheritedFromGroupName: string;\r\n level: number;\r\n}\r\n\r\nexport interface InheritedGroupRoleDto {\r\n roleId: string;\r\n roleName: string;\r\n roleDescription: string | null;\r\n tenantId: string | null;\r\n tenantName: string | null;\r\n isGlobal: boolean;\r\n inheritedFromGroupId: string;\r\n inheritedFromGroupName: string;\r\n level: number;\r\n}\r\n\r\nexport interface GroupTenantDto {\r\n tenantId: string;\r\n tenantName: string;\r\n tenantSlug: string;\r\n tenantType: string;\r\n addedAt: string;\r\n addedBy: string | null;\r\n}\r\n\r\nexport interface AddToTenantRequest {\r\n tenantId: string;\r\n}\r\n\r\nexport interface CustomRoleDetailDto {\r\n id: string;\r\n name: string;\r\n shortName: string;\r\n category: string;\r\n description: string | null;\r\n isSystem: boolean;\r\n permissions: CustomRolePermissionDto[];\r\n createdAt: string;\r\n updatedAt: string | null;\r\n}\r\n\r\nexport interface CustomRolePermissionDto {\r\n id: string;\r\n path: string;\r\n description: string | null;\r\n}\r\n\r\nconst BASE_URL = '/api/administration/users/groups';\r\n\r\n/**\r\n * Factory function to create groups API with explicit tenant context.\r\n * @param tenantSlug - Optional tenant slug to use for all requests\r\n */\r\nconst _createGroupsApi = (tenantSlug?: string) => {\r\n const apiContext = tenantSlug ? withTenantContext(tenantSlug) : api;\r\n\r\n return {\r\n // === CRUD OPERATIONS ===\r\n\r\n getAll: async (\r\n search?: string,\r\n isActive?: boolean,\r\n syncedFromEntra?: boolean\r\n ): Promise<GroupListDto[]> => {\r\n const params = new URLSearchParams();\r\n if (search) params.append('search', search);\r\n if (isActive !== undefined) params.append('isActive', String(isActive));\r\n if (syncedFromEntra !== undefined) params.append('syncedFromEntra', String(syncedFromEntra));\r\n\r\n const queryString = params.toString();\r\n const url = queryString ? `${BASE_URL}?${queryString}` : BASE_URL;\r\n const response = await apiContext.get<GroupListDto[]>(url);\r\n return response;\r\n },\r\n\r\n getById: async (id: string): Promise<GroupDetailDto> => {\r\n const response = await apiContext.get<GroupDetailDto>(`${BASE_URL}/${id}`);\r\n return response;\r\n },\r\n\r\n create: async (data: CreateGroupRequest): Promise<GroupDetailDto> => {\r\n const response = await apiContext.post<GroupDetailDto>(BASE_URL, data);\r\n return response;\r\n },\r\n\r\n update: async (id: string, data: UpdateGroupRequest): Promise<GroupDetailDto> => {\r\n const response = await apiContext.put<GroupDetailDto>(`${BASE_URL}/${id}`, data);\r\n return response;\r\n },\r\n\r\n delete: async (id: string): Promise<void> => {\r\n await apiContext.delete(`${BASE_URL}/${id}`);\r\n },\r\n\r\n activate: async (id: string): Promise<void> => {\r\n await apiContext.patch(`${BASE_URL}/${id}/activate`);\r\n },\r\n\r\n deactivate: async (id: string): Promise<void> => {\r\n await apiContext.patch(`${BASE_URL}/${id}/deactivate`);\r\n },\r\n\r\n // === ENTRA LINKING ===\r\n\r\n linkToEntra: async (id: string, data: LinkEntraRequest): Promise<void> => {\r\n await apiContext.post(`${BASE_URL}/${id}/link-entra`, data);\r\n },\r\n\r\n unlinkFromEntra: async (id: string): Promise<void> => {\r\n await apiContext.post(`${BASE_URL}/${id}/unlink-entra`);\r\n },\r\n\r\n // === MEMBER MANAGEMENT ===\r\n\r\n getMembers: async (id: string): Promise<GroupMemberDto[]> => {\r\n const response = await apiContext.get<GroupMemberDto[]>(`${BASE_URL}/${id}/members`);\r\n return response;\r\n },\r\n\r\n addMember: async (id: string, data: AddMemberRequest): Promise<void> => {\r\n await apiContext.post(`${BASE_URL}/${id}/members`, data);\r\n },\r\n\r\n removeMember: async (groupId: string, userId: string): Promise<void> => {\r\n await apiContext.delete(`${BASE_URL}/${groupId}/members/${userId}`);\r\n },\r\n\r\n // === ROLE MANAGEMENT ===\r\n\r\n getRoles: async (id: string): Promise<GroupRoleDto[]> => {\r\n const response = await apiContext.get<GroupRoleDto[]>(`${BASE_URL}/${id}/roles`);\r\n return response;\r\n },\r\n\r\n assignRole: async (id: string, data: AssignRoleRequest): Promise<void> => {\r\n await apiContext.post(`${BASE_URL}/${id}/roles`, data);\r\n },\r\n\r\n removeRole: async (groupId: string, roleId: string, tenantId?: string | null): Promise<void> => {\r\n const params = tenantId ? `?tenantId=${tenantId}` : '';\r\n await apiContext.delete(`${BASE_URL}/${groupId}/roles/${roleId}${params}`);\r\n },\r\n\r\n setRoleInheritable: async (\r\n groupId: string,\r\n roleId: string,\r\n data: SetInheritableRequest\r\n ): Promise<void> => {\r\n await apiContext.patch(`${BASE_URL}/${groupId}/roles/${roleId}/inheritable`, data);\r\n },\r\n\r\n // === HIERARCHY ===\r\n\r\n getChildGroups: async (id: string): Promise<GroupChildDto[]> => {\r\n const response = await apiContext.get<GroupChildDto[]>(`${BASE_URL}/${id}/children`);\r\n return response;\r\n },\r\n\r\n setParentGroup: async (id: string, data: SetParentGroupRequest): Promise<void> => {\r\n await apiContext.patch(`${BASE_URL}/${id}/parent`, data);\r\n },\r\n\r\n // === TENANT MANAGEMENT ===\r\n\r\n getTenants: async (id: string): Promise<GroupTenantDto[]> => {\r\n const response = await apiContext.get<GroupTenantDto[]>(`${BASE_URL}/${id}/tenants`);\r\n return response;\r\n },\r\n\r\n getInheritedTenants: async (id: string): Promise<InheritedTenantDto[]> => {\r\n const response = await apiContext.get<InheritedTenantDto[]>(`${BASE_URL}/${id}/inherited-tenants`);\r\n return response;\r\n },\r\n\r\n getInheritedMembers: async (id: string): Promise<InheritedMemberDto[]> => {\r\n const response = await apiContext.get<InheritedMemberDto[]>(`${BASE_URL}/${id}/inherited-members`);\r\n return response;\r\n },\r\n\r\n getInheritedRoles: async (id: string): Promise<InheritedGroupRoleDto[]> => {\r\n const response = await apiContext.get<InheritedGroupRoleDto[]>(`${BASE_URL}/${id}/inherited-roles`);\r\n return response;\r\n },\r\n\r\n addToTenant: async (id: string, data: AddToTenantRequest): Promise<void> => {\r\n await apiContext.post(`${BASE_URL}/${id}/tenants`, data);\r\n },\r\n\r\n removeFromTenant: async (groupId: string, tenantId: string): Promise<void> => {\r\n await apiContext.delete(`${BASE_URL}/${groupId}/tenants/${tenantId}`);\r\n },\r\n\r\n // === APPLICATION ACCESS ===\r\n\r\n getApplicationAccess: async (id: string, tenantId?: string): Promise<UserApplicationAccessDto[]> => {\r\n const url = tenantId\r\n ? `${BASE_URL}/${id}/application-access?tenantId=${tenantId}`\r\n : `${BASE_URL}/${id}/application-access`;\r\n const response = await apiContext.get<UserApplicationAccessDto[]>(url);\r\n return response;\r\n },\r\n\r\n // === CUSTOM ROLE ===\r\n\r\n getCustomRole: async (id: string): Promise<CustomRoleDetailDto | null> => {\r\n const response = await apiContext.get<CustomRoleDetailDto | null>(`${BASE_URL}/${id}/custom-role`);\r\n return response;\r\n },\r\n\r\n createCustomRole: async (id: string): Promise<CustomRoleDetailDto> => {\r\n const response = await apiContext.post<CustomRoleDetailDto>(`${BASE_URL}/${id}/custom-role`);\r\n return response;\r\n },\r\n\r\n deleteCustomRole: async (id: string): Promise<void> => {\r\n await apiContext.delete(`${BASE_URL}/${id}/custom-role`);\r\n },\r\n };\r\n};\r\nexport type GroupsApi = ReturnType<typeof _createGroupsApi>;\r\nexport const createGroupsApi: (tenantSlug?: string) => GroupsApi = _createGroupsApi;\r\n\r\n// Default export uses localStorage tenant slug (backward compatible)\r\nexport const groupsApi = createGroupsApi();\r\n"],"names":["withTenantContext","tenantSlug","url","config","apiClient","res","data","BASE_URL","_createGroupsApi","apiContext","api","search","isActive","syncedFromEntra","params","queryString","id","groupId","userId","roleId","tenantId","createGroupsApi","groupsApi"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"groupsApi-C-FLWPCO.js","sources":["../../src/services/api/groupsApi.ts"],"sourcesContent":["import { api, apiClient } from './apiClient';\r\nimport type { UserApplicationAccessDto } from './adminApi';\r\n\r\n/**\r\n * Creates API methods with a specific tenant context.\r\n * Used when Super Admins view tenant-specific pages without \"switching\" to that tenant.\r\n */\r\nconst withTenantContext = (tenantSlug?: string) => ({\r\n get: <T>(url: string, config?: Parameters<typeof apiClient.get>[1]) =>\r\n apiClient.get<T>(url, {\r\n ...config,\r\n headers: tenantSlug ? { ...config?.headers, 'X-Tenant-Slug': tenantSlug } : config?.headers,\r\n }).then(res => res.data),\r\n\r\n post: <T>(url: string, data?: unknown, config?: Parameters<typeof apiClient.post>[2]) =>\r\n apiClient.post<T>(url, data, {\r\n ...config,\r\n headers: tenantSlug ? { ...config?.headers, 'X-Tenant-Slug': tenantSlug } : config?.headers,\r\n }).then(res => res.data),\r\n\r\n put: <T>(url: string, data?: unknown, config?: Parameters<typeof apiClient.put>[2]) =>\r\n apiClient.put<T>(url, data, {\r\n ...config,\r\n headers: tenantSlug ? { ...config?.headers, 'X-Tenant-Slug': tenantSlug } : config?.headers,\r\n }).then(res => res.data),\r\n\r\n patch: <T>(url: string, data?: unknown, config?: Parameters<typeof apiClient.patch>[2]) =>\r\n apiClient.patch<T>(url, data, {\r\n ...config,\r\n headers: tenantSlug ? { ...config?.headers, 'X-Tenant-Slug': tenantSlug } : config?.headers,\r\n }).then(res => res.data),\r\n\r\n delete: <T>(url: string, config?: Parameters<typeof apiClient.delete>[1]) =>\r\n apiClient.delete<T>(url, {\r\n ...config,\r\n headers: tenantSlug ? { ...config?.headers, 'X-Tenant-Slug': tenantSlug } : config?.headers,\r\n }).then(res => res.data),\r\n});\r\n\r\n// Types\r\nexport interface GroupListDto {\r\n id: string;\r\n name: string;\r\n description: string | null;\r\n isActive: boolean;\r\n isSecurityGroup: boolean;\r\n isMailEnabled: boolean;\r\n entraObjectId: string | null;\r\n lastEntraSyncAt: string | null;\r\n isSyncedFromEntra: boolean;\r\n memberCount: number;\r\n roles: string[];\r\n createdAt: string;\r\n parentGroupId: string | null;\r\n parentGroupName: string | null;\r\n childCount: number;\r\n}\r\n\r\nexport interface GroupDetailDto {\r\n id: string;\r\n name: string;\r\n description: string | null;\r\n isActive: boolean;\r\n isSecurityGroup: boolean;\r\n isMailEnabled: boolean;\r\n mail: string | null;\r\n mailNickname: string | null;\r\n entraObjectId: string | null;\r\n lastEntraSyncAt: string | null;\r\n isSyncedFromEntra: boolean;\r\n parentGroupId: string | null;\r\n parentGroupName: string | null;\r\n members: GroupMemberDto[];\r\n roles: GroupRoleDto[];\r\n childGroups: GroupChildDto[];\r\n createdAt: string;\r\n updatedAt: string | null;\r\n createdBy: string | null;\r\n updatedBy: string | null;\r\n}\r\n\r\nexport interface GroupMemberDto {\r\n userId: string;\r\n email: string;\r\n fullName: string;\r\n addedAt: string;\r\n addedBy: string | null;\r\n}\r\n\r\nexport interface GroupRoleDto {\r\n roleId: string;\r\n roleName: string;\r\n roleDescription: string | null;\r\n assignedAt: string;\r\n assignedBy: string;\r\n isInheritable: boolean;\r\n tenantId: string | null;\r\n tenantName: string | null;\r\n isGlobal: boolean;\r\n}\r\n\r\nexport interface GroupChildDto {\r\n id: string;\r\n name: string;\r\n isActive: boolean;\r\n}\r\n\r\nexport interface CreateGroupRequest {\r\n name: string;\r\n description?: string;\r\n isSecurityGroup?: boolean;\r\n parentGroupId?: string;\r\n}\r\n\r\nexport interface UpdateGroupRequest {\r\n name: string;\r\n description?: string;\r\n}\r\n\r\nexport interface LinkEntraRequest {\r\n entraObjectId: string;\r\n}\r\n\r\nexport interface AddMemberRequest {\r\n userId: string;\r\n}\r\n\r\nexport interface AssignRoleRequest {\r\n roleId: string;\r\n isInheritable?: boolean;\r\n tenantId?: string | null;\r\n}\r\n\r\nexport interface SetInheritableRequest {\r\n isInheritable: boolean;\r\n}\r\n\r\nexport interface SetParentGroupRequest {\r\n parentGroupId: string | null;\r\n}\r\n\r\nexport interface InheritedTenantDto {\r\n tenantId: string;\r\n tenantName: string;\r\n tenantSlug: string;\r\n tenantType: string;\r\n inheritedFromGroupId: string;\r\n inheritedFromGroupName: string;\r\n}\r\n\r\nexport interface InheritedMemberDto {\r\n userId: string;\r\n email: string;\r\n fullName: string;\r\n inheritedFromGroupId: string;\r\n inheritedFromGroupName: string;\r\n level: number;\r\n}\r\n\r\nexport interface InheritedGroupRoleDto {\r\n roleId: string;\r\n roleName: string;\r\n roleDescription: string | null;\r\n tenantId: string | null;\r\n tenantName: string | null;\r\n isGlobal: boolean;\r\n inheritedFromGroupId: string;\r\n inheritedFromGroupName: string;\r\n level: number;\r\n}\r\n\r\nexport interface GroupTenantDto {\r\n tenantId: string;\r\n tenantName: string;\r\n tenantSlug: string;\r\n tenantType: string;\r\n addedAt: string;\r\n addedBy: string | null;\r\n}\r\n\r\nexport interface AddToTenantRequest {\r\n tenantId: string;\r\n}\r\n\r\nexport interface CustomRoleDetailDto {\r\n id: string;\r\n name: string;\r\n shortName: string;\r\n category: string;\r\n description: string | null;\r\n isSystem: boolean;\r\n permissions: CustomRolePermissionDto[];\r\n createdAt: string;\r\n updatedAt: string | null;\r\n}\r\n\r\nexport interface CustomRolePermissionDto {\r\n id: string;\r\n path: string;\r\n description: string | null;\r\n}\r\n\r\nconst BASE_URL = '/api/administration/users/groups';\r\n\r\n/**\r\n * Factory function to create groups API with explicit tenant context.\r\n * @param tenantSlug - Optional tenant slug to use for all requests\r\n */\r\nconst _createGroupsApi = (tenantSlug?: string) => {\r\n const apiContext = tenantSlug ? withTenantContext(tenantSlug) : api;\r\n\r\n return {\r\n // === CRUD OPERATIONS ===\r\n\r\n getAll: async (\r\n search?: string,\r\n isActive?: boolean,\r\n syncedFromEntra?: boolean\r\n ): Promise<GroupListDto[]> => {\r\n const params = new URLSearchParams();\r\n if (search) params.append('search', search);\r\n if (isActive !== undefined) params.append('isActive', String(isActive));\r\n if (syncedFromEntra !== undefined) params.append('syncedFromEntra', String(syncedFromEntra));\r\n\r\n const queryString = params.toString();\r\n const url = queryString ? `${BASE_URL}?${queryString}` : BASE_URL;\r\n const response = await apiContext.get<GroupListDto[]>(url);\r\n return response;\r\n },\r\n\r\n getById: async (id: string): Promise<GroupDetailDto> => {\r\n const response = await apiContext.get<GroupDetailDto>(`${BASE_URL}/${id}`);\r\n return response;\r\n },\r\n\r\n create: async (data: CreateGroupRequest): Promise<GroupDetailDto> => {\r\n const response = await apiContext.post<GroupDetailDto>(BASE_URL, data);\r\n return response;\r\n },\r\n\r\n update: async (id: string, data: UpdateGroupRequest): Promise<GroupDetailDto> => {\r\n const response = await apiContext.put<GroupDetailDto>(`${BASE_URL}/${id}`, data);\r\n return response;\r\n },\r\n\r\n delete: async (id: string): Promise<void> => {\r\n await apiContext.delete(`${BASE_URL}/${id}`);\r\n },\r\n\r\n activate: async (id: string): Promise<void> => {\r\n await apiContext.patch(`${BASE_URL}/${id}/activate`);\r\n },\r\n\r\n deactivate: async (id: string): Promise<void> => {\r\n await apiContext.patch(`${BASE_URL}/${id}/deactivate`);\r\n },\r\n\r\n // === ENTRA LINKING ===\r\n\r\n linkToEntra: async (id: string, data: LinkEntraRequest): Promise<void> => {\r\n await apiContext.post(`${BASE_URL}/${id}/link-entra`, data);\r\n },\r\n\r\n unlinkFromEntra: async (id: string): Promise<void> => {\r\n await apiContext.post(`${BASE_URL}/${id}/unlink-entra`);\r\n },\r\n\r\n // === MEMBER MANAGEMENT ===\r\n\r\n getMembers: async (id: string): Promise<GroupMemberDto[]> => {\r\n const response = await apiContext.get<GroupMemberDto[]>(`${BASE_URL}/${id}/members`);\r\n return response;\r\n },\r\n\r\n addMember: async (id: string, data: AddMemberRequest): Promise<void> => {\r\n await apiContext.post(`${BASE_URL}/${id}/members`, data);\r\n },\r\n\r\n removeMember: async (groupId: string, userId: string): Promise<void> => {\r\n await apiContext.delete(`${BASE_URL}/${groupId}/members/${userId}`);\r\n },\r\n\r\n // === ROLE MANAGEMENT ===\r\n\r\n getRoles: async (id: string): Promise<GroupRoleDto[]> => {\r\n const response = await apiContext.get<GroupRoleDto[]>(`${BASE_URL}/${id}/roles`);\r\n return response;\r\n },\r\n\r\n assignRole: async (id: string, data: AssignRoleRequest): Promise<void> => {\r\n await apiContext.post(`${BASE_URL}/${id}/roles`, data);\r\n },\r\n\r\n removeRole: async (groupId: string, roleId: string, tenantId?: string | null): Promise<void> => {\r\n const params = tenantId ? `?tenantId=${tenantId}` : '';\r\n await apiContext.delete(`${BASE_URL}/${groupId}/roles/${roleId}${params}`);\r\n },\r\n\r\n setRoleInheritable: async (\r\n groupId: string,\r\n roleId: string,\r\n data: SetInheritableRequest\r\n ): Promise<void> => {\r\n await apiContext.patch(`${BASE_URL}/${groupId}/roles/${roleId}/inheritable`, data);\r\n },\r\n\r\n // === HIERARCHY ===\r\n\r\n getChildGroups: async (id: string): Promise<GroupChildDto[]> => {\r\n const response = await apiContext.get<GroupChildDto[]>(`${BASE_URL}/${id}/children`);\r\n return response;\r\n },\r\n\r\n setParentGroup: async (id: string, data: SetParentGroupRequest): Promise<void> => {\r\n await apiContext.patch(`${BASE_URL}/${id}/parent`, data);\r\n },\r\n\r\n // === TENANT MANAGEMENT ===\r\n\r\n getTenants: async (id: string): Promise<GroupTenantDto[]> => {\r\n const response = await apiContext.get<GroupTenantDto[]>(`${BASE_URL}/${id}/tenants`);\r\n return response;\r\n },\r\n\r\n getInheritedTenants: async (id: string): Promise<InheritedTenantDto[]> => {\r\n const response = await apiContext.get<InheritedTenantDto[]>(`${BASE_URL}/${id}/inherited-tenants`);\r\n return response;\r\n },\r\n\r\n getInheritedMembers: async (id: string): Promise<InheritedMemberDto[]> => {\r\n const response = await apiContext.get<InheritedMemberDto[]>(`${BASE_URL}/${id}/inherited-members`);\r\n return response;\r\n },\r\n\r\n getInheritedRoles: async (id: string): Promise<InheritedGroupRoleDto[]> => {\r\n const response = await apiContext.get<InheritedGroupRoleDto[]>(`${BASE_URL}/${id}/inherited-roles`);\r\n return response;\r\n },\r\n\r\n addToTenant: async (id: string, data: AddToTenantRequest): Promise<void> => {\r\n await apiContext.post(`${BASE_URL}/${id}/tenants`, data);\r\n },\r\n\r\n removeFromTenant: async (groupId: string, tenantId: string): Promise<void> => {\r\n await apiContext.delete(`${BASE_URL}/${groupId}/tenants/${tenantId}`);\r\n },\r\n\r\n // === APPLICATION ACCESS ===\r\n\r\n getApplicationAccess: async (id: string, tenantId?: string): Promise<UserApplicationAccessDto[]> => {\r\n const url = tenantId\r\n ? `${BASE_URL}/${id}/application-access?tenantId=${tenantId}`\r\n : `${BASE_URL}/${id}/application-access`;\r\n const response = await apiContext.get<UserApplicationAccessDto[]>(url);\r\n return response;\r\n },\r\n\r\n // === CUSTOM ROLE ===\r\n\r\n getCustomRole: async (id: string): Promise<CustomRoleDetailDto | null> => {\r\n const response = await apiContext.get<CustomRoleDetailDto | null>(`${BASE_URL}/${id}/custom-role`);\r\n return response;\r\n },\r\n\r\n createCustomRole: async (id: string): Promise<CustomRoleDetailDto> => {\r\n const response = await apiContext.post<CustomRoleDetailDto>(`${BASE_URL}/${id}/custom-role`);\r\n return response;\r\n },\r\n\r\n deleteCustomRole: async (id: string): Promise<void> => {\r\n await apiContext.delete(`${BASE_URL}/${id}/custom-role`);\r\n },\r\n };\r\n};\r\nexport type GroupsApi = ReturnType<typeof _createGroupsApi>;\r\nexport const createGroupsApi: (tenantSlug?: string) => GroupsApi = _createGroupsApi;\r\n\r\n// Default export uses localStorage tenant slug (backward compatible)\r\nexport const groupsApi = createGroupsApi();\r\n"],"names":["withTenantContext","tenantSlug","url","config","apiClient","res","data","BASE_URL","_createGroupsApi","apiContext","api","search","isActive","syncedFromEntra","params","queryString","id","groupId","userId","roleId","tenantId","createGroupsApi","groupsApi"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { j as p, i as $ } from "./index-
|
|
1
|
+
import { j as p, i as $ } from "./index-CBtjGPod.js";
|
|
2
2
|
const d = (r) => ({
|
|
3
3
|
get: (t, e) => p.get(t, {
|
|
4
4
|
...e,
|
|
@@ -102,4 +102,4 @@ export {
|
|
|
102
102
|
l as c,
|
|
103
103
|
y as g
|
|
104
104
|
};
|
|
105
|
-
//# sourceMappingURL=groupsApi-
|
|
105
|
+
//# sourceMappingURL=groupsApi-CBI5vMLa.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"groupsApi-CyqyYsmi.js","sources":["../../src/services/api/groupsApi.ts"],"sourcesContent":["import { api, apiClient } from './apiClient';\r\nimport type { UserApplicationAccessDto } from './adminApi';\r\n\r\n/**\r\n * Creates API methods with a specific tenant context.\r\n * Used when Super Admins view tenant-specific pages without \"switching\" to that tenant.\r\n */\r\nconst withTenantContext = (tenantSlug?: string) => ({\r\n get: <T>(url: string, config?: Parameters<typeof apiClient.get>[1]) =>\r\n apiClient.get<T>(url, {\r\n ...config,\r\n headers: tenantSlug ? { ...config?.headers, 'X-Tenant-Slug': tenantSlug } : config?.headers,\r\n }).then(res => res.data),\r\n\r\n post: <T>(url: string, data?: unknown, config?: Parameters<typeof apiClient.post>[2]) =>\r\n apiClient.post<T>(url, data, {\r\n ...config,\r\n headers: tenantSlug ? { ...config?.headers, 'X-Tenant-Slug': tenantSlug } : config?.headers,\r\n }).then(res => res.data),\r\n\r\n put: <T>(url: string, data?: unknown, config?: Parameters<typeof apiClient.put>[2]) =>\r\n apiClient.put<T>(url, data, {\r\n ...config,\r\n headers: tenantSlug ? { ...config?.headers, 'X-Tenant-Slug': tenantSlug } : config?.headers,\r\n }).then(res => res.data),\r\n\r\n patch: <T>(url: string, data?: unknown, config?: Parameters<typeof apiClient.patch>[2]) =>\r\n apiClient.patch<T>(url, data, {\r\n ...config,\r\n headers: tenantSlug ? { ...config?.headers, 'X-Tenant-Slug': tenantSlug } : config?.headers,\r\n }).then(res => res.data),\r\n\r\n delete: <T>(url: string, config?: Parameters<typeof apiClient.delete>[1]) =>\r\n apiClient.delete<T>(url, {\r\n ...config,\r\n headers: tenantSlug ? { ...config?.headers, 'X-Tenant-Slug': tenantSlug } : config?.headers,\r\n }).then(res => res.data),\r\n});\r\n\r\n// Types\r\nexport interface GroupListDto {\r\n id: string;\r\n name: string;\r\n description: string | null;\r\n isActive: boolean;\r\n isSecurityGroup: boolean;\r\n isMailEnabled: boolean;\r\n entraObjectId: string | null;\r\n lastEntraSyncAt: string | null;\r\n isSyncedFromEntra: boolean;\r\n memberCount: number;\r\n roles: string[];\r\n createdAt: string;\r\n parentGroupId: string | null;\r\n parentGroupName: string | null;\r\n childCount: number;\r\n}\r\n\r\nexport interface GroupDetailDto {\r\n id: string;\r\n name: string;\r\n description: string | null;\r\n isActive: boolean;\r\n isSecurityGroup: boolean;\r\n isMailEnabled: boolean;\r\n mail: string | null;\r\n mailNickname: string | null;\r\n entraObjectId: string | null;\r\n lastEntraSyncAt: string | null;\r\n isSyncedFromEntra: boolean;\r\n parentGroupId: string | null;\r\n parentGroupName: string | null;\r\n members: GroupMemberDto[];\r\n roles: GroupRoleDto[];\r\n childGroups: GroupChildDto[];\r\n createdAt: string;\r\n updatedAt: string | null;\r\n createdBy: string | null;\r\n updatedBy: string | null;\r\n}\r\n\r\nexport interface GroupMemberDto {\r\n userId: string;\r\n email: string;\r\n fullName: string;\r\n addedAt: string;\r\n addedBy: string | null;\r\n}\r\n\r\nexport interface GroupRoleDto {\r\n roleId: string;\r\n roleName: string;\r\n roleDescription: string | null;\r\n assignedAt: string;\r\n assignedBy: string;\r\n isInheritable: boolean;\r\n tenantId: string | null;\r\n tenantName: string | null;\r\n isGlobal: boolean;\r\n}\r\n\r\nexport interface GroupChildDto {\r\n id: string;\r\n name: string;\r\n isActive: boolean;\r\n}\r\n\r\nexport interface CreateGroupRequest {\r\n name: string;\r\n description?: string;\r\n isSecurityGroup?: boolean;\r\n parentGroupId?: string;\r\n}\r\n\r\nexport interface UpdateGroupRequest {\r\n name: string;\r\n description?: string;\r\n}\r\n\r\nexport interface LinkEntraRequest {\r\n entraObjectId: string;\r\n}\r\n\r\nexport interface AddMemberRequest {\r\n userId: string;\r\n}\r\n\r\nexport interface AssignRoleRequest {\r\n roleId: string;\r\n isInheritable?: boolean;\r\n tenantId?: string | null;\r\n}\r\n\r\nexport interface SetInheritableRequest {\r\n isInheritable: boolean;\r\n}\r\n\r\nexport interface SetParentGroupRequest {\r\n parentGroupId: string | null;\r\n}\r\n\r\nexport interface InheritedTenantDto {\r\n tenantId: string;\r\n tenantName: string;\r\n tenantSlug: string;\r\n tenantType: string;\r\n inheritedFromGroupId: string;\r\n inheritedFromGroupName: string;\r\n}\r\n\r\nexport interface InheritedMemberDto {\r\n userId: string;\r\n email: string;\r\n fullName: string;\r\n inheritedFromGroupId: string;\r\n inheritedFromGroupName: string;\r\n level: number;\r\n}\r\n\r\nexport interface InheritedGroupRoleDto {\r\n roleId: string;\r\n roleName: string;\r\n roleDescription: string | null;\r\n tenantId: string | null;\r\n tenantName: string | null;\r\n isGlobal: boolean;\r\n inheritedFromGroupId: string;\r\n inheritedFromGroupName: string;\r\n level: number;\r\n}\r\n\r\nexport interface GroupTenantDto {\r\n tenantId: string;\r\n tenantName: string;\r\n tenantSlug: string;\r\n tenantType: string;\r\n addedAt: string;\r\n addedBy: string | null;\r\n}\r\n\r\nexport interface AddToTenantRequest {\r\n tenantId: string;\r\n}\r\n\r\nexport interface CustomRoleDetailDto {\r\n id: string;\r\n name: string;\r\n shortName: string;\r\n category: string;\r\n description: string | null;\r\n isSystem: boolean;\r\n permissions: CustomRolePermissionDto[];\r\n createdAt: string;\r\n updatedAt: string | null;\r\n}\r\n\r\nexport interface CustomRolePermissionDto {\r\n id: string;\r\n path: string;\r\n description: string | null;\r\n}\r\n\r\nconst BASE_URL = '/api/administration/users/groups';\r\n\r\n/**\r\n * Factory function to create groups API with explicit tenant context.\r\n * @param tenantSlug - Optional tenant slug to use for all requests\r\n */\r\nconst _createGroupsApi = (tenantSlug?: string) => {\r\n const apiContext = tenantSlug ? withTenantContext(tenantSlug) : api;\r\n\r\n return {\r\n // === CRUD OPERATIONS ===\r\n\r\n getAll: async (\r\n search?: string,\r\n isActive?: boolean,\r\n syncedFromEntra?: boolean\r\n ): Promise<GroupListDto[]> => {\r\n const params = new URLSearchParams();\r\n if (search) params.append('search', search);\r\n if (isActive !== undefined) params.append('isActive', String(isActive));\r\n if (syncedFromEntra !== undefined) params.append('syncedFromEntra', String(syncedFromEntra));\r\n\r\n const queryString = params.toString();\r\n const url = queryString ? `${BASE_URL}?${queryString}` : BASE_URL;\r\n const response = await apiContext.get<GroupListDto[]>(url);\r\n return response;\r\n },\r\n\r\n getById: async (id: string): Promise<GroupDetailDto> => {\r\n const response = await apiContext.get<GroupDetailDto>(`${BASE_URL}/${id}`);\r\n return response;\r\n },\r\n\r\n create: async (data: CreateGroupRequest): Promise<GroupDetailDto> => {\r\n const response = await apiContext.post<GroupDetailDto>(BASE_URL, data);\r\n return response;\r\n },\r\n\r\n update: async (id: string, data: UpdateGroupRequest): Promise<GroupDetailDto> => {\r\n const response = await apiContext.put<GroupDetailDto>(`${BASE_URL}/${id}`, data);\r\n return response;\r\n },\r\n\r\n delete: async (id: string): Promise<void> => {\r\n await apiContext.delete(`${BASE_URL}/${id}`);\r\n },\r\n\r\n activate: async (id: string): Promise<void> => {\r\n await apiContext.patch(`${BASE_URL}/${id}/activate`);\r\n },\r\n\r\n deactivate: async (id: string): Promise<void> => {\r\n await apiContext.patch(`${BASE_URL}/${id}/deactivate`);\r\n },\r\n\r\n // === ENTRA LINKING ===\r\n\r\n linkToEntra: async (id: string, data: LinkEntraRequest): Promise<void> => {\r\n await apiContext.post(`${BASE_URL}/${id}/link-entra`, data);\r\n },\r\n\r\n unlinkFromEntra: async (id: string): Promise<void> => {\r\n await apiContext.post(`${BASE_URL}/${id}/unlink-entra`);\r\n },\r\n\r\n // === MEMBER MANAGEMENT ===\r\n\r\n getMembers: async (id: string): Promise<GroupMemberDto[]> => {\r\n const response = await apiContext.get<GroupMemberDto[]>(`${BASE_URL}/${id}/members`);\r\n return response;\r\n },\r\n\r\n addMember: async (id: string, data: AddMemberRequest): Promise<void> => {\r\n await apiContext.post(`${BASE_URL}/${id}/members`, data);\r\n },\r\n\r\n removeMember: async (groupId: string, userId: string): Promise<void> => {\r\n await apiContext.delete(`${BASE_URL}/${groupId}/members/${userId}`);\r\n },\r\n\r\n // === ROLE MANAGEMENT ===\r\n\r\n getRoles: async (id: string): Promise<GroupRoleDto[]> => {\r\n const response = await apiContext.get<GroupRoleDto[]>(`${BASE_URL}/${id}/roles`);\r\n return response;\r\n },\r\n\r\n assignRole: async (id: string, data: AssignRoleRequest): Promise<void> => {\r\n await apiContext.post(`${BASE_URL}/${id}/roles`, data);\r\n },\r\n\r\n removeRole: async (groupId: string, roleId: string, tenantId?: string | null): Promise<void> => {\r\n const params = tenantId ? `?tenantId=${tenantId}` : '';\r\n await apiContext.delete(`${BASE_URL}/${groupId}/roles/${roleId}${params}`);\r\n },\r\n\r\n setRoleInheritable: async (\r\n groupId: string,\r\n roleId: string,\r\n data: SetInheritableRequest\r\n ): Promise<void> => {\r\n await apiContext.patch(`${BASE_URL}/${groupId}/roles/${roleId}/inheritable`, data);\r\n },\r\n\r\n // === HIERARCHY ===\r\n\r\n getChildGroups: async (id: string): Promise<GroupChildDto[]> => {\r\n const response = await apiContext.get<GroupChildDto[]>(`${BASE_URL}/${id}/children`);\r\n return response;\r\n },\r\n\r\n setParentGroup: async (id: string, data: SetParentGroupRequest): Promise<void> => {\r\n await apiContext.patch(`${BASE_URL}/${id}/parent`, data);\r\n },\r\n\r\n // === TENANT MANAGEMENT ===\r\n\r\n getTenants: async (id: string): Promise<GroupTenantDto[]> => {\r\n const response = await apiContext.get<GroupTenantDto[]>(`${BASE_URL}/${id}/tenants`);\r\n return response;\r\n },\r\n\r\n getInheritedTenants: async (id: string): Promise<InheritedTenantDto[]> => {\r\n const response = await apiContext.get<InheritedTenantDto[]>(`${BASE_URL}/${id}/inherited-tenants`);\r\n return response;\r\n },\r\n\r\n getInheritedMembers: async (id: string): Promise<InheritedMemberDto[]> => {\r\n const response = await apiContext.get<InheritedMemberDto[]>(`${BASE_URL}/${id}/inherited-members`);\r\n return response;\r\n },\r\n\r\n getInheritedRoles: async (id: string): Promise<InheritedGroupRoleDto[]> => {\r\n const response = await apiContext.get<InheritedGroupRoleDto[]>(`${BASE_URL}/${id}/inherited-roles`);\r\n return response;\r\n },\r\n\r\n addToTenant: async (id: string, data: AddToTenantRequest): Promise<void> => {\r\n await apiContext.post(`${BASE_URL}/${id}/tenants`, data);\r\n },\r\n\r\n removeFromTenant: async (groupId: string, tenantId: string): Promise<void> => {\r\n await apiContext.delete(`${BASE_URL}/${groupId}/tenants/${tenantId}`);\r\n },\r\n\r\n // === APPLICATION ACCESS ===\r\n\r\n getApplicationAccess: async (id: string, tenantId?: string): Promise<UserApplicationAccessDto[]> => {\r\n const url = tenantId\r\n ? `${BASE_URL}/${id}/application-access?tenantId=${tenantId}`\r\n : `${BASE_URL}/${id}/application-access`;\r\n const response = await apiContext.get<UserApplicationAccessDto[]>(url);\r\n return response;\r\n },\r\n\r\n // === CUSTOM ROLE ===\r\n\r\n getCustomRole: async (id: string): Promise<CustomRoleDetailDto | null> => {\r\n const response = await apiContext.get<CustomRoleDetailDto | null>(`${BASE_URL}/${id}/custom-role`);\r\n return response;\r\n },\r\n\r\n createCustomRole: async (id: string): Promise<CustomRoleDetailDto> => {\r\n const response = await apiContext.post<CustomRoleDetailDto>(`${BASE_URL}/${id}/custom-role`);\r\n return response;\r\n },\r\n\r\n deleteCustomRole: async (id: string): Promise<void> => {\r\n await apiContext.delete(`${BASE_URL}/${id}/custom-role`);\r\n },\r\n };\r\n};\r\nexport type GroupsApi = ReturnType<typeof _createGroupsApi>;\r\nexport const createGroupsApi: (tenantSlug?: string) => GroupsApi = _createGroupsApi;\r\n\r\n// Default export uses localStorage tenant slug (backward compatible)\r\nexport const groupsApi = createGroupsApi();\r\n"],"names":["withTenantContext","tenantSlug","url","config","apiClient","res","data","BASE_URL","_createGroupsApi","apiContext","api","search","isActive","syncedFromEntra","params","queryString","id","groupId","userId","roleId","tenantId","createGroupsApi","groupsApi"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"groupsApi-CBI5vMLa.js","sources":["../../src/services/api/groupsApi.ts"],"sourcesContent":["import { api, apiClient } from './apiClient';\r\nimport type { UserApplicationAccessDto } from './adminApi';\r\n\r\n/**\r\n * Creates API methods with a specific tenant context.\r\n * Used when Super Admins view tenant-specific pages without \"switching\" to that tenant.\r\n */\r\nconst withTenantContext = (tenantSlug?: string) => ({\r\n get: <T>(url: string, config?: Parameters<typeof apiClient.get>[1]) =>\r\n apiClient.get<T>(url, {\r\n ...config,\r\n headers: tenantSlug ? { ...config?.headers, 'X-Tenant-Slug': tenantSlug } : config?.headers,\r\n }).then(res => res.data),\r\n\r\n post: <T>(url: string, data?: unknown, config?: Parameters<typeof apiClient.post>[2]) =>\r\n apiClient.post<T>(url, data, {\r\n ...config,\r\n headers: tenantSlug ? { ...config?.headers, 'X-Tenant-Slug': tenantSlug } : config?.headers,\r\n }).then(res => res.data),\r\n\r\n put: <T>(url: string, data?: unknown, config?: Parameters<typeof apiClient.put>[2]) =>\r\n apiClient.put<T>(url, data, {\r\n ...config,\r\n headers: tenantSlug ? { ...config?.headers, 'X-Tenant-Slug': tenantSlug } : config?.headers,\r\n }).then(res => res.data),\r\n\r\n patch: <T>(url: string, data?: unknown, config?: Parameters<typeof apiClient.patch>[2]) =>\r\n apiClient.patch<T>(url, data, {\r\n ...config,\r\n headers: tenantSlug ? { ...config?.headers, 'X-Tenant-Slug': tenantSlug } : config?.headers,\r\n }).then(res => res.data),\r\n\r\n delete: <T>(url: string, config?: Parameters<typeof apiClient.delete>[1]) =>\r\n apiClient.delete<T>(url, {\r\n ...config,\r\n headers: tenantSlug ? { ...config?.headers, 'X-Tenant-Slug': tenantSlug } : config?.headers,\r\n }).then(res => res.data),\r\n});\r\n\r\n// Types\r\nexport interface GroupListDto {\r\n id: string;\r\n name: string;\r\n description: string | null;\r\n isActive: boolean;\r\n isSecurityGroup: boolean;\r\n isMailEnabled: boolean;\r\n entraObjectId: string | null;\r\n lastEntraSyncAt: string | null;\r\n isSyncedFromEntra: boolean;\r\n memberCount: number;\r\n roles: string[];\r\n createdAt: string;\r\n parentGroupId: string | null;\r\n parentGroupName: string | null;\r\n childCount: number;\r\n}\r\n\r\nexport interface GroupDetailDto {\r\n id: string;\r\n name: string;\r\n description: string | null;\r\n isActive: boolean;\r\n isSecurityGroup: boolean;\r\n isMailEnabled: boolean;\r\n mail: string | null;\r\n mailNickname: string | null;\r\n entraObjectId: string | null;\r\n lastEntraSyncAt: string | null;\r\n isSyncedFromEntra: boolean;\r\n parentGroupId: string | null;\r\n parentGroupName: string | null;\r\n members: GroupMemberDto[];\r\n roles: GroupRoleDto[];\r\n childGroups: GroupChildDto[];\r\n createdAt: string;\r\n updatedAt: string | null;\r\n createdBy: string | null;\r\n updatedBy: string | null;\r\n}\r\n\r\nexport interface GroupMemberDto {\r\n userId: string;\r\n email: string;\r\n fullName: string;\r\n addedAt: string;\r\n addedBy: string | null;\r\n}\r\n\r\nexport interface GroupRoleDto {\r\n roleId: string;\r\n roleName: string;\r\n roleDescription: string | null;\r\n assignedAt: string;\r\n assignedBy: string;\r\n isInheritable: boolean;\r\n tenantId: string | null;\r\n tenantName: string | null;\r\n isGlobal: boolean;\r\n}\r\n\r\nexport interface GroupChildDto {\r\n id: string;\r\n name: string;\r\n isActive: boolean;\r\n}\r\n\r\nexport interface CreateGroupRequest {\r\n name: string;\r\n description?: string;\r\n isSecurityGroup?: boolean;\r\n parentGroupId?: string;\r\n}\r\n\r\nexport interface UpdateGroupRequest {\r\n name: string;\r\n description?: string;\r\n}\r\n\r\nexport interface LinkEntraRequest {\r\n entraObjectId: string;\r\n}\r\n\r\nexport interface AddMemberRequest {\r\n userId: string;\r\n}\r\n\r\nexport interface AssignRoleRequest {\r\n roleId: string;\r\n isInheritable?: boolean;\r\n tenantId?: string | null;\r\n}\r\n\r\nexport interface SetInheritableRequest {\r\n isInheritable: boolean;\r\n}\r\n\r\nexport interface SetParentGroupRequest {\r\n parentGroupId: string | null;\r\n}\r\n\r\nexport interface InheritedTenantDto {\r\n tenantId: string;\r\n tenantName: string;\r\n tenantSlug: string;\r\n tenantType: string;\r\n inheritedFromGroupId: string;\r\n inheritedFromGroupName: string;\r\n}\r\n\r\nexport interface InheritedMemberDto {\r\n userId: string;\r\n email: string;\r\n fullName: string;\r\n inheritedFromGroupId: string;\r\n inheritedFromGroupName: string;\r\n level: number;\r\n}\r\n\r\nexport interface InheritedGroupRoleDto {\r\n roleId: string;\r\n roleName: string;\r\n roleDescription: string | null;\r\n tenantId: string | null;\r\n tenantName: string | null;\r\n isGlobal: boolean;\r\n inheritedFromGroupId: string;\r\n inheritedFromGroupName: string;\r\n level: number;\r\n}\r\n\r\nexport interface GroupTenantDto {\r\n tenantId: string;\r\n tenantName: string;\r\n tenantSlug: string;\r\n tenantType: string;\r\n addedAt: string;\r\n addedBy: string | null;\r\n}\r\n\r\nexport interface AddToTenantRequest {\r\n tenantId: string;\r\n}\r\n\r\nexport interface CustomRoleDetailDto {\r\n id: string;\r\n name: string;\r\n shortName: string;\r\n category: string;\r\n description: string | null;\r\n isSystem: boolean;\r\n permissions: CustomRolePermissionDto[];\r\n createdAt: string;\r\n updatedAt: string | null;\r\n}\r\n\r\nexport interface CustomRolePermissionDto {\r\n id: string;\r\n path: string;\r\n description: string | null;\r\n}\r\n\r\nconst BASE_URL = '/api/administration/users/groups';\r\n\r\n/**\r\n * Factory function to create groups API with explicit tenant context.\r\n * @param tenantSlug - Optional tenant slug to use for all requests\r\n */\r\nconst _createGroupsApi = (tenantSlug?: string) => {\r\n const apiContext = tenantSlug ? withTenantContext(tenantSlug) : api;\r\n\r\n return {\r\n // === CRUD OPERATIONS ===\r\n\r\n getAll: async (\r\n search?: string,\r\n isActive?: boolean,\r\n syncedFromEntra?: boolean\r\n ): Promise<GroupListDto[]> => {\r\n const params = new URLSearchParams();\r\n if (search) params.append('search', search);\r\n if (isActive !== undefined) params.append('isActive', String(isActive));\r\n if (syncedFromEntra !== undefined) params.append('syncedFromEntra', String(syncedFromEntra));\r\n\r\n const queryString = params.toString();\r\n const url = queryString ? `${BASE_URL}?${queryString}` : BASE_URL;\r\n const response = await apiContext.get<GroupListDto[]>(url);\r\n return response;\r\n },\r\n\r\n getById: async (id: string): Promise<GroupDetailDto> => {\r\n const response = await apiContext.get<GroupDetailDto>(`${BASE_URL}/${id}`);\r\n return response;\r\n },\r\n\r\n create: async (data: CreateGroupRequest): Promise<GroupDetailDto> => {\r\n const response = await apiContext.post<GroupDetailDto>(BASE_URL, data);\r\n return response;\r\n },\r\n\r\n update: async (id: string, data: UpdateGroupRequest): Promise<GroupDetailDto> => {\r\n const response = await apiContext.put<GroupDetailDto>(`${BASE_URL}/${id}`, data);\r\n return response;\r\n },\r\n\r\n delete: async (id: string): Promise<void> => {\r\n await apiContext.delete(`${BASE_URL}/${id}`);\r\n },\r\n\r\n activate: async (id: string): Promise<void> => {\r\n await apiContext.patch(`${BASE_URL}/${id}/activate`);\r\n },\r\n\r\n deactivate: async (id: string): Promise<void> => {\r\n await apiContext.patch(`${BASE_URL}/${id}/deactivate`);\r\n },\r\n\r\n // === ENTRA LINKING ===\r\n\r\n linkToEntra: async (id: string, data: LinkEntraRequest): Promise<void> => {\r\n await apiContext.post(`${BASE_URL}/${id}/link-entra`, data);\r\n },\r\n\r\n unlinkFromEntra: async (id: string): Promise<void> => {\r\n await apiContext.post(`${BASE_URL}/${id}/unlink-entra`);\r\n },\r\n\r\n // === MEMBER MANAGEMENT ===\r\n\r\n getMembers: async (id: string): Promise<GroupMemberDto[]> => {\r\n const response = await apiContext.get<GroupMemberDto[]>(`${BASE_URL}/${id}/members`);\r\n return response;\r\n },\r\n\r\n addMember: async (id: string, data: AddMemberRequest): Promise<void> => {\r\n await apiContext.post(`${BASE_URL}/${id}/members`, data);\r\n },\r\n\r\n removeMember: async (groupId: string, userId: string): Promise<void> => {\r\n await apiContext.delete(`${BASE_URL}/${groupId}/members/${userId}`);\r\n },\r\n\r\n // === ROLE MANAGEMENT ===\r\n\r\n getRoles: async (id: string): Promise<GroupRoleDto[]> => {\r\n const response = await apiContext.get<GroupRoleDto[]>(`${BASE_URL}/${id}/roles`);\r\n return response;\r\n },\r\n\r\n assignRole: async (id: string, data: AssignRoleRequest): Promise<void> => {\r\n await apiContext.post(`${BASE_URL}/${id}/roles`, data);\r\n },\r\n\r\n removeRole: async (groupId: string, roleId: string, tenantId?: string | null): Promise<void> => {\r\n const params = tenantId ? `?tenantId=${tenantId}` : '';\r\n await apiContext.delete(`${BASE_URL}/${groupId}/roles/${roleId}${params}`);\r\n },\r\n\r\n setRoleInheritable: async (\r\n groupId: string,\r\n roleId: string,\r\n data: SetInheritableRequest\r\n ): Promise<void> => {\r\n await apiContext.patch(`${BASE_URL}/${groupId}/roles/${roleId}/inheritable`, data);\r\n },\r\n\r\n // === HIERARCHY ===\r\n\r\n getChildGroups: async (id: string): Promise<GroupChildDto[]> => {\r\n const response = await apiContext.get<GroupChildDto[]>(`${BASE_URL}/${id}/children`);\r\n return response;\r\n },\r\n\r\n setParentGroup: async (id: string, data: SetParentGroupRequest): Promise<void> => {\r\n await apiContext.patch(`${BASE_URL}/${id}/parent`, data);\r\n },\r\n\r\n // === TENANT MANAGEMENT ===\r\n\r\n getTenants: async (id: string): Promise<GroupTenantDto[]> => {\r\n const response = await apiContext.get<GroupTenantDto[]>(`${BASE_URL}/${id}/tenants`);\r\n return response;\r\n },\r\n\r\n getInheritedTenants: async (id: string): Promise<InheritedTenantDto[]> => {\r\n const response = await apiContext.get<InheritedTenantDto[]>(`${BASE_URL}/${id}/inherited-tenants`);\r\n return response;\r\n },\r\n\r\n getInheritedMembers: async (id: string): Promise<InheritedMemberDto[]> => {\r\n const response = await apiContext.get<InheritedMemberDto[]>(`${BASE_URL}/${id}/inherited-members`);\r\n return response;\r\n },\r\n\r\n getInheritedRoles: async (id: string): Promise<InheritedGroupRoleDto[]> => {\r\n const response = await apiContext.get<InheritedGroupRoleDto[]>(`${BASE_URL}/${id}/inherited-roles`);\r\n return response;\r\n },\r\n\r\n addToTenant: async (id: string, data: AddToTenantRequest): Promise<void> => {\r\n await apiContext.post(`${BASE_URL}/${id}/tenants`, data);\r\n },\r\n\r\n removeFromTenant: async (groupId: string, tenantId: string): Promise<void> => {\r\n await apiContext.delete(`${BASE_URL}/${groupId}/tenants/${tenantId}`);\r\n },\r\n\r\n // === APPLICATION ACCESS ===\r\n\r\n getApplicationAccess: async (id: string, tenantId?: string): Promise<UserApplicationAccessDto[]> => {\r\n const url = tenantId\r\n ? `${BASE_URL}/${id}/application-access?tenantId=${tenantId}`\r\n : `${BASE_URL}/${id}/application-access`;\r\n const response = await apiContext.get<UserApplicationAccessDto[]>(url);\r\n return response;\r\n },\r\n\r\n // === CUSTOM ROLE ===\r\n\r\n getCustomRole: async (id: string): Promise<CustomRoleDetailDto | null> => {\r\n const response = await apiContext.get<CustomRoleDetailDto | null>(`${BASE_URL}/${id}/custom-role`);\r\n return response;\r\n },\r\n\r\n createCustomRole: async (id: string): Promise<CustomRoleDetailDto> => {\r\n const response = await apiContext.post<CustomRoleDetailDto>(`${BASE_URL}/${id}/custom-role`);\r\n return response;\r\n },\r\n\r\n deleteCustomRole: async (id: string): Promise<void> => {\r\n await apiContext.delete(`${BASE_URL}/${id}/custom-role`);\r\n },\r\n };\r\n};\r\nexport type GroupsApi = ReturnType<typeof _createGroupsApi>;\r\nexport const createGroupsApi: (tenantSlug?: string) => GroupsApi = _createGroupsApi;\r\n\r\n// Default export uses localStorage tenant slug (backward compatible)\r\nexport const groupsApi = createGroupsApi();\r\n"],"names":["withTenantContext","tenantSlug","url","config","apiClient","res","data","BASE_URL","_createGroupsApi","apiContext","api","search","isActive","syncedFromEntra","params","queryString","id","groupId","userId","roleId","tenantId","createGroupsApi","groupsApi"],"mappings":"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"}
|