@acorex/modules 20.2.0-next.0 → 20.2.0-next.2
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/auth/index.d.ts +58 -4
- package/calendar-management/index.d.ts +47 -26
- package/conversation/README.md +1 -1
- package/conversation/index.d.ts +117 -71
- package/fesm2022/{acorex-modules-auth-acorex-modules-auth-y6rICHrT.mjs → acorex-modules-auth-acorex-modules-auth-BxqN76H7.mjs} +232 -84
- package/fesm2022/acorex-modules-auth-acorex-modules-auth-BxqN76H7.mjs.map +1 -0
- package/fesm2022/{acorex-modules-auth-app-chooser.component-Cpy0VN6n.mjs → acorex-modules-auth-app-chooser.component-5FbgqbVo.mjs} +6 -4
- package/fesm2022/acorex-modules-auth-app-chooser.component-5FbgqbVo.mjs.map +1 -0
- package/fesm2022/{acorex-modules-auth-login.module-ZEX4NMuJ.mjs → acorex-modules-auth-login.module-CmMM4TpQ.mjs} +4 -4
- package/fesm2022/{acorex-modules-auth-login.module-ZEX4NMuJ.mjs.map → acorex-modules-auth-login.module-CmMM4TpQ.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-master.layout-D-lIn4Pl.mjs → acorex-modules-auth-master.layout-eX5-7AeO.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-master.layout-D-lIn4Pl.mjs.map → acorex-modules-auth-master.layout-eX5-7AeO.mjs.map} +1 -1
- package/fesm2022/acorex-modules-auth-oauth-callback.component-C9s-5c7F.mjs +97 -0
- package/fesm2022/acorex-modules-auth-oauth-callback.component-C9s-5c7F.mjs.map +1 -0
- package/fesm2022/{acorex-modules-auth-password.component-CafZfqKe.mjs → acorex-modules-auth-password.component-CDrYHh1x.mjs} +7 -7
- package/fesm2022/{acorex-modules-auth-password.component-CafZfqKe.mjs.map → acorex-modules-auth-password.component-CDrYHh1x.mjs.map} +1 -1
- package/fesm2022/acorex-modules-auth-password.component-r_Lh8oGN.mjs +226 -0
- package/fesm2022/acorex-modules-auth-password.component-r_Lh8oGN.mjs.map +1 -0
- package/fesm2022/{acorex-modules-auth-routes-D9-qfC3V.mjs → acorex-modules-auth-routes-CMdsDZud.mjs} +2 -2
- package/fesm2022/{acorex-modules-auth-routes-D9-qfC3V.mjs.map → acorex-modules-auth-routes-CMdsDZud.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-tenant-chooser.component-B1aE-TOD.mjs → acorex-modules-auth-tenant-chooser.component-BdK5T-8X.mjs} +19 -10
- package/fesm2022/acorex-modules-auth-tenant-chooser.component-BdK5T-8X.mjs.map +1 -0
- package/fesm2022/{acorex-modules-auth-two-factor-code.component-BglerlU-.mjs → acorex-modules-auth-two-factor-code.component-DSWd06bn.mjs} +6 -6
- package/fesm2022/{acorex-modules-auth-two-factor-code.component-BglerlU-.mjs.map → acorex-modules-auth-two-factor-code.component-DSWd06bn.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-auth-two-factor.module-D3N2XyOH.mjs → acorex-modules-auth-two-factor.module-YV9pDOnB.mjs} +3 -3
- package/fesm2022/{acorex-modules-auth-two-factor.module-D3N2XyOH.mjs.map → acorex-modules-auth-two-factor.module-YV9pDOnB.mjs.map} +1 -1
- package/fesm2022/acorex-modules-auth-user-sessions.component-KI9dYs78.mjs +135 -0
- package/fesm2022/acorex-modules-auth-user-sessions.component-KI9dYs78.mjs.map +1 -0
- package/fesm2022/acorex-modules-auth.mjs +1 -1
- package/fesm2022/acorex-modules-calendar-management.mjs +353 -315
- package/fesm2022/acorex-modules-calendar-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-common-acorex-modules-common-DQESb8jf.mjs → acorex-modules-common-acorex-modules-common-D06CT4CO.mjs} +6 -16
- package/fesm2022/acorex-modules-common-acorex-modules-common-D06CT4CO.mjs.map +1 -0
- package/fesm2022/{acorex-modules-common-search-popup.component-CpFvcrxw.mjs → acorex-modules-common-search-popup.component-DbTj01Wz.mjs} +2 -2
- package/fesm2022/{acorex-modules-common-search-popup.component-CpFvcrxw.mjs.map → acorex-modules-common-search-popup.component-DbTj01Wz.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-common-settings.provider-ha75F6g5.mjs → acorex-modules-common-settings.provider-DPVsF4c9.mjs} +2 -2
- package/fesm2022/{acorex-modules-common-settings.provider-ha75F6g5.mjs.map → acorex-modules-common-settings.provider-DPVsF4c9.mjs.map} +1 -1
- package/fesm2022/acorex-modules-common.mjs +1 -1
- package/fesm2022/acorex-modules-conversation.mjs +282 -204
- package/fesm2022/acorex-modules-conversation.mjs.map +1 -1
- package/fesm2022/acorex-modules-dashboard-management.mjs +1 -1
- package/fesm2022/acorex-modules-dashboard-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-data-management.mjs +3 -3
- package/fesm2022/acorex-modules-data-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-document-management-acorex-modules-document-management-B4Jd-KGV.mjs → acorex-modules-document-management-acorex-modules-document-management-C7ot6PfT.mjs} +411 -51
- package/fesm2022/acorex-modules-document-management-acorex-modules-document-management-C7ot6PfT.mjs.map +1 -0
- package/fesm2022/{acorex-modules-document-management-attachment-widget.component-Bp4kKjC4.mjs → acorex-modules-document-management-attachment-widget.component-C6pop0RM.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-attachment-widget.component-Bp4kKjC4.mjs.map → acorex-modules-document-management-attachment-widget.component-C6pop0RM.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-create-folder-dialog.component-12aUAucS.mjs → acorex-modules-document-management-create-folder-dialog.component-ga7fuY4H.mjs} +4 -4
- package/fesm2022/acorex-modules-document-management-create-folder-dialog.component-ga7fuY4H.mjs.map +1 -0
- package/fesm2022/{acorex-modules-document-management-details-view.component-bzA7fJZW.mjs → acorex-modules-document-management-details-view.component-CzTg3hha.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-details-view.component-bzA7fJZW.mjs.map → acorex-modules-document-management-details-view.component-CzTg3hha.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-drive-choose.component-DLJdJzp1.mjs → acorex-modules-document-management-drive-choose.component-BB5d32EI.mjs} +5 -5
- package/fesm2022/{acorex-modules-document-management-drive-choose.component-DLJdJzp1.mjs.map → acorex-modules-document-management-drive-choose.component-BB5d32EI.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-drive.component-DrkSd6Rv.mjs → acorex-modules-document-management-drive.component-TzRLr7rb.mjs} +7 -7
- package/fesm2022/{acorex-modules-document-management-drive.component-DrkSd6Rv.mjs.map → acorex-modules-document-management-drive.component-TzRLr7rb.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-large-icons-view.component-DV8oWdDh.mjs → acorex-modules-document-management-large-icons-view.component-BeKFvgYU.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-large-icons-view.component-DV8oWdDh.mjs.map → acorex-modules-document-management-large-icons-view.component-BeKFvgYU.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-large-tiles-view.component-Bgr9s_zf.mjs → acorex-modules-document-management-large-tiles-view.component-CQyiGE99.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-large-tiles-view.component-Bgr9s_zf.mjs.map → acorex-modules-document-management-large-tiles-view.component-CQyiGE99.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-link-dialog.component-CSEIhT4P.mjs → acorex-modules-document-management-link-dialog.component-CPuOuvu-.mjs} +2 -2
- package/fesm2022/acorex-modules-document-management-link-dialog.component-CPuOuvu-.mjs.map +1 -0
- package/fesm2022/{acorex-modules-document-management-list-view.component-Dz6ymqrq.mjs → acorex-modules-document-management-list-view.component-CWGGArxw.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-list-view.component-Dz6ymqrq.mjs.map → acorex-modules-document-management-list-view.component-CWGGArxw.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-meta-choose-popup.component-DYJN-4Pe.mjs → acorex-modules-document-management-meta-choose-popup.component-C7ounW6N.mjs} +8 -9
- package/fesm2022/acorex-modules-document-management-meta-choose-popup.component-C7ounW6N.mjs.map +1 -0
- package/fesm2022/{acorex-modules-document-management-permission-definition.provider-CN7HVQLu.mjs → acorex-modules-document-management-permission-definition.provider-s0P0M8p2.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-permission-definition.provider-CN7HVQLu.mjs.map → acorex-modules-document-management-permission-definition.provider-s0P0M8p2.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-rename-node-dialog.component-C_dsLLMb.mjs → acorex-modules-document-management-rename-node-dialog.component-MPkYZl2p.mjs} +4 -4
- package/fesm2022/{acorex-modules-document-management-rename-node-dialog.component-C_dsLLMb.mjs.map → acorex-modules-document-management-rename-node-dialog.component-MPkYZl2p.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-share-dialog.component-CBrf7hjZ.mjs → acorex-modules-document-management-share-dialog.component-CLF6b1Io.mjs} +2 -2
- package/fesm2022/acorex-modules-document-management-share-dialog.component-CLF6b1Io.mjs.map +1 -0
- package/fesm2022/{acorex-modules-document-management-share-email-dialog.component-D3WcHAOf.mjs → acorex-modules-document-management-share-email-dialog.component-B8zNvOUv.mjs} +2 -2
- package/fesm2022/acorex-modules-document-management-share-email-dialog.component-B8zNvOUv.mjs.map +1 -0
- package/fesm2022/{acorex-modules-document-management-small-icons-view.component-wvFkjOqg.mjs → acorex-modules-document-management-small-icons-view.component-DRVLlW1e.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-small-icons-view.component-wvFkjOqg.mjs.map → acorex-modules-document-management-small-icons-view.component-DRVLlW1e.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-document-management-small-tiles-view.component-C4ARGOZR.mjs → acorex-modules-document-management-small-tiles-view.component-C1E8RKYM.mjs} +2 -2
- package/fesm2022/{acorex-modules-document-management-small-tiles-view.component-C4ARGOZR.mjs.map → acorex-modules-document-management-small-tiles-view.component-C1E8RKYM.mjs.map} +1 -1
- package/fesm2022/acorex-modules-document-management.mjs +1 -1
- package/fesm2022/{acorex-modules-issue-management-acorex-modules-issue-management-B8ZVc-0b.mjs → acorex-modules-issue-management-acorex-modules-issue-management-ITP4K-tZ.mjs} +3 -3
- package/fesm2022/{acorex-modules-issue-management-acorex-modules-issue-management-B8ZVc-0b.mjs.map → acorex-modules-issue-management-acorex-modules-issue-management-ITP4K-tZ.mjs.map} +1 -1
- package/fesm2022/{acorex-modules-issue-management-capture-screen.component-D1vapaJC.mjs → acorex-modules-issue-management-capture-screen.component-C1USFJeP.mjs} +2 -2
- package/fesm2022/{acorex-modules-issue-management-capture-screen.component-D1vapaJC.mjs.map → acorex-modules-issue-management-capture-screen.component-C1USFJeP.mjs.map} +1 -1
- package/fesm2022/acorex-modules-issue-management.mjs +1 -1
- package/fesm2022/acorex-modules-notification-management.mjs +109 -28
- package/fesm2022/acorex-modules-notification-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-organization-management-add-item.component-DsDk5cyO.mjs → acorex-modules-organization-management-add-item.component-Dr-bwC4K.mjs} +2 -2
- package/fesm2022/acorex-modules-organization-management-add-item.component-Dr-bwC4K.mjs.map +1 -0
- package/fesm2022/acorex-modules-organization-management-branch.entity-CHp5WtIF.mjs.map +1 -1
- package/fesm2022/acorex-modules-organization-management-department.entity-BxCyXNtv.mjs.map +1 -1
- package/fesm2022/acorex-modules-organization-management-division.entity-DzQT2jpz.mjs.map +1 -1
- package/fesm2022/acorex-modules-organization-management-employee.entity-CSY_U9Bl.mjs.map +1 -1
- package/fesm2022/acorex-modules-organization-management-employment-type.entity-h9Hua7Xe.mjs.map +1 -1
- package/fesm2022/{acorex-modules-organization-management-org-chart.page-DWQ-5NF_.mjs → acorex-modules-organization-management-org-chart.page-CXhtYrCS.mjs} +2 -2
- package/fesm2022/{acorex-modules-organization-management-org-chart.page-DWQ-5NF_.mjs.map → acorex-modules-organization-management-org-chart.page-CXhtYrCS.mjs.map} +1 -1
- package/fesm2022/acorex-modules-organization-management-position-category.entity-CIir9UMg.mjs.map +1 -1
- package/fesm2022/acorex-modules-organization-management-position.entity-BpkjUsoZ.mjs.map +1 -1
- package/fesm2022/acorex-modules-organization-management-responsibility-category.entity-tJFpEylO.mjs.map +1 -1
- package/fesm2022/acorex-modules-organization-management-responsibility.entity-DmKSoxpL.mjs.map +1 -1
- package/fesm2022/acorex-modules-organization-management-role-category.entity-CAljzQcH.mjs.map +1 -1
- package/fesm2022/acorex-modules-organization-management-skill-category.entity-iIbc-pjJ.mjs.map +1 -1
- package/fesm2022/acorex-modules-organization-management-skill.entity-DoAsCzm9.mjs.map +1 -1
- package/fesm2022/acorex-modules-organization-management-team.entity-DMCfAZsr.mjs.map +1 -1
- package/fesm2022/acorex-modules-organization-management.mjs +2 -2
- package/fesm2022/acorex-modules-platform-management.mjs +43 -19
- package/fesm2022/acorex-modules-platform-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-project-management.mjs +48 -38
- package/fesm2022/acorex-modules-project-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-report-management-report-create-root.component-DgouOz2M.mjs → acorex-modules-report-management-report-create-root.component-Cv88TDx7.mjs} +2 -2
- package/fesm2022/acorex-modules-report-management-report-create-root.component-Cv88TDx7.mjs.map +1 -0
- package/fesm2022/acorex-modules-report-management.mjs +1 -1
- package/fesm2022/acorex-modules-security-management.mjs +753 -217
- package/fesm2022/acorex-modules-security-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-workflow-management-acorex-modules-workflow-management-DnSdOSmj.mjs +213 -0
- package/fesm2022/acorex-modules-workflow-management-acorex-modules-workflow-management-DnSdOSmj.mjs.map +1 -0
- package/fesm2022/{acorex-modules-workflow-management-task-board.page-BoG_tFGn.mjs → acorex-modules-workflow-management-task-board.page-Bzu4j4VW.mjs} +21 -20
- package/fesm2022/acorex-modules-workflow-management-task-board.page-Bzu4j4VW.mjs.map +1 -0
- package/fesm2022/acorex-modules-workflow-management.mjs +1 -143
- package/fesm2022/acorex-modules-workflow-management.mjs.map +1 -1
- package/notification-management/index.d.ts +69 -59
- package/package.json +9 -9
- package/security-management/index.d.ts +13 -4
- package/workflow-management/index.d.ts +11 -2
- package/fesm2022/acorex-modules-auth-acorex-modules-auth-y6rICHrT.mjs.map +0 -1
- package/fesm2022/acorex-modules-auth-app-chooser.component-Cpy0VN6n.mjs.map +0 -1
- package/fesm2022/acorex-modules-auth-password.component-DLCb0_6e.mjs +0 -134
- package/fesm2022/acorex-modules-auth-password.component-DLCb0_6e.mjs.map +0 -1
- package/fesm2022/acorex-modules-auth-tenant-chooser.component-B1aE-TOD.mjs.map +0 -1
- package/fesm2022/acorex-modules-common-acorex-modules-common-DQESb8jf.mjs.map +0 -1
- package/fesm2022/acorex-modules-document-management-acorex-modules-document-management-B4Jd-KGV.mjs.map +0 -1
- package/fesm2022/acorex-modules-document-management-create-folder-dialog.component-12aUAucS.mjs.map +0 -1
- package/fesm2022/acorex-modules-document-management-link-dialog.component-CSEIhT4P.mjs.map +0 -1
- package/fesm2022/acorex-modules-document-management-meta-choose-popup.component-DYJN-4Pe.mjs.map +0 -1
- package/fesm2022/acorex-modules-document-management-share-dialog.component-CBrf7hjZ.mjs.map +0 -1
- package/fesm2022/acorex-modules-document-management-share-email-dialog.component-D3WcHAOf.mjs.map +0 -1
- package/fesm2022/acorex-modules-organization-management-add-item.component-DsDk5cyO.mjs.map +0 -1
- package/fesm2022/acorex-modules-report-management-report-create-root.component-DgouOz2M.mjs.map +0 -1
- package/fesm2022/acorex-modules-workflow-management-task-board.page-BoG_tFGn.mjs.map +0 -1
|
@@ -1,15 +1,18 @@
|
|
|
1
|
-
import { AXPUnauthorizedError, AXPUnauthenticatedError, AXPSessionService, AXPAuthGuard } from '@acorex/platform/auth';
|
|
1
|
+
import { AXPUnauthorizedError, AXPUnauthenticatedError, AXPSessionService, AXPAuthStrategyRegistryService, AXPAuthGuard } from '@acorex/platform/auth';
|
|
2
2
|
import { AXPLayoutThemeService } from '@acorex/platform/themes/shared';
|
|
3
|
+
import * as i1$3 from '@angular/common/http';
|
|
3
4
|
import { HttpErrorResponse } from '@angular/common/http';
|
|
4
5
|
import * as i0 from '@angular/core';
|
|
5
6
|
import { inject, isDevMode, Injectable, InjectionToken, Component, ViewChild, ViewEncapsulation, ChangeDetectionStrategy, signal, NgModule, Injector } from '@angular/core';
|
|
6
|
-
import * as i1$
|
|
7
|
+
import * as i1$2 from '@angular/router';
|
|
7
8
|
import { Router, RouterModule, ROUTES } from '@angular/router';
|
|
8
|
-
import * as i1$
|
|
9
|
-
import { AXPHomePageService, AXPDataProvider, AXPCommonModule, AXP_MENU_PROVIDER, AXP_SETTING_DEFINITION_PROVIDER } from '@acorex/platform/common';
|
|
10
|
-
import * as
|
|
9
|
+
import * as i1$5 from '@acorex/platform/common';
|
|
10
|
+
import { AXPHomePageService, AXPDataProvider, AXPSettingService, AXPCommonModule, AXP_MENU_PROVIDER, AXP_SETTING_DEFINITION_PROVIDER } from '@acorex/platform/common';
|
|
11
|
+
import * as i1$1 from '@angular/common';
|
|
11
12
|
import { CommonModule, AsyncPipe } from '@angular/common';
|
|
12
|
-
import { firstValueFrom, of, first, Subject, timer } from 'rxjs';
|
|
13
|
+
import { firstValueFrom, of, first, Subject, timer, map } from 'rxjs';
|
|
14
|
+
import * as i1$4 from '@acorex/platform/layout/components';
|
|
15
|
+
import { AXPUserAvatarComponent, AXPComponentSlotModule } from '@acorex/platform/layout/components';
|
|
13
16
|
import * as i2$1 from '@acorex/components/button';
|
|
14
17
|
import { AXButtonModule } from '@acorex/components/button';
|
|
15
18
|
import * as i1 from '@acorex/components/decorators';
|
|
@@ -24,11 +27,11 @@ import { AXPopupService } from '@acorex/components/popup';
|
|
|
24
27
|
import { AXPlatform } from '@acorex/core/platform';
|
|
25
28
|
import * as i6 from '@acorex/core/translation';
|
|
26
29
|
import { AXTranslationService, AXTranslationModule } from '@acorex/core/translation';
|
|
27
|
-
import * as i1$2 from '@acorex/platform/layout/components';
|
|
28
|
-
import { AXPUserAvatarComponent, AXPComponentSlotModule } from '@acorex/platform/layout/components';
|
|
29
30
|
import { AXChipsModule } from '@acorex/components/chips';
|
|
30
31
|
import { AXTagModule } from '@acorex/components/tag';
|
|
32
|
+
import { AXPPlatformScope } from '@acorex/platform/core';
|
|
31
33
|
import { startWith, switchMap, tap } from 'rxjs/operators';
|
|
34
|
+
import { AXMEntityCrudServiceImpl } from '@acorex/platform/layout/entity';
|
|
32
35
|
|
|
33
36
|
class AXMAuthErrorHandler {
|
|
34
37
|
constructor() {
|
|
@@ -88,6 +91,8 @@ const AXM_AUTH_CONFIG_TOKEN = new InjectionToken('app-module-auth-config', {
|
|
|
88
91
|
});
|
|
89
92
|
const AXMDefaultAuthConfigs = {
|
|
90
93
|
type: AXMAuthenticationTypes.UsernamePassword,
|
|
94
|
+
// defaultStrategyName:'oidc'
|
|
95
|
+
defaultStrategyName: 'user-pass'
|
|
91
96
|
};
|
|
92
97
|
function configAuthModule(config = AXMDefaultAuthConfigs) {
|
|
93
98
|
return { ...AXMDefaultAuthConfigs, ...config };
|
|
@@ -104,18 +109,22 @@ const routes = [
|
|
|
104
109
|
},
|
|
105
110
|
{
|
|
106
111
|
path: '',
|
|
107
|
-
loadComponent: () => import('./acorex-modules-auth-master.layout-
|
|
108
|
-
loadChildren: () => import('./acorex-modules-auth-login.module-
|
|
112
|
+
loadComponent: () => import('./acorex-modules-auth-master.layout-eX5-7AeO.mjs').then((c) => c.AXPAuthMasterLayoutComponent),
|
|
113
|
+
loadChildren: () => import('./acorex-modules-auth-login.module-CmMM4TpQ.mjs').then((c) => c.AXPSignInModule),
|
|
109
114
|
},
|
|
110
115
|
{
|
|
111
116
|
path: '',
|
|
112
|
-
loadComponent: () => import('./acorex-modules-auth-master.layout-
|
|
113
|
-
loadChildren: () => import('./acorex-modules-auth-two-factor.module-
|
|
117
|
+
loadComponent: () => import('./acorex-modules-auth-master.layout-eX5-7AeO.mjs').then((c) => c.AXPAuthMasterLayoutComponent),
|
|
118
|
+
loadChildren: () => import('./acorex-modules-auth-two-factor.module-YV9pDOnB.mjs').then((c) => c.AXPTwoFactorModule),
|
|
114
119
|
},
|
|
115
120
|
{
|
|
116
121
|
path: '',
|
|
117
|
-
loadComponent: () => import('./acorex-modules-auth-master.layout-
|
|
118
|
-
loadChildren: () => import('./acorex-modules-auth-routes-
|
|
122
|
+
loadComponent: () => import('./acorex-modules-auth-master.layout-eX5-7AeO.mjs').then((c) => c.AXPAuthMasterLayoutComponent),
|
|
123
|
+
loadChildren: () => import('./acorex-modules-auth-routes-CMdsDZud.mjs').then((c) => c),
|
|
124
|
+
},
|
|
125
|
+
{
|
|
126
|
+
path: 'axp-oauth-callback',
|
|
127
|
+
loadComponent: () => import('./acorex-modules-auth-oauth-callback.component-C9s-5c7F.mjs').then((c) => c.AXPOAuthCallbackComponent),
|
|
119
128
|
},
|
|
120
129
|
{
|
|
121
130
|
path: 'account',
|
|
@@ -123,6 +132,11 @@ const routes = [
|
|
|
123
132
|
loadChildren: () => Promise.resolve().then(function () { return account_module; }).then((c) => c.AXPAccountModule),
|
|
124
133
|
},
|
|
125
134
|
// {
|
|
135
|
+
// path: 'signincallback',
|
|
136
|
+
// loadComponent: () =>
|
|
137
|
+
// import('./pages/callback/oauth-callback.component').then((c) => c.AXPOAuthCallbackComponent),
|
|
138
|
+
// },
|
|
139
|
+
// {
|
|
126
140
|
// path: '',
|
|
127
141
|
// loadComponent: () =>
|
|
128
142
|
// import('./shared/layouts/master/master.layout').then((c) => c.AXPAuthMasterLayoutComponent),
|
|
@@ -159,16 +173,30 @@ class AXPAppChooserListComponent {
|
|
|
159
173
|
this.router = inject(Router);
|
|
160
174
|
this.sessionService = inject(AXPSessionService);
|
|
161
175
|
this.homePageService = inject(AXPHomePageService);
|
|
176
|
+
this.authStrategyRegistry = inject(AXPAuthStrategyRegistryService);
|
|
177
|
+
this.strategyName = this.sessionService.getSessionData()?.strategy;
|
|
178
|
+
this.strategy = this.authStrategyRegistry.get(this.strategyName);
|
|
162
179
|
this.selectedApplication = null;
|
|
163
180
|
this.applications$ = this.sessionService.applications$;
|
|
164
181
|
}
|
|
165
182
|
async chooseApplication(item) {
|
|
166
183
|
this.selectedApplication = item;
|
|
167
|
-
|
|
168
|
-
|
|
184
|
+
const tenantId = this.sessionService.tenant?.id || '';
|
|
185
|
+
if (!tenantId) {
|
|
186
|
+
throw new Error('Tenant ID is missing. Cannot choose application.');
|
|
187
|
+
}
|
|
188
|
+
if (this.strategy && typeof this.strategy.updateToken === 'function') {
|
|
189
|
+
const updateContext = {
|
|
190
|
+
application: item,
|
|
191
|
+
user: this.sessionService.user,
|
|
192
|
+
tenant: this.sessionService.tenant,
|
|
193
|
+
};
|
|
194
|
+
await this.sessionService.updateToken(updateContext);
|
|
195
|
+
}
|
|
196
|
+
return await this.homePageService.navigateTo();
|
|
169
197
|
}
|
|
170
198
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: AXPAppChooserListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
171
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.3", type: AXPAppChooserListComponent, isStandalone: true, selector: "axp-app-chooser-list", ngImport: i0, template: "<div class=\" ax-w-full ax-overflow-auto ax-max-h-[300px] ax-pe-2\">\n @for(application of (applications$ | async); track $index){\n <div class=\"ax-flex ax-gap-2 ax-justify-between ax-border-b last:ax-border-b-0 ax-py-3 ax-items-start ax-cursor-pointer\"\n (click)=\"chooseApplication(application)\">\n <div class=\"ax-flex ax-flex-1 ax-gap-2 ax-items-center ax-justify-center ax-font-medium\">\n <div\n class=\"ax-w-12 ax-h-12 ax-flex ax-justify-center ax-items-center ax-rounded-full ax-bg-neutral-100 ax-m-auto\">\n <ax-icon class=\"fa-solid fa-computer ax-text-neutral-500 ax-text-lg\"> </ax-icon>\n <!-- TODO: logo instead of application icon -->\n <!-- <axp-logo [source]=\"application.logo\" [attr.alt]=\"application.title\"\n class=\"!ax-flex ax-items-center ax-justify-center !ax-text-sm ax-mx-auto ax-w-10 ax-h-10 ax-bg-neutral-200 ax-rounded-full\"></axp-logo> -->\n </div>\n <span class=\"ax-flex-1 ax-text-start md:ax-text-base ax-text-sm\">{{ application.title }}</span>\n <span class=\"ax-text-gray-500 md:ax-text-sm ax-text-xs\">{{application.editionName}}</span>\n @if(application.name===selectedApplication?.name){\n <ax-loading></ax-loading>\n }@else {\n <ax-icon class=\"fa-solid fa-chevron-right ax-text-neutral-400\"> </ax-icon>\n }\n </div>\n </div>\n }\n</div>", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i1.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "ngmodule", type: AXLoadingModule }, { kind: "component", type: i2.AXLoadingComponent, selector: "ax-loading", inputs: ["visible", "type", "context"], outputs: ["visibleChange"] }, { kind: "pipe", type:
|
|
199
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.3", type: AXPAppChooserListComponent, isStandalone: true, selector: "axp-app-chooser-list", ngImport: i0, template: "<div class=\" ax-w-full ax-overflow-auto ax-max-h-[300px] ax-pe-2\">\n @for(application of (applications$ | async); track $index){\n <div class=\"ax-flex ax-gap-2 ax-justify-between ax-border-b last:ax-border-b-0 ax-py-3 ax-items-start ax-cursor-pointer\"\n (click)=\"chooseApplication(application)\">\n <div class=\"ax-flex ax-flex-1 ax-gap-2 ax-items-center ax-justify-center ax-font-medium\">\n <div\n class=\"ax-w-12 ax-h-12 ax-flex ax-justify-center ax-items-center ax-rounded-full ax-bg-neutral-100 ax-m-auto\">\n <ax-icon class=\"fa-solid fa-computer ax-text-neutral-500 ax-text-lg\"> </ax-icon>\n <!-- TODO: logo instead of application icon -->\n <!-- <axp-logo [source]=\"application.logo\" [attr.alt]=\"application.title\"\n class=\"!ax-flex ax-items-center ax-justify-center !ax-text-sm ax-mx-auto ax-w-10 ax-h-10 ax-bg-neutral-200 ax-rounded-full\"></axp-logo> -->\n </div>\n <span class=\"ax-flex-1 ax-text-start md:ax-text-base ax-text-sm\">{{ application.title }}</span>\n <span class=\"ax-text-gray-500 md:ax-text-sm ax-text-xs\">{{application.editionName}}</span>\n @if(application.name===selectedApplication?.name){\n <ax-loading></ax-loading>\n }@else {\n <ax-icon class=\"fa-solid fa-chevron-right ax-text-neutral-400\"> </ax-icon>\n }\n </div>\n </div>\n }\n</div>", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i1.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "ngmodule", type: AXLoadingModule }, { kind: "component", type: i2.AXLoadingComponent, selector: "ax-loading", inputs: ["visible", "type", "context"], outputs: ["visibleChange"] }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }] }); }
|
|
172
200
|
}
|
|
173
201
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: AXPAppChooserListComponent, decorators: [{
|
|
174
202
|
type: Component,
|
|
@@ -179,16 +207,26 @@ class AXMAppChooserSlotComponent {
|
|
|
179
207
|
constructor() {
|
|
180
208
|
this.sessionService = inject(AXPSessionService);
|
|
181
209
|
this.homePageService = inject(AXPHomePageService);
|
|
210
|
+
this.authStrategyRegistry = inject(AXPAuthStrategyRegistryService);
|
|
211
|
+
this.strategyName = this.sessionService.getSessionData()?.strategy;
|
|
212
|
+
this.strategy = this.authStrategyRegistry.get(this.strategyName);
|
|
182
213
|
this.tenant$ = this.sessionService.tenant$;
|
|
183
214
|
this.application$ = this.sessionService.application$;
|
|
184
215
|
this.applications$ = of([]);
|
|
185
216
|
}
|
|
186
217
|
async chooseApplication(item) {
|
|
187
|
-
|
|
188
|
-
|
|
218
|
+
const tenantId = this.sessionService.tenant?.id || '';
|
|
219
|
+
if (this.strategy && typeof this.strategy.updateToken === 'function') {
|
|
220
|
+
const updateContext = {
|
|
221
|
+
tenant: this.sessionService.tenant,
|
|
222
|
+
user: this.sessionService.user,
|
|
223
|
+
application: item,
|
|
224
|
+
};
|
|
225
|
+
await this.sessionService.updateToken(updateContext);
|
|
226
|
+
}
|
|
189
227
|
}
|
|
190
228
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: AXMAppChooserSlotComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
191
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.3", type: AXMAppChooserSlotComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: "@if(((applications$ | async)?.length ?? 0) > 1) {\n<ax-button color=\"default\" look=\"blank\" #appChooser>\n <ax-icon>\n <i class=\"fa-solid fa-grid-2 ax-text-slate-400 dark:ax-text-slate-200\"></i>\n </ax-icon>\n</ax-button>\n<ax-popover [target]=\"appChooser\" [openOn]=\"'toggle'\" [closeOn]=\"'clickOut'\" [adaptivityEnabled]=\"true\">\n <div class=\"ax-bg-lightest ax-border ax-overflow-hidden ax-rounded-md ax-shadow-md ax-w-full ax-min-w-64 ax-p-3\">\n <axp-app-chooser-list></axp-app-chooser-list>\n </div>\n</ax-popover>\n}\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i2$1.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXPopoverModule }, { kind: "component", type: i2$2.AXPopoverComponent, selector: "ax-popover", inputs: ["width", "disabled", "offsetX", "offsetY", "target", "placement", "content", "openOn", "closeOn", "hasBackdrop", "openAfter", "closeAfter", "backdropClass", "panelClass", "adaptivityEnabled"], outputs: ["onOpened", "onClosed"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i1.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: AXPAppChooserListComponent, selector: "axp-app-chooser-list" }, { kind: "pipe", type:
|
|
229
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.3", type: AXMAppChooserSlotComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: "@if(((applications$ | async)?.length ?? 0) > 1) {\n<ax-button color=\"default\" look=\"blank\" #appChooser>\n <ax-icon>\n <i class=\"fa-solid fa-grid-2 ax-text-slate-400 dark:ax-text-slate-200\"></i>\n </ax-icon>\n</ax-button>\n<ax-popover [target]=\"appChooser\" [openOn]=\"'toggle'\" [closeOn]=\"'clickOut'\" [adaptivityEnabled]=\"true\">\n <div class=\"ax-bg-lightest ax-border ax-overflow-hidden ax-rounded-md ax-shadow-md ax-w-full ax-min-w-64 ax-p-3\">\n <axp-app-chooser-list></axp-app-chooser-list>\n </div>\n</ax-popover>\n}\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i2$1.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXPopoverModule }, { kind: "component", type: i2$2.AXPopoverComponent, selector: "ax-popover", inputs: ["width", "disabled", "offsetX", "offsetY", "target", "placement", "content", "openOn", "closeOn", "hasBackdrop", "openAfter", "closeAfter", "backdropClass", "panelClass", "adaptivityEnabled"], outputs: ["onOpened", "onClosed"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i1.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: AXPAppChooserListComponent, selector: "axp-app-chooser-list" }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }] }); }
|
|
192
230
|
}
|
|
193
231
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: AXMAppChooserSlotComponent, decorators: [{
|
|
194
232
|
type: Component,
|
|
@@ -206,7 +244,7 @@ class AXPTenantChooserDropdownComponent {
|
|
|
206
244
|
this.router.navigate(['/auth/account/tenant-chooser']);
|
|
207
245
|
}
|
|
208
246
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: AXPTenantChooserDropdownComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
209
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.3", type: AXPTenantChooserDropdownComponent, isStandalone: true, selector: "axp-tenant-chooser-dropdown", ngImport: i0, template: "<!-- <ng-container *ngIf=\"tenants$ | async as tenants\">\n@if(tenants.length>1){\n <div (click)=\"tenantChooser()\"\n class=\"ax-flex ax-items-center ax-border ax-rounded-full ax-px-4 ax-py-1 ax-gap-2 ax-cursor-pointer\">\n <ax-icon class=\"fa-solid fa-building ax-text-neutral-500 ax-text-xs\"></ax-icon>\n <p class=\"ax-text-neutral-500 ax-text-sm ax-font-medium\">\n {{ tenant?.title }}\n </p>\n <ax-icon class=\"fa-regular fa-chevron-down ax-text-neutral-400\"></ax-icon>\n </div>\n }@else {\n <div class=\"ax-flex ax-items-center ax-border ax-rounded-full ax-px-4 ax-py-1 ax-gap-2 ax-cursor-pointer\">\n <ax-icon class=\"fa-solid fa-building ax-text-neutral-500\"></ax-icon>\n <p class=\"ax-text-neutral-500 ax-text-sm ax-font-medium\">\n {{ tenant?.title }}\n </p>\n </div>\n}\n</ng-container> -->\n\n@if (tenants$ | async; as tenants) {\n <ax-button [text]=\"tenant?.title ?? ''\" class=\"ax-xs\" look=\"blank\">\n @if(tenants.length > 1){\n <ax-suffix>\n <ax-icon class=\"fa-solid fa-caret-down\"></ax-icon>\n </ax-suffix>\n }\n </ax-button>\n}", dependencies: [{ kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i1.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i1.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay" }, { kind: "ngmodule", type: AXChipsModule }, { kind: "ngmodule", type: AXTagModule }, { kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i2$1.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "pipe", type:
|
|
247
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.3", type: AXPTenantChooserDropdownComponent, isStandalone: true, selector: "axp-tenant-chooser-dropdown", ngImport: i0, template: "<!-- <ng-container *ngIf=\"tenants$ | async as tenants\">\n@if(tenants.length>1){\n <div (click)=\"tenantChooser()\"\n class=\"ax-flex ax-items-center ax-border ax-rounded-full ax-px-4 ax-py-1 ax-gap-2 ax-cursor-pointer\">\n <ax-icon class=\"fa-solid fa-building ax-text-neutral-500 ax-text-xs\"></ax-icon>\n <p class=\"ax-text-neutral-500 ax-text-sm ax-font-medium\">\n {{ tenant?.title }}\n </p>\n <ax-icon class=\"fa-regular fa-chevron-down ax-text-neutral-400\"></ax-icon>\n </div>\n }@else {\n <div class=\"ax-flex ax-items-center ax-border ax-rounded-full ax-px-4 ax-py-1 ax-gap-2 ax-cursor-pointer\">\n <ax-icon class=\"fa-solid fa-building ax-text-neutral-500\"></ax-icon>\n <p class=\"ax-text-neutral-500 ax-text-sm ax-font-medium\">\n {{ tenant?.title }}\n </p>\n </div>\n}\n</ng-container> -->\n\n@if (tenants$ | async; as tenants) {\n <ax-button [text]=\"tenant?.title ?? ''\" class=\"ax-xs\" look=\"blank\">\n @if(tenants.length > 1){\n <ax-suffix>\n <ax-icon class=\"fa-solid fa-caret-down\"></ax-icon>\n </ax-suffix>\n }\n </ax-button>\n}", dependencies: [{ kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i1.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i1.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay" }, { kind: "ngmodule", type: AXChipsModule }, { kind: "ngmodule", type: AXTagModule }, { kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i2$1.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }] }); }
|
|
210
248
|
}
|
|
211
249
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: AXPTenantChooserDropdownComponent, decorators: [{
|
|
212
250
|
type: Component,
|
|
@@ -239,12 +277,21 @@ class AXMAuthProfileSlotComponent {
|
|
|
239
277
|
handleSignIn() {
|
|
240
278
|
this.router.navigate(['/auth/login']);
|
|
241
279
|
}
|
|
280
|
+
async openUserSession() {
|
|
281
|
+
const com = await import('./acorex-modules-auth-user-sessions.component-KI9dYs78.mjs').then((c) => c.AXMUserSessionsComponent);
|
|
282
|
+
this.popupService.open(com, {
|
|
283
|
+
size: this.platform.is('Mobile') || this.platform.is('SM') ? 'full' : 'sm',
|
|
284
|
+
title: await this.translateService.translateAsync('profile.sessions.title', {
|
|
285
|
+
scope: 'auth',
|
|
286
|
+
}),
|
|
287
|
+
});
|
|
288
|
+
}
|
|
242
289
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: AXMAuthProfileSlotComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
243
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.3", type: AXMAuthProfileSlotComponent, isStandalone: true, selector: "ng-component", viewQueries: [{ propertyName: "profilePopover", first: true, predicate: ["profilePopover"], descendants: true }], ngImport: i0, template: "@if
|
|
290
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.3", type: AXMAuthProfileSlotComponent, isStandalone: true, selector: "ng-component", viewQueries: [{ propertyName: "profilePopover", first: true, predicate: ["profilePopover"], descendants: true }], ngImport: i0, template: "@if((isAuthenticated$ | async)) {\n<div class=\"ax-size-fit\">\n <div #avatar>\n <axp-user-avatar [size]=\"36\" [userId]=\"(user$ | async)?.id!\"></axp-user-avatar>\n </div>\n\n <ax-popover [target]=\"avatar\" [openOn]=\"'toggle'\" [closeOn]=\"'clickOut'\" #p>\n <div class=\"ax-bg-lightest ax-border ax-border-lightest ax-rounded-md ax-shadow-md ax-w-full ax-min-w-64\">\n <div class=\"ax-flex ax-flex-col ax-items-center ax-p-4 ax-border-b\">\n <axp-user-avatar [size]=\"64\" [userId]=\"(user$ | async)?.id!\"></axp-user-avatar>\n\n <div class=\"ax-flex ax-flex-col ax-items-center ax-justify-center ax-mt-2\">\n <div class=\"ax-text-base ax-font-bold\">{{ (user$ | async)?.title }}</div>\n <axp-tenant-chooser-dropdown></axp-tenant-chooser-dropdown>\n </div>\n </div>\n <div class=\"axp-profile-slot-menus\">\n <ul>\n <li>\n <a (click)=\"editProfile()\">\n <i class=\"fa-light fa-user\"></i>\n <span>{{ 'profile.edit' | translate : { scope: 'auth' } | async }}</span>\n </a>\n </li>\n <li>\n <a (click)=\"p.close()\" [routerLink]=\"['/', appName(), 'settings', 'user']\">\n <i class=\"fa-light fa-gear\"></i>\n <span>{{ 'profile.settings' | translate : { scope: 'auth' } | async }}</span>\n </a>\n </li>\n <li>\n <a (click)=\"openUserSession()\">\n <i class=\"fa-light fa-mobile\"></i>\n <span>{{ 'profile.sessions' | translate : { scope: 'auth' } | async }}</span>\n </a>\n </li>\n <li class=\"ax-text-danger-500\">\n <a (click)=\"logOut()\">\n <i class=\"fa-light fa-arrow-right-from-bracket\"></i>\n <span>{{ 'profile.logout' | translate : { scope: 'auth' } | async }}</span>\n </a>\n </li>\n </ul>\n </div>\n </div>\n </ax-popover>\n</div>\n\n} @else {\n<ax-button color=\"default\" look=\"blank\" text=\"Sign Up / Sign In\" (click)=\"handleSignIn()\">\n <ax-icon>\n <i class=\"fa-solid fa-user ax-text-slate-400 dark:ax-text-slate-200\"></i>\n </ax-icon>\n</ax-button>\n}\n", styles: [".axp-profile-slot-menus ul{margin-top:.5rem;border-bottom-width:1px;--tw-border-opacity: 1;border-color:rgba(var(--ax-sys-color-border-lightest-surface),var(--tw-border-opacity, 1));padding-left:.5rem;padding-right:.5rem}.axp-profile-slot-menus ul:last-child{border-width:0px}.axp-profile-slot-menus ul li{display:flex;cursor:pointer;border-radius:.375rem}.axp-profile-slot-menus ul li:last-child{margin-bottom:.5rem}.axp-profile-slot-menus ul li:hover{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-dark-surface),var(--tw-bg-opacity, 1))}.axp-profile-slot-menus ul li i{margin-inline-end:.75rem;display:grid;height:1.5rem;width:1.5rem;place-items:center;font-size:1.25rem;line-height:1.75rem}.axp-profile-slot-menus ul li a{display:flex;height:100%;width:100%;align-items:center;padding:.5rem}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i1$2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type:
|
|
244
291
|
//
|
|
245
292
|
AXImageModule }, { kind: "ngmodule", type: AXAvatarModule }, { kind: "ngmodule", type: AXPopoverModule }, { kind: "component", type: i2$2.AXPopoverComponent, selector: "ax-popover", inputs: ["width", "disabled", "offsetX", "offsetY", "target", "placement", "content", "openOn", "closeOn", "hasBackdrop", "openAfter", "closeAfter", "backdropClass", "panelClass", "adaptivityEnabled"], outputs: ["onOpened", "onClosed"] }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i2$1.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i1.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "ngmodule", type: AXLoadingModule }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "component", type: AXPUserAvatarComponent, selector: "axp-user-avatar", inputs: ["size", "userId"] }, { kind: "component", type:
|
|
246
293
|
//
|
|
247
|
-
AXPTenantChooserDropdownComponent, selector: "axp-tenant-chooser-dropdown" }, { kind: "pipe", type:
|
|
294
|
+
AXPTenantChooserDropdownComponent, selector: "axp-tenant-chooser-dropdown" }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }, { kind: "pipe", type: i6.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
248
295
|
}
|
|
249
296
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: AXMAuthProfileSlotComponent, decorators: [{
|
|
250
297
|
type: Component,
|
|
@@ -262,7 +309,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImpor
|
|
|
262
309
|
AXPUserAvatarComponent,
|
|
263
310
|
//
|
|
264
311
|
AXPTenantChooserDropdownComponent,
|
|
265
|
-
], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "@if
|
|
312
|
+
], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "@if((isAuthenticated$ | async)) {\n<div class=\"ax-size-fit\">\n <div #avatar>\n <axp-user-avatar [size]=\"36\" [userId]=\"(user$ | async)?.id!\"></axp-user-avatar>\n </div>\n\n <ax-popover [target]=\"avatar\" [openOn]=\"'toggle'\" [closeOn]=\"'clickOut'\" #p>\n <div class=\"ax-bg-lightest ax-border ax-border-lightest ax-rounded-md ax-shadow-md ax-w-full ax-min-w-64\">\n <div class=\"ax-flex ax-flex-col ax-items-center ax-p-4 ax-border-b\">\n <axp-user-avatar [size]=\"64\" [userId]=\"(user$ | async)?.id!\"></axp-user-avatar>\n\n <div class=\"ax-flex ax-flex-col ax-items-center ax-justify-center ax-mt-2\">\n <div class=\"ax-text-base ax-font-bold\">{{ (user$ | async)?.title }}</div>\n <axp-tenant-chooser-dropdown></axp-tenant-chooser-dropdown>\n </div>\n </div>\n <div class=\"axp-profile-slot-menus\">\n <ul>\n <li>\n <a (click)=\"editProfile()\">\n <i class=\"fa-light fa-user\"></i>\n <span>{{ 'profile.edit' | translate : { scope: 'auth' } | async }}</span>\n </a>\n </li>\n <li>\n <a (click)=\"p.close()\" [routerLink]=\"['/', appName(), 'settings', 'user']\">\n <i class=\"fa-light fa-gear\"></i>\n <span>{{ 'profile.settings' | translate : { scope: 'auth' } | async }}</span>\n </a>\n </li>\n <li>\n <a (click)=\"openUserSession()\">\n <i class=\"fa-light fa-mobile\"></i>\n <span>{{ 'profile.sessions' | translate : { scope: 'auth' } | async }}</span>\n </a>\n </li>\n <li class=\"ax-text-danger-500\">\n <a (click)=\"logOut()\">\n <i class=\"fa-light fa-arrow-right-from-bracket\"></i>\n <span>{{ 'profile.logout' | translate : { scope: 'auth' } | async }}</span>\n </a>\n </li>\n </ul>\n </div>\n </div>\n </ax-popover>\n</div>\n\n} @else {\n<ax-button color=\"default\" look=\"blank\" text=\"Sign Up / Sign In\" (click)=\"handleSignIn()\">\n <ax-icon>\n <i class=\"fa-solid fa-user ax-text-slate-400 dark:ax-text-slate-200\"></i>\n </ax-icon>\n</ax-button>\n}\n", styles: [".axp-profile-slot-menus ul{margin-top:.5rem;border-bottom-width:1px;--tw-border-opacity: 1;border-color:rgba(var(--ax-sys-color-border-lightest-surface),var(--tw-border-opacity, 1));padding-left:.5rem;padding-right:.5rem}.axp-profile-slot-menus ul:last-child{border-width:0px}.axp-profile-slot-menus ul li{display:flex;cursor:pointer;border-radius:.375rem}.axp-profile-slot-menus ul li:last-child{margin-bottom:.5rem}.axp-profile-slot-menus ul li:hover{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-dark-surface),var(--tw-bg-opacity, 1))}.axp-profile-slot-menus ul li i{margin-inline-end:.75rem;display:grid;height:1.5rem;width:1.5rem;place-items:center;font-size:1.25rem;line-height:1.75rem}.axp-profile-slot-menus ul li a{display:flex;height:100%;width:100%;align-items:center;padding:.5rem}\n"] }]
|
|
266
313
|
}], propDecorators: { profilePopover: [{
|
|
267
314
|
type: ViewChild,
|
|
268
315
|
args: ['profilePopover']
|
|
@@ -356,44 +403,175 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImpor
|
|
|
356
403
|
args: ['profilePopover']
|
|
357
404
|
}] } });
|
|
358
405
|
|
|
406
|
+
class AXPIdleService {
|
|
407
|
+
constructor() {
|
|
408
|
+
this.configs = inject(AXM_AUTH_CONFIG_TOKEN);
|
|
409
|
+
this.idle$ = new Subject();
|
|
410
|
+
this.timeoutDuration = this.configs.idleTimeout ?? 10 * 60 * 1000;
|
|
411
|
+
this.userActivity$ = new Subject();
|
|
412
|
+
this.idleSubscription = null;
|
|
413
|
+
this.setupActivityListeners();
|
|
414
|
+
}
|
|
415
|
+
get idleState$() {
|
|
416
|
+
return this.idle$.asObservable();
|
|
417
|
+
}
|
|
418
|
+
setupActivityListeners() {
|
|
419
|
+
const activityEvents = ['mousemove', 'keydown', 'wheel'];
|
|
420
|
+
activityEvents.forEach(event => document.addEventListener(event, () => this.resetTimer()));
|
|
421
|
+
}
|
|
422
|
+
startWatching() {
|
|
423
|
+
this.stopWatching(); // Stop any existing subscription
|
|
424
|
+
this.idleSubscription = this.userActivity$.pipe(startWith(null), switchMap(() => timer(this.timeoutDuration)), tap(() => this.idle$.next())).subscribe();
|
|
425
|
+
}
|
|
426
|
+
resetTimer() {
|
|
427
|
+
this.userActivity$.next();
|
|
428
|
+
}
|
|
429
|
+
stopWatching() {
|
|
430
|
+
if (this.idleSubscription) {
|
|
431
|
+
this.idleSubscription.unsubscribe();
|
|
432
|
+
this.idleSubscription = null;
|
|
433
|
+
}
|
|
434
|
+
}
|
|
435
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: AXPIdleService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
436
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: AXPIdleService, providedIn: 'root' }); }
|
|
437
|
+
}
|
|
438
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: AXPIdleService, decorators: [{
|
|
439
|
+
type: Injectable,
|
|
440
|
+
args: [{ providedIn: 'root' }]
|
|
441
|
+
}], ctorParameters: () => [] });
|
|
442
|
+
|
|
443
|
+
class AXMDeviceSessionsService extends AXMEntityCrudServiceImpl {
|
|
444
|
+
}
|
|
445
|
+
class AXMDeviceSessionsServiceImpl extends AXMDeviceSessionsService {
|
|
446
|
+
// private aXMAuthConfigs: AXMAuthConfigs = inject(AXM_AUTH_CONFIG_TOKEN);
|
|
447
|
+
constructor(http) {
|
|
448
|
+
super('auth.deviceSessions'); // TODO: Update with correct RootConfig if needed
|
|
449
|
+
this.http = http;
|
|
450
|
+
}
|
|
451
|
+
terminate(id) {
|
|
452
|
+
throw new Error('Method not implemented.');
|
|
453
|
+
}
|
|
454
|
+
async terminateAllCurrentUserSessions() {
|
|
455
|
+
return (this.http
|
|
456
|
+
.post('' + '/api/security-management/device-sessions/Terminate-All', {})
|
|
457
|
+
.pipe(map((t) => (t === undefined ? false : t)))
|
|
458
|
+
.toPromise() ?? false);
|
|
459
|
+
}
|
|
460
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: AXMDeviceSessionsServiceImpl, deps: [{ token: i1$3.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
461
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: AXMDeviceSessionsServiceImpl }); }
|
|
462
|
+
}
|
|
463
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: AXMDeviceSessionsServiceImpl, decorators: [{
|
|
464
|
+
type: Injectable
|
|
465
|
+
}], ctorParameters: () => [{ type: i1$3.HttpClient }] });
|
|
466
|
+
|
|
467
|
+
class AXMUserDeviceSessionsService {
|
|
468
|
+
}
|
|
469
|
+
class AXMUserDeviceSessionsServiceImp extends AXMUserDeviceSessionsService {
|
|
470
|
+
constructor() {
|
|
471
|
+
super(); // Call the base class constructor (good practice)
|
|
472
|
+
this.sessionService = inject(AXPSessionService);
|
|
473
|
+
this.deviceSessionsService = inject(AXMDeviceSessionsService);
|
|
474
|
+
this.settingService = inject(AXPSettingService);
|
|
475
|
+
}
|
|
476
|
+
async getSessions() {
|
|
477
|
+
const userId = this.sessionService.user?.id;
|
|
478
|
+
if (!userId) {
|
|
479
|
+
return [];
|
|
480
|
+
}
|
|
481
|
+
const response = await this.deviceSessionsService.query();
|
|
482
|
+
const items = response.items.filter((item) => item.userId === userId && String(item.status).toLowerCase() === 'active' && !item.isActiveSession);
|
|
483
|
+
return items;
|
|
484
|
+
}
|
|
485
|
+
async getCurrentActiveSessions() {
|
|
486
|
+
const userId = this.sessionService.user?.id;
|
|
487
|
+
const response = await this.deviceSessionsService.query();
|
|
488
|
+
const activeSession = response.items.find((item) => item.userId === userId && String(item.status).toLowerCase() === 'active' && item.isActiveSession);
|
|
489
|
+
return activeSession;
|
|
490
|
+
}
|
|
491
|
+
async terminateSession(sessionId) {
|
|
492
|
+
await this.deviceSessionsService.updateOne(sessionId, { status: 'revoked' });
|
|
493
|
+
}
|
|
494
|
+
async terminateAllSession() {
|
|
495
|
+
await this.deviceSessionsService.terminateAllCurrentUserSessions();
|
|
496
|
+
}
|
|
497
|
+
async setTokenLifetimeMinutes(value) {
|
|
498
|
+
await this.settingService.scope(AXPPlatformScope.User).set('session-timeout', value);
|
|
499
|
+
let s2 = await this.settingService.scope(AXPPlatformScope.User).get('session-timeout');
|
|
500
|
+
}
|
|
501
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: AXMUserDeviceSessionsServiceImp, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
502
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: AXMUserDeviceSessionsServiceImp }); }
|
|
503
|
+
}
|
|
504
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: AXMUserDeviceSessionsServiceImp, decorators: [{
|
|
505
|
+
type: Injectable
|
|
506
|
+
}], ctorParameters: () => [] });
|
|
507
|
+
|
|
359
508
|
const canActivateTenantChooser = async (route, state) => {
|
|
360
509
|
const sessionService = inject(AXPSessionService);
|
|
510
|
+
const authStrategyRegistry = inject(AXPAuthStrategyRegistryService);
|
|
361
511
|
const router = inject(Router);
|
|
512
|
+
const strategyName = sessionService.getSessionData()?.strategy;
|
|
513
|
+
const strategy = authStrategyRegistry.get(strategyName);
|
|
362
514
|
const tenants = await firstValueFrom(sessionService.tenants$);
|
|
363
|
-
if (tenants.length
|
|
515
|
+
if (tenants.length === 0) {
|
|
516
|
+
window.alert('You do not have any tenant assigned to your account and cannot use the site. Please contact your administrator.');
|
|
364
517
|
return router.createUrlTree(['/auth/login']);
|
|
365
518
|
}
|
|
366
|
-
if (tenants.length
|
|
367
|
-
|
|
368
|
-
|
|
519
|
+
if (tenants.length === 1) {
|
|
520
|
+
if (strategy && typeof strategy.updateToken === 'function') {
|
|
521
|
+
const updateContext = {
|
|
522
|
+
user: sessionService.user,
|
|
523
|
+
tenant: tenants[0],
|
|
524
|
+
};
|
|
525
|
+
await sessionService.updateToken(updateContext);
|
|
526
|
+
return router.createUrlTree(['/auth/account/app-chooser']);
|
|
527
|
+
}
|
|
528
|
+
return false;
|
|
369
529
|
}
|
|
370
530
|
return true;
|
|
371
531
|
};
|
|
532
|
+
|
|
372
533
|
const canActivateAppChooser = async (route, state) => {
|
|
373
534
|
const sessionService = inject(AXPSessionService);
|
|
535
|
+
const authStrategyRegistry = inject(AXPAuthStrategyRegistryService);
|
|
374
536
|
const homePageService = inject(AXPHomePageService);
|
|
375
537
|
const router = inject(Router);
|
|
538
|
+
const strategyName = sessionService.getSessionData()?.strategy;
|
|
539
|
+
const strategy = authStrategyRegistry.get(strategyName);
|
|
376
540
|
const apps = await firstValueFrom(sessionService.applications$);
|
|
377
|
-
if (apps.length
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
541
|
+
if (apps.length === 0) {
|
|
542
|
+
await router.navigate(['/auth/login']);
|
|
543
|
+
return false;
|
|
544
|
+
}
|
|
545
|
+
if (apps.length === 1) {
|
|
546
|
+
const tenantId = sessionService.tenant?.id;
|
|
547
|
+
if (!tenantId) {
|
|
548
|
+
throw new Error('Tenant ID is missing. Please contact support.');
|
|
549
|
+
}
|
|
550
|
+
if (strategy && typeof strategy.updateToken === 'function') {
|
|
551
|
+
const updateContext = {
|
|
552
|
+
user: sessionService.user,
|
|
553
|
+
tenant: sessionService.tenant,
|
|
554
|
+
application: apps[0],
|
|
555
|
+
};
|
|
556
|
+
await sessionService.updateToken(updateContext);
|
|
557
|
+
return router.createUrlTree([homePageService.getCurrent().path]);
|
|
558
|
+
}
|
|
559
|
+
return false;
|
|
383
560
|
}
|
|
384
561
|
return true;
|
|
385
562
|
};
|
|
563
|
+
|
|
386
564
|
function routesFacory() {
|
|
387
565
|
let routes = [];
|
|
388
566
|
routes = [
|
|
389
567
|
{
|
|
390
568
|
path: 'tenant-chooser',
|
|
391
|
-
loadComponent: () => import('./acorex-modules-auth-tenant-chooser.component-
|
|
569
|
+
loadComponent: () => import('./acorex-modules-auth-tenant-chooser.component-BdK5T-8X.mjs').then((c) => c.AXPAuthTenantChooserComponent),
|
|
392
570
|
canActivate: [AXPAuthGuard, canActivateTenantChooser],
|
|
393
571
|
},
|
|
394
572
|
{
|
|
395
573
|
path: 'app-chooser',
|
|
396
|
-
loadComponent: () => import('./acorex-modules-auth-app-chooser.component-
|
|
574
|
+
loadComponent: () => import('./acorex-modules-auth-app-chooser.component-5FbgqbVo.mjs').then((c) => c.AXPAuthAppChooserComponent),
|
|
397
575
|
canActivate: [AXPAuthGuard, canActivateAppChooser],
|
|
398
576
|
},
|
|
399
577
|
];
|
|
@@ -401,17 +579,17 @@ function routesFacory() {
|
|
|
401
579
|
}
|
|
402
580
|
class AXPAccountModule {
|
|
403
581
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: AXPAccountModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
404
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.1.3", ngImport: i0, type: AXPAccountModule, imports: [RouterModule, i1$
|
|
582
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.1.3", ngImport: i0, type: AXPAccountModule, imports: [RouterModule, i1$4.AXPComponentSlotModule] }); }
|
|
405
583
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: AXPAccountModule, providers: [
|
|
406
584
|
{
|
|
407
585
|
provide: ROUTES,
|
|
408
586
|
multi: true,
|
|
409
587
|
useFactory: routesFacory,
|
|
410
588
|
},
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
589
|
+
{
|
|
590
|
+
provide: AXMUserDeviceSessionsService,
|
|
591
|
+
useClass: AXMUserDeviceSessionsServiceImp,
|
|
592
|
+
},
|
|
415
593
|
], imports: [RouterModule,
|
|
416
594
|
//
|
|
417
595
|
AXPComponentSlotModule.forChild({
|
|
@@ -472,10 +650,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImpor
|
|
|
472
650
|
multi: true,
|
|
473
651
|
useFactory: routesFacory,
|
|
474
652
|
},
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
653
|
+
{
|
|
654
|
+
provide: AXMUserDeviceSessionsService,
|
|
655
|
+
useClass: AXMUserDeviceSessionsServiceImp,
|
|
656
|
+
},
|
|
479
657
|
],
|
|
480
658
|
}]
|
|
481
659
|
}] });
|
|
@@ -487,7 +665,7 @@ var account_module = /*#__PURE__*/Object.freeze({
|
|
|
487
665
|
|
|
488
666
|
class AXMAuthModule {
|
|
489
667
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: AXMAuthModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
490
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.1.3", ngImport: i0, type: AXMAuthModule, imports: [CommonModule, i1$
|
|
668
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.1.3", ngImport: i0, type: AXMAuthModule, imports: [CommonModule, i1$5.AXPCommonModule, i1$2.RouterModule, AXPAccountModule] }); }
|
|
491
669
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: AXMAuthModule, providers: [
|
|
492
670
|
AXMAuthErrorHandler,
|
|
493
671
|
{
|
|
@@ -538,46 +716,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImpor
|
|
|
538
716
|
}]
|
|
539
717
|
}] });
|
|
540
718
|
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
this.idleSubscription = null;
|
|
548
|
-
this.setupActivityListeners();
|
|
549
|
-
}
|
|
550
|
-
get idleState$() {
|
|
551
|
-
return this.idle$.asObservable();
|
|
552
|
-
}
|
|
553
|
-
setupActivityListeners() {
|
|
554
|
-
const activityEvents = ['mousemove', 'keydown', 'wheel'];
|
|
555
|
-
activityEvents.forEach(event => document.addEventListener(event, () => this.resetTimer()));
|
|
556
|
-
}
|
|
557
|
-
startWatching() {
|
|
558
|
-
this.stopWatching(); // Stop any existing subscription
|
|
559
|
-
this.idleSubscription = this.userActivity$.pipe(startWith(null), switchMap(() => timer(this.timeoutDuration)), tap(() => this.idle$.next())).subscribe();
|
|
560
|
-
}
|
|
561
|
-
resetTimer() {
|
|
562
|
-
this.userActivity$.next();
|
|
563
|
-
}
|
|
564
|
-
stopWatching() {
|
|
565
|
-
if (this.idleSubscription) {
|
|
566
|
-
this.idleSubscription.unsubscribe();
|
|
567
|
-
this.idleSubscription = null;
|
|
568
|
-
}
|
|
569
|
-
}
|
|
570
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: AXPIdleService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
571
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: AXPIdleService, providedIn: 'root' }); }
|
|
572
|
-
}
|
|
573
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.3", ngImport: i0, type: AXPIdleService, decorators: [{
|
|
574
|
-
type: Injectable,
|
|
575
|
-
args: [{ providedIn: 'root' }]
|
|
576
|
-
}], ctorParameters: () => [] });
|
|
719
|
+
var AXMSessionStatusTypes;
|
|
720
|
+
(function (AXMSessionStatusTypes) {
|
|
721
|
+
AXMSessionStatusTypes["revoked"] = "revoked";
|
|
722
|
+
AXMSessionStatusTypes["expired"] = "expired";
|
|
723
|
+
AXMSessionStatusTypes["active"] = "active";
|
|
724
|
+
})(AXMSessionStatusTypes || (AXMSessionStatusTypes = {}));
|
|
577
725
|
|
|
578
726
|
/**
|
|
579
727
|
* Generated bundle index. Do not edit.
|
|
580
728
|
*/
|
|
581
729
|
|
|
582
|
-
export { AXM_AUTH_CONFIG_TOKEN as A, AXMAuthenticationTypes as a, AXPTenantChooserDropdownComponent as b, AXPAppChooserListComponent as c,
|
|
583
|
-
//# sourceMappingURL=acorex-modules-auth-acorex-modules-auth-
|
|
730
|
+
export { AXM_AUTH_CONFIG_TOKEN as A, AXMAuthenticationTypes as a, AXPTenantChooserDropdownComponent as b, AXPAppChooserListComponent as c, AXMUserDeviceSessionsService as d, AXMAuthErrorHandler as e, AXMDefaultAuthConfigs as f, configAuthModule as g, AXMAuthModule as h, AXMSessionStatusTypes as i, AXPIdleService as j, AXMDeviceSessionsService as k, AXMDeviceSessionsServiceImpl as l };
|
|
731
|
+
//# sourceMappingURL=acorex-modules-auth-acorex-modules-auth-BxqN76H7.mjs.map
|