@acorex-platform/module-auth-client 0.0.15
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/fesm2022/acorex-platform-module-auth-client-acorex-platform-module-auth-client-B7tIKOw6.mjs +3174 -0
- package/fesm2022/acorex-platform-module-auth-client-acorex-platform-module-auth-client-B7tIKOw6.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-auth-client-app-chooser.component-Cm2ZagaI.mjs +67 -0
- package/fesm2022/acorex-platform-module-auth-client-app-chooser.component-Cm2ZagaI.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-auth-client-blank.layout-BRGgntib.mjs +18 -0
- package/fesm2022/acorex-platform-module-auth-client-blank.layout-BRGgntib.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-auth-client-change-password.command-ZyXAjUKw.mjs +168 -0
- package/fesm2022/acorex-platform-module-auth-client-change-password.command-ZyXAjUKw.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-auth-client-change-photo.command-BC8lw--F.mjs +192 -0
- package/fesm2022/acorex-platform-module-auth-client-change-photo.command-BC8lw--F.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-auth-client-contracts.mjs +80 -0
- package/fesm2022/acorex-platform-module-auth-client-contracts.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-auth-client-edit-account-info.command-B-mVlXxg.mjs +129 -0
- package/fesm2022/acorex-platform-module-auth-client-edit-account-info.command-B-mVlXxg.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-auth-client-edit-signature.command-CcTJJwAX.mjs +32 -0
- package/fesm2022/acorex-platform-module-auth-client-edit-signature.command-CcTJJwAX.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-auth-client-lock-screen.command-41QnG1TQ.mjs +30 -0
- package/fesm2022/acorex-platform-module-auth-client-lock-screen.command-41QnG1TQ.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-auth-client-login.module-DYtNYzF6.mjs +57 -0
- package/fesm2022/acorex-platform-module-auth-client-login.module-DYtNYzF6.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-auth-client-master.layout-DpdD9kgk.mjs +24 -0
- package/fesm2022/acorex-platform-module-auth-client-master.layout-DpdD9kgk.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-auth-client-menu.provider-Bz-kRip4.mjs +19 -0
- package/fesm2022/acorex-platform-module-auth-client-menu.provider-Bz-kRip4.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-auth-client-oauth-callback.component-BspBH4Ul.mjs +105 -0
- package/fesm2022/acorex-platform-module-auth-client-oauth-callback.component-BspBH4Ul.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-auth-client-open-sessions.command-CXSGuqYp.mjs +196 -0
- package/fesm2022/acorex-platform-module-auth-client-open-sessions.command-CXSGuqYp.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-auth-client-password.component-BuqUhET7.mjs +59 -0
- package/fesm2022/acorex-platform-module-auth-client-password.component-BuqUhET7.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-auth-client-password.component-Cihg82vM.mjs +529 -0
- package/fesm2022/acorex-platform-module-auth-client-password.component-Cihg82vM.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-auth-client-pin-code.constants-CRsFG7fg.mjs +7 -0
- package/fesm2022/acorex-platform-module-auth-client-pin-code.constants-CRsFG7fg.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-auth-client-profile-activity-chart.component-B8lBvZsA.mjs +158 -0
- package/fesm2022/acorex-platform-module-auth-client-profile-activity-chart.component-B8lBvZsA.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-auth-client-profile-coming-soon.command-DBbFbzAx.mjs +31 -0
- package/fesm2022/acorex-platform-module-auth-client-profile-coming-soon.command-DBbFbzAx.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-auth-client-profile-delete-account-danger-zone.component-CtJho4ab.mjs +79 -0
- package/fesm2022/acorex-platform-module-auth-client-profile-delete-account-danger-zone.component-CtJho4ab.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-auth-client-profile-page-component.provider-B-Qtd4_j.mjs +27 -0
- package/fesm2022/acorex-platform-module-auth-client-profile-page-component.provider-B-Qtd4_j.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-auth-client-profile-page.component-tbhf7K0V.mjs +446 -0
- package/fesm2022/acorex-platform-module-auth-client-profile-page.component-tbhf7K0V.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-auth-client-register-password.component-hSJyEA6Q.mjs +145 -0
- package/fesm2022/acorex-platform-module-auth-client-register-password.component-hSJyEA6Q.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-auth-client-register.module-DXm6AQpo.mjs +62 -0
- package/fesm2022/acorex-platform-module-auth-client-register.module-DXm6AQpo.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-auth-client-remove-pin-code.command-zUZooOtv.mjs +91 -0
- package/fesm2022/acorex-platform-module-auth-client-remove-pin-code.command-zUZooOtv.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-auth-client-result.component-DYJaB-FD.mjs +36 -0
- package/fesm2022/acorex-platform-module-auth-client-result.component-DYJaB-FD.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-auth-client-routes-REjaWcqY.mjs +9 -0
- package/fesm2022/acorex-platform-module-auth-client-routes-REjaWcqY.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-auth-client-session-lock-overlay.component-DqXGuIgN.mjs +346 -0
- package/fesm2022/acorex-platform-module-auth-client-session-lock-overlay.component-DqXGuIgN.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-auth-client-set-pin-code.command-DXTVbrS0.mjs +33 -0
- package/fesm2022/acorex-platform-module-auth-client-set-pin-code.command-DXTVbrS0.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-auth-client-set-pin-code.component-5TxB6aFi.mjs +188 -0
- package/fesm2022/acorex-platform-module-auth-client-set-pin-code.component-5TxB6aFi.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-auth-client-settings.provider-n1qbs6e1.mjs +177 -0
- package/fesm2022/acorex-platform-module-auth-client-settings.provider-n1qbs6e1.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-auth-client-show-profile-command-CxMz1yy-.mjs +70 -0
- package/fesm2022/acorex-platform-module-auth-client-show-profile-command-CxMz1yy-.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-auth-client-signout-command-DqqrP5pk.mjs +24 -0
- package/fesm2022/acorex-platform-module-auth-client-signout-command-DqqrP5pk.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-auth-client-tenant-chooser.component-ihsqCJKN.mjs +59 -0
- package/fesm2022/acorex-platform-module-auth-client-tenant-chooser.component-ihsqCJKN.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-auth-client-two-factor-code.component-CiENsIEh.mjs +40 -0
- package/fesm2022/acorex-platform-module-auth-client-two-factor-code.component-CiENsIEh.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-auth-client-two-factor.module-BJqdeuAz.mjs +45 -0
- package/fesm2022/acorex-platform-module-auth-client-two-factor.module-BJqdeuAz.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-auth-client-view-login-history.command-Dl0os5lD.mjs +108 -0
- package/fesm2022/acorex-platform-module-auth-client-view-login-history.command-Dl0os5lD.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-auth-client.mjs +2 -0
- package/fesm2022/acorex-platform-module-auth-client.mjs.map +1 -0
- package/package.json +28 -0
- package/types/acorex-platform-module-auth-client-contracts.d.ts +67 -0
- package/types/acorex-platform-module-auth-client.d.ts +390 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"acorex-platform-module-auth-client-tenant-chooser.component-ihsqCJKN.mjs","sources":["../../../../libs/modules/auth/client/src/lib/pages/account/tenant-chooser/tenant-chooser.component.ts","../../../../libs/modules/auth/client/src/lib/pages/account/tenant-chooser/tenant-chooser.component.html"],"sourcesContent":["import { Component, ViewEncapsulation, inject } from '@angular/core';\n\nimport { AXAvatarModule } from '@acorex/components/avatar';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXCheckBoxModule } from '@acorex/components/check-box';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXFormModule } from '@acorex/components/form';\nimport { AXImageModule } from '@acorex/components/image';\nimport { AXLabelModule } from '@acorex/components/label';\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport { AXTextBoxModule } from '@acorex/components/text-box';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPSessionService } from '@acorex-platform/framework-client/auth';\nimport { AXP_PLATFORM_CONFIG_TOKEN } from '@acorex-platform/framework-client/common';\nimport { AXPLogoComponent } from '@acorex-platform/framework-client/core';\nimport { AXPUserAvatarComponent } from '@acorex-platform/framework-client/layout/components';\nimport { CommonModule } from '@angular/common';\nimport { Router } from '@angular/router';\nimport { AXPTenantChooserListComponent } from './tenant-chooser-list.component';\n\n@Component({\n selector: 'axp-auth-tenant-chooser',\n templateUrl: './tenant-chooser.component.html',\n styleUrls: ['./tenant-chooser.component.css'],\n imports: [\n CommonModule,\n AXFormModule,\n AXTextBoxModule,\n AXButtonModule,\n AXLabelModule,\n AXCheckBoxModule,\n AXAvatarModule,\n AXImageModule,\n AXDecoratorModule,\n AXPLogoComponent,\n AXLoadingModule,\n AXTranslationModule,\n AXPUserAvatarComponent,\n AXPTenantChooserListComponent,\n ],\n encapsulation: ViewEncapsulation.None,\n})\nexport class AXPAuthTenantChooserComponent {\n private router = inject(Router);\n protected platformConfig = inject(AXP_PLATFORM_CONFIG_TOKEN);\n private sessionService = inject(AXPSessionService);\n\n protected user = this.sessionService.user;\n\n async handleSignout() {\n await this.sessionService.signout();\n this.router.navigate(['/auth/login']);\n }\n}\n","<main *translate=\"let t\"\n class=\"w-full space-y-10 h-[100vh] flex flex-col items-center justify-center bg-lightest md:bg-default\">\n <section>\n <axp-logo logoKey=\"platform\" appearance=\"onLight\" format=\"full\" [size]=\"160\" [attr.alt]=\"platformConfig.title\"\n class=\"w-36 mx-auto text-2xl font-bold\"></axp-logo>\n </section>\n <section class=\"flex justify-center\">\n <div\n class=\"flex gap-2 justify-center text-center flex-col items-center border rounded-lg shadow-lg p-6 lg:w-[45vw] xl:w-[25vw] w-[90vw]\">\n <ax-avatar class=\"rounded-full\" [size]=\"72\">\n @if (user?.avatar) {\n <!-- <ax-image [src]=\"user?.avatar\"></ax-image> -->\n <axp-user-avatar [size]=\"72\" [userId]=\"user?.id!\"></axp-user-avatar>\n }\n </ax-avatar>\n <h2 class=\"md:text-lg font-medium\">{{ '@auth:welcome.message' | translate | async }}, {{ user?.title }}</h2>\n <p class=\"text-neutral-500 text-sm md:text-base font-medium\">\n {{ '@auth:tenant-chooser.description' | translate | async }}\n </p>\n <div class=\"mt-3 w-full\">\n <axp-tenant-chooser-list></axp-tenant-chooser-list>\n </div>\n </div>\n </section>\n <section>\n <p class=\"text-neutral-400 text-sm\">\n {{ '@auth:tenant-chooser.footer' | translate | async }}\n <a (click)=\"handleSignout()\" class=\"text-primary cursor-pointer hover:underline font-medium\">\n {{ '@auth:backLogin' | translate | async }}\n </a>\n </p>\n </section>\n</main>"],"names":["i3"],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { ViewEncapsulation, Component } from '@angular/core';
|
|
3
|
+
import * as i1$1 from '@acorex/components/button';
|
|
4
|
+
import { AXButtonModule } from '@acorex/components/button';
|
|
5
|
+
import { AXDecoratorModule } from '@acorex/components/decorators';
|
|
6
|
+
import * as i1 from '@acorex/components/form';
|
|
7
|
+
import { AXFormModule } from '@acorex/components/form';
|
|
8
|
+
import * as i3 from '@acorex/components/label';
|
|
9
|
+
import { AXLabelModule } from '@acorex/components/label';
|
|
10
|
+
import * as i4 from '@acorex/components/password-box';
|
|
11
|
+
import { AXPasswordBoxModule } from '@acorex/components/password-box';
|
|
12
|
+
import { AXTextBoxModule } from '@acorex/components/text-box';
|
|
13
|
+
import * as i2 from '@acorex/core/translation';
|
|
14
|
+
import { AXTranslationModule } from '@acorex/core/translation';
|
|
15
|
+
import * as i4$1 from '@angular/common';
|
|
16
|
+
import { CommonModule } from '@angular/common';
|
|
17
|
+
|
|
18
|
+
class AXPAuthTwoFactorCodeComponent {
|
|
19
|
+
ngOnInit() { }
|
|
20
|
+
ngOnDestroy() { }
|
|
21
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPAuthTwoFactorCodeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
22
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.9", type: AXPAuthTwoFactorCodeComponent, isStandalone: true, selector: "axp-auth-two-factor-code", ngImport: i0, template: "<ng-container *translate=\"let t\">\n <div class=\"text-center mb-8\">\n <h1 class=\"font-bold text-xl mb-2\">\n {{ '@auth:twofactor.title' | translate | async }}\n </h1>\n <p class=\"text-base text-neutral-600 mb-4\">\n {{ '@auth:twofactor.hint' | translate | async }}\n </p>\n <p class=\"text-base font-medium\">**** *** 3320</p>\n </div>\n <div class=\"w-80 lg:w-96\">\n <ax-form>\n <div class=\"flex flex-col gap-6\">\n <ax-form-field>\n <ax-label class=\"text-start\">{{ '@auth:twofactor.textBoxHint' | translate | async }}</ax-label>\n <ax-password-box></ax-password-box>\n </ax-form-field>\n <ax-button class=\"w-full\" [text]=\"'@general:actions.submit.title' | translate | async\" color=\"primary\">\n </ax-button>\n </div>\n </ax-form>\n </div>\n</ng-container>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: AXFormModule }, { kind: "component", type: i1.AXFormFieldComponent, selector: "ax-form-field", inputs: ["labelMode"] }, { kind: "component", type: i1.AXFormComponent, selector: "ax-form", inputs: ["disabled", "readonly", "labelMode", "look", "messageStyle", "updateOn", "inUserInteractionActive"], outputs: ["onValidate", "updateOnChange"] }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i1$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: "ngmodule", type: AXTextBoxModule }, { kind: "ngmodule", type: AXLabelModule }, { kind: "component", type: i3.AXLabelComponent, selector: "ax-label", inputs: ["required", "for"], outputs: ["requiredChange"] }, { kind: "ngmodule", type: AXPasswordBoxModule }, { kind: "component", type: i4.AXPasswordBoxComponent, selector: "ax-password-box", inputs: ["readonly", "disabled", "tabIndex", "placeholder", "value", "state", "name", "id", "look", "autoComplete", "showToggleButton", "class"], outputs: ["valueChange", "stateChange", "onValueChanged", "onBlur", "onFocus", "readonlyChange", "disabledChange", "onKeyDown", "onKeyUp", "onKeyPress"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "directive", type: i2.AXTranslatorDirective, selector: "[translate]" }, { kind: "pipe", type: i4$1.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.AXTranslatorPipe, name: "translate" }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
23
|
+
}
|
|
24
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPAuthTwoFactorCodeComponent, decorators: [{
|
|
25
|
+
type: Component,
|
|
26
|
+
args: [{ selector: 'axp-auth-two-factor-code', imports: [
|
|
27
|
+
CommonModule,
|
|
28
|
+
AXFormModule,
|
|
29
|
+
AXButtonModule,
|
|
30
|
+
AXDecoratorModule,
|
|
31
|
+
AXFormModule,
|
|
32
|
+
AXTextBoxModule,
|
|
33
|
+
AXLabelModule,
|
|
34
|
+
AXPasswordBoxModule,
|
|
35
|
+
AXTranslationModule,
|
|
36
|
+
], encapsulation: ViewEncapsulation.None, template: "<ng-container *translate=\"let t\">\n <div class=\"text-center mb-8\">\n <h1 class=\"font-bold text-xl mb-2\">\n {{ '@auth:twofactor.title' | translate | async }}\n </h1>\n <p class=\"text-base text-neutral-600 mb-4\">\n {{ '@auth:twofactor.hint' | translate | async }}\n </p>\n <p class=\"text-base font-medium\">**** *** 3320</p>\n </div>\n <div class=\"w-80 lg:w-96\">\n <ax-form>\n <div class=\"flex flex-col gap-6\">\n <ax-form-field>\n <ax-label class=\"text-start\">{{ '@auth:twofactor.textBoxHint' | translate | async }}</ax-label>\n <ax-password-box></ax-password-box>\n </ax-form-field>\n <ax-button class=\"w-full\" [text]=\"'@general:actions.submit.title' | translate | async\" color=\"primary\">\n </ax-button>\n </div>\n </ax-form>\n </div>\n</ng-container>\n" }]
|
|
37
|
+
}] });
|
|
38
|
+
|
|
39
|
+
export { AXPAuthTwoFactorCodeComponent };
|
|
40
|
+
//# sourceMappingURL=acorex-platform-module-auth-client-two-factor-code.component-CiENsIEh.mjs.map
|
package/fesm2022/acorex-platform-module-auth-client-two-factor-code.component-CiENsIEh.mjs.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"acorex-platform-module-auth-client-two-factor-code.component-CiENsIEh.mjs","sources":["../../../../libs/modules/auth/client/src/lib/pages/two-factor/two-factor-code/two-factor-code.component.ts","../../../../libs/modules/auth/client/src/lib/pages/two-factor/two-factor-code/two-factor-code.component.html"],"sourcesContent":["import { Component, OnDestroy, OnInit, ViewEncapsulation } from '@angular/core';\n\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXFormModule } from '@acorex/components/form';\nimport { AXLabelModule } from '@acorex/components/label';\nimport { AXPasswordBoxModule } from '@acorex/components/password-box';\nimport { AXTextBoxModule } from '@acorex/components/text-box';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { CommonModule } from '@angular/common';\n\n\n@Component({\n selector: 'axp-auth-two-factor-code',\n templateUrl: './two-factor-code.component.html',\n imports: [\n CommonModule,\n AXFormModule,\n AXButtonModule,\n AXDecoratorModule,\n AXFormModule,\n AXTextBoxModule,\n AXLabelModule,\n AXPasswordBoxModule,\n AXTranslationModule,\n ],\n encapsulation: ViewEncapsulation.None\n})\nexport class AXPAuthTwoFactorCodeComponent implements OnInit, OnDestroy {\n ngOnInit(): void { }\n\n ngOnDestroy(): void { }\n}\n","<ng-container *translate=\"let t\">\n <div class=\"text-center mb-8\">\n <h1 class=\"font-bold text-xl mb-2\">\n {{ '@auth:twofactor.title' | translate | async }}\n </h1>\n <p class=\"text-base text-neutral-600 mb-4\">\n {{ '@auth:twofactor.hint' | translate | async }}\n </p>\n <p class=\"text-base font-medium\">**** *** 3320</p>\n </div>\n <div class=\"w-80 lg:w-96\">\n <ax-form>\n <div class=\"flex flex-col gap-6\">\n <ax-form-field>\n <ax-label class=\"text-start\">{{ '@auth:twofactor.textBoxHint' | translate | async }}</ax-label>\n <ax-password-box></ax-password-box>\n </ax-form-field>\n <ax-button class=\"w-full\" [text]=\"'@general:actions.submit.title' | translate | async\" color=\"primary\">\n </ax-button>\n </div>\n </ax-form>\n </div>\n</ng-container>\n"],"names":["i2","i5","i6"],"mappings":"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"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { inject, NgModule } from '@angular/core';
|
|
3
|
+
import { RouterModule, ROUTES } from '@angular/router';
|
|
4
|
+
import { n as AXM_AUTH_CONFIG_TOKEN } from './acorex-platform-module-auth-client-acorex-platform-module-auth-client-B7tIKOw6.mjs';
|
|
5
|
+
|
|
6
|
+
function routesFacory() {
|
|
7
|
+
const val = inject(AXM_AUTH_CONFIG_TOKEN);
|
|
8
|
+
let routes = [];
|
|
9
|
+
routes = [
|
|
10
|
+
{
|
|
11
|
+
path: 'two-step',
|
|
12
|
+
loadComponent: () => import('./acorex-platform-module-auth-client-two-factor-code.component-CiENsIEh.mjs').then((c) => c.AXPAuthTwoFactorCodeComponent),
|
|
13
|
+
},
|
|
14
|
+
];
|
|
15
|
+
return routes;
|
|
16
|
+
}
|
|
17
|
+
class AXPTwoFactorModule {
|
|
18
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPTwoFactorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
19
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.9", ngImport: i0, type: AXPTwoFactorModule, imports: [RouterModule] }); }
|
|
20
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPTwoFactorModule, providers: [
|
|
21
|
+
{
|
|
22
|
+
provide: ROUTES,
|
|
23
|
+
multi: true,
|
|
24
|
+
useFactory: routesFacory,
|
|
25
|
+
},
|
|
26
|
+
], imports: [RouterModule] }); }
|
|
27
|
+
}
|
|
28
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPTwoFactorModule, decorators: [{
|
|
29
|
+
type: NgModule,
|
|
30
|
+
args: [{
|
|
31
|
+
declarations: [],
|
|
32
|
+
imports: [RouterModule],
|
|
33
|
+
exports: [],
|
|
34
|
+
providers: [
|
|
35
|
+
{
|
|
36
|
+
provide: ROUTES,
|
|
37
|
+
multi: true,
|
|
38
|
+
useFactory: routesFacory,
|
|
39
|
+
},
|
|
40
|
+
],
|
|
41
|
+
}]
|
|
42
|
+
}] });
|
|
43
|
+
|
|
44
|
+
export { AXPTwoFactorModule };
|
|
45
|
+
//# sourceMappingURL=acorex-platform-module-auth-client-two-factor.module-BJqdeuAz.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"acorex-platform-module-auth-client-two-factor.module-BJqdeuAz.mjs","sources":["../../../../libs/modules/auth/client/src/lib/pages/two-factor/two-factor.module.ts"],"sourcesContent":["import { inject, NgModule } from '@angular/core';\nimport { RouterModule, ROUTES, Routes } from '@angular/router';\nimport { AXM_AUTH_CONFIG_TOKEN } from '../../auth.config';\n\nfunction routesFacory() {\n const val = inject(AXM_AUTH_CONFIG_TOKEN);\n let routes: Routes = [];\n routes = [\n {\n path: 'two-step',\n loadComponent: () =>\n import('./two-factor-code/two-factor-code.component').then((c) => c.AXPAuthTwoFactorCodeComponent),\n },\n ];\n return routes;\n}\n\n@NgModule({\n declarations: [],\n imports: [RouterModule],\n exports: [],\n providers: [\n {\n provide: ROUTES,\n multi: true,\n useFactory: routesFacory,\n },\n ],\n})\nexport class AXPTwoFactorModule {}\n"],"names":[],"mappings":";;;;;AAIA,SAAS,YAAY,GAAA;AACnB,IAAA,MAAM,GAAG,GAAG,MAAM,CAAC,qBAAqB,CAAC;IACzC,IAAI,MAAM,GAAW,EAAE;AACvB,IAAA,MAAM,GAAG;AACP,QAAA;AACE,YAAA,IAAI,EAAE,UAAU;AAChB,YAAA,aAAa,EAAE,MACb,OAAO,6EAA6C,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,6BAA6B,CAAC;AACrG,SAAA;KACF;AACD,IAAA,OAAO,MAAM;AACf;MAca,kBAAkB,CAAA;8GAAlB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,YAVnB,YAAY,CAAA,EAAA,CAAA,CAAA;AAUX,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,EAAA,SAAA,EARlB;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,MAAM;AACf,gBAAA,KAAK,EAAE,IAAI;AACX,gBAAA,UAAU,EAAE,YAAY;AACzB,aAAA;AACF,SAAA,EAAA,OAAA,EAAA,CARS,YAAY,CAAA,EAAA,CAAA,CAAA;;2FAUX,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAZ9B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE,EAAE;oBAChB,OAAO,EAAE,CAAC,YAAY,CAAC;AACvB,oBAAA,OAAO,EAAE,EAAE;AACX,oBAAA,SAAS,EAAE;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,MAAM;AACf,4BAAA,KAAK,EAAE,IAAI;AACX,4BAAA,UAAU,EAAE,YAAY;AACzB,yBAAA;AACF,qBAAA;AACF,iBAAA;;;;;"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import { AXTranslationService } from '@acorex/core/translation';
|
|
2
|
+
import { AXPLayoutBuilderService } from '@acorex-platform/framework-client/layout/builder';
|
|
3
|
+
import * as i0 from '@angular/core';
|
|
4
|
+
import { inject, Injectable } from '@angular/core';
|
|
5
|
+
import { isEmpty } from 'lodash';
|
|
6
|
+
import { m as AXPLoginHistoryService } from './acorex-platform-module-auth-client-acorex-platform-module-auth-client-B7tIKOw6.mjs';
|
|
7
|
+
|
|
8
|
+
//#region ---- View login history command ----
|
|
9
|
+
/** Opens a read-only dialog listing recent sign-in attempts for the current user. */
|
|
10
|
+
class AXPViewLoginHistoryCommand {
|
|
11
|
+
constructor() {
|
|
12
|
+
//#region ---- Services & Dependencies ----
|
|
13
|
+
this.layoutBuilder = inject(AXPLayoutBuilderService);
|
|
14
|
+
this.loginHistoryService = inject(AXPLoginHistoryService);
|
|
15
|
+
this.translateService = inject(AXTranslationService);
|
|
16
|
+
}
|
|
17
|
+
//#endregion
|
|
18
|
+
//#region ---- Command ----
|
|
19
|
+
async execute() {
|
|
20
|
+
const entries = await this.loginHistoryService.getEntries();
|
|
21
|
+
const rows = await this.buildRows(entries);
|
|
22
|
+
const dialogTitle = await this.translateService.translateAsync('@auth:profile-page.commands.view-login-history.dialog.title');
|
|
23
|
+
const dialogRef = await this.layoutBuilder
|
|
24
|
+
.create()
|
|
25
|
+
.dialog((dialog) => {
|
|
26
|
+
dialog.setTitle(dialogTitle).setSize('lg');
|
|
27
|
+
if (isEmpty(rows)) {
|
|
28
|
+
dialog.setMessage('@auth:profile-page.commands.view-login-history.empty');
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
dialog.content((layout) => {
|
|
32
|
+
layout.list((list) => {
|
|
33
|
+
list
|
|
34
|
+
.setDataSource(rows)
|
|
35
|
+
.setColumns([
|
|
36
|
+
{
|
|
37
|
+
name: 'lastLoginDate',
|
|
38
|
+
title: '@auth:profile-page.commands.view-login-history.columns.date',
|
|
39
|
+
width: '180px',
|
|
40
|
+
widget: {
|
|
41
|
+
type: 'date-time-editor',
|
|
42
|
+
path: 'lastLoginDate',
|
|
43
|
+
options: { format: 'datetime', readOnly: true },
|
|
44
|
+
},
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
name: 'device',
|
|
48
|
+
title: '@auth:profile-page.commands.view-login-history.columns.device',
|
|
49
|
+
widget: { type: 'text-editor', path: 'device', options: { readOnly: true } },
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
name: 'location',
|
|
53
|
+
title: '@auth:profile-page.commands.view-login-history.columns.location',
|
|
54
|
+
widget: { type: 'text-editor', path: 'location', options: { readOnly: true } },
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
name: 'ipAddress',
|
|
58
|
+
title: '@auth:profile-page.commands.view-login-history.columns.ip-address',
|
|
59
|
+
width: '140px',
|
|
60
|
+
widget: { type: 'text-editor', path: 'ipAddress', options: { readOnly: true } },
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
name: 'browser',
|
|
64
|
+
title: '@auth:profile-page.commands.view-login-history.columns.browser',
|
|
65
|
+
widget: { type: 'text-editor', path: 'browser', options: { readOnly: true } },
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
name: 'statusLabel',
|
|
69
|
+
title: '@auth:profile-page.commands.view-login-history.columns.status',
|
|
70
|
+
width: '120px',
|
|
71
|
+
widget: { type: 'text-editor', path: 'statusLabel', options: { readOnly: true } },
|
|
72
|
+
},
|
|
73
|
+
])
|
|
74
|
+
.setPaging(true)
|
|
75
|
+
.setShowHeader(true)
|
|
76
|
+
.setAllowSelection(false)
|
|
77
|
+
.setMinHeight(360);
|
|
78
|
+
});
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
dialog.setActions((actions) => {
|
|
82
|
+
actions.cancel('@general:actions.close.title');
|
|
83
|
+
});
|
|
84
|
+
})
|
|
85
|
+
.show();
|
|
86
|
+
if (dialogRef.action() === 'cancel') {
|
|
87
|
+
dialogRef.close();
|
|
88
|
+
}
|
|
89
|
+
return { success: true };
|
|
90
|
+
}
|
|
91
|
+
//#endregion
|
|
92
|
+
//#region ---- Utility Methods ----
|
|
93
|
+
async buildRows(entries) {
|
|
94
|
+
return Promise.all(entries.map(async (entry) => ({
|
|
95
|
+
...entry,
|
|
96
|
+
statusLabel: await this.translateService.translateAsync(`@auth:profile-page.commands.view-login-history.status.${entry.status}`),
|
|
97
|
+
})));
|
|
98
|
+
}
|
|
99
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPViewLoginHistoryCommand, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
100
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPViewLoginHistoryCommand, providedIn: 'root' }); }
|
|
101
|
+
}
|
|
102
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPViewLoginHistoryCommand, decorators: [{
|
|
103
|
+
type: Injectable,
|
|
104
|
+
args: [{ providedIn: 'root' }]
|
|
105
|
+
}] });
|
|
106
|
+
|
|
107
|
+
export { AXPViewLoginHistoryCommand };
|
|
108
|
+
//# sourceMappingURL=acorex-platform-module-auth-client-view-login-history.command-Dl0os5lD.mjs.map
|
package/fesm2022/acorex-platform-module-auth-client-view-login-history.command-Dl0os5lD.mjs.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"acorex-platform-module-auth-client-view-login-history.command-Dl0os5lD.mjs","sources":["../../../../libs/modules/auth/client/src/lib/commands/view-login-history.command.ts"],"sourcesContent":["import { AXPCommand } from '@acorex-platform/framework-shared/runtime';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { AXPExecuteCommandResult } from '@acorex-platform/framework-shared/core';\nimport { AXPLayoutBuilderService } from '@acorex-platform/framework-client/layout/builder';\n\nimport { inject, Injectable } from '@angular/core';\nimport { isEmpty } from 'lodash';\nimport { AXPLoginHistoryEntry, AXPLoginHistoryService } from '../shared/services/login-history.service';\n\n//#region ---- View login history command ----\n\n/** Opens a read-only dialog listing recent sign-in attempts for the current user. */\n@Injectable({ providedIn: 'root' })\nexport class AXPViewLoginHistoryCommand implements AXPCommand {\n //#region ---- Services & Dependencies ----\n\n private readonly layoutBuilder = inject(AXPLayoutBuilderService);\n private readonly loginHistoryService = inject(AXPLoginHistoryService);\n private readonly translateService = inject(AXTranslationService);\n\n //#endregion\n\n //#region ---- Command ----\n\n async execute(): Promise<AXPExecuteCommandResult<void>> {\n const entries = await this.loginHistoryService.getEntries();\n const rows = await this.buildRows(entries);\n\n const dialogTitle = await this.translateService.translateAsync(\n '@auth:profile-page.commands.view-login-history.dialog.title',\n );\n\n const dialogRef = await this.layoutBuilder\n .create()\n .dialog((dialog) => {\n dialog.setTitle(dialogTitle).setSize('lg');\n\n if (isEmpty(rows)) {\n dialog.setMessage('@auth:profile-page.commands.view-login-history.empty');\n } else {\n dialog.content((layout) => {\n layout.list((list) => {\n list\n .setDataSource(rows)\n .setColumns([\n {\n name: 'lastLoginDate',\n title: '@auth:profile-page.commands.view-login-history.columns.date',\n width: '180px',\n widget: {\n type: 'date-time-editor',\n path: 'lastLoginDate',\n options: { format: 'datetime', readOnly: true },\n },\n },\n {\n name: 'device',\n title: '@auth:profile-page.commands.view-login-history.columns.device',\n widget: { type: 'text-editor', path: 'device', options: { readOnly: true } },\n },\n {\n name: 'location',\n title: '@auth:profile-page.commands.view-login-history.columns.location',\n widget: { type: 'text-editor', path: 'location', options: { readOnly: true } },\n },\n {\n name: 'ipAddress',\n title: '@auth:profile-page.commands.view-login-history.columns.ip-address',\n width: '140px',\n widget: { type: 'text-editor', path: 'ipAddress', options: { readOnly: true } },\n },\n {\n name: 'browser',\n title: '@auth:profile-page.commands.view-login-history.columns.browser',\n widget: { type: 'text-editor', path: 'browser', options: { readOnly: true } },\n },\n {\n name: 'statusLabel',\n title: '@auth:profile-page.commands.view-login-history.columns.status',\n width: '120px',\n widget: { type: 'text-editor', path: 'statusLabel', options: { readOnly: true } },\n },\n ])\n .setPaging(true)\n .setShowHeader(true)\n .setAllowSelection(false)\n .setMinHeight(360);\n });\n });\n }\n\n dialog.setActions((actions) => {\n actions.cancel('@general:actions.close.title');\n });\n })\n .show();\n\n if (dialogRef.action() === 'cancel') {\n dialogRef.close();\n }\n\n return { success: true };\n }\n\n //#endregion\n\n //#region ---- Utility Methods ----\n\n private async buildRows(\n entries: AXPLoginHistoryEntry[],\n ): Promise<Array<AXPLoginHistoryEntry & { statusLabel: string }>> {\n return Promise.all(\n entries.map(async (entry) => ({\n ...entry,\n statusLabel: await this.translateService.translateAsync(\n `@auth:profile-page.commands.view-login-history.status.${entry.status}`,\n ),\n })),\n );\n }\n\n //#endregion\n}\n\n//#endregion\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export { y as AUTH_LOGIN_EXTERNAL_PROVIDERS_SLOT, z as AUTH_USER_ACTIVITY_DEFAULT_WEEKS, B as AXMAuthDataSourceProvider, C as AXMAuthErrorHandler, D as AXMAuthModule, p as AXMAuthenticationTypes, E as AXMDefaultAuthConfigs, F as AXMUserActivityDataSourceDefinition, n as AXM_AUTH_CONFIG_TOKEN, o as AXM_LOGIN_GUARD_TOKEN, i as AXPAuthPasswordChangeTrackingService, f as AXPIdleLockService, x as AXPLoginExternalProvidersComponent, m as AXPLoginHistoryService, g as AXPUserAvatarSyncService, P as PROFILE_PAGE_GROUPS_HOOK, b as PROFILE_PAGE_HEADER_META_HOOK, a as PROFILE_PAGE_SECTIONS_HOOK, G as aggregateDailySessionCounts, H as buildUserActivityDataSourceItem, I as buildUserActivityWeeks, J as canActivateLogin, K as computeUserActivityStats, L as configAuthModule, M as countToActivityLevel, N as extractUserActivityEndDate, O as extractUserActivityStartDate, Q as extractUserActivityUserId, w as formatCompactActivityCount, R as isUserProfileGroupComponent, u as resolveDefaultUserActivityDateRange, r as resolveDefaultUserProfileSectionAction, c as resolveUserProfileSectionContent, v as visibleUserProfileSectionActions } from './acorex-platform-module-auth-client-acorex-platform-module-auth-client-B7tIKOw6.mjs';
|
|
2
|
+
//# sourceMappingURL=acorex-platform-module-auth-client.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"acorex-platform-module-auth-client.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
package/package.json
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@acorex-platform/module-auth-client",
|
|
3
|
+
"version": "0.0.15",
|
|
4
|
+
"sideEffects": false,
|
|
5
|
+
"peerDependencies": {
|
|
6
|
+
"@angular/common": "^21.0.0",
|
|
7
|
+
"@angular/core": "^21.0.0"
|
|
8
|
+
},
|
|
9
|
+
"dependencies": {
|
|
10
|
+
"tslib": "^2.3.0"
|
|
11
|
+
},
|
|
12
|
+
"module": "fesm2022/acorex-platform-module-auth-client.mjs",
|
|
13
|
+
"typings": "types/acorex-platform-module-auth-client.d.ts",
|
|
14
|
+
"exports": {
|
|
15
|
+
"./package.json": {
|
|
16
|
+
"default": "./package.json"
|
|
17
|
+
},
|
|
18
|
+
".": {
|
|
19
|
+
"types": "./types/acorex-platform-module-auth-client.d.ts",
|
|
20
|
+
"default": "./fesm2022/acorex-platform-module-auth-client.mjs"
|
|
21
|
+
},
|
|
22
|
+
"./contracts": {
|
|
23
|
+
"types": "./types/acorex-platform-module-auth-client-contracts.d.ts",
|
|
24
|
+
"default": "./fesm2022/acorex-platform-module-auth-client-contracts.mjs"
|
|
25
|
+
}
|
|
26
|
+
},
|
|
27
|
+
"type": "module"
|
|
28
|
+
}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
declare const AXMAuthCommandKeys: {
|
|
2
|
+
readonly Profile: {
|
|
3
|
+
readonly Show: "auth:profile";
|
|
4
|
+
readonly ChangePhoto: "auth:change-photo";
|
|
5
|
+
readonly EditAccountInfo: "auth:edit-account-info";
|
|
6
|
+
readonly ComingSoon: "auth:profile-coming-soon";
|
|
7
|
+
};
|
|
8
|
+
readonly Session: {
|
|
9
|
+
readonly Signout: "auth:signout";
|
|
10
|
+
readonly OpenSessions: "auth:open-sessions";
|
|
11
|
+
readonly LockScreen: "auth:lock-screen";
|
|
12
|
+
};
|
|
13
|
+
readonly Security: {
|
|
14
|
+
readonly ChangePassword: "auth:change-password";
|
|
15
|
+
readonly SetPinCode: "auth:set-pin-code";
|
|
16
|
+
readonly RemovePinCode: "auth:remove-pin-code";
|
|
17
|
+
readonly ViewLoginHistory: "auth:view-login-history";
|
|
18
|
+
readonly EditSignature: "auth:edit-signature";
|
|
19
|
+
};
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
/** Auth module datasource registry names. */
|
|
23
|
+
declare const AXMAuthDataSourceKeys: {
|
|
24
|
+
readonly UserActivity: "auth-user-activity";
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
declare const AXPAuthMenuKeys: {};
|
|
28
|
+
|
|
29
|
+
declare const AXMPermissionsKeys: {
|
|
30
|
+
Auth: {
|
|
31
|
+
Management: string;
|
|
32
|
+
};
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
declare const RootConfig: {
|
|
36
|
+
readonly config: {
|
|
37
|
+
i18n: string;
|
|
38
|
+
module: string;
|
|
39
|
+
};
|
|
40
|
+
readonly module: {
|
|
41
|
+
readonly route: "auth";
|
|
42
|
+
readonly name: string;
|
|
43
|
+
readonly title: "@auth:module.title";
|
|
44
|
+
readonly icon: "fa-light fa-shield-keyhole";
|
|
45
|
+
};
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
declare enum AXPAuthSettings {
|
|
49
|
+
TwoFactorAuth = "Auth:Setting:Authentication.TwoFactorAuth",
|
|
50
|
+
PasswordComplexity = "Auth:Setting:Authentication.PasswordComplexity",
|
|
51
|
+
PasswordExpiryDays = "Auth:Setting:Authentication.PasswordExpiryDays",
|
|
52
|
+
MaxLoginAttempts = "Auth:Setting:Authentication.MaxLoginAttempts",
|
|
53
|
+
LockoutDuration = "Auth:Setting:Authentication.LockoutDuration",
|
|
54
|
+
LockWhenIdleEnabled = "Auth:Setting:SessionManagement.LockWhenIdleEnabled",
|
|
55
|
+
LockWhenIdleMinutes = "Auth:Setting:SessionManagement.LockWhenIdleMinutes",
|
|
56
|
+
InactiveSessionTermination = "Auth:Setting:SessionManagement.InactiveSessionTermination"
|
|
57
|
+
}
|
|
58
|
+
declare const AXPAuthInactiveSessionTerminationOptions: {
|
|
59
|
+
readonly OneWeek: "oneWeek";
|
|
60
|
+
readonly OneMonth: "oneMonth";
|
|
61
|
+
readonly ThreeMonths: "threeMonths";
|
|
62
|
+
readonly SixMonths: "sixMonths";
|
|
63
|
+
};
|
|
64
|
+
type AXPAuthInactiveSessionTerminationValue = (typeof AXPAuthInactiveSessionTerminationOptions)[keyof typeof AXPAuthInactiveSessionTerminationOptions];
|
|
65
|
+
|
|
66
|
+
export { AXMAuthCommandKeys, AXMAuthDataSourceKeys, AXMPermissionsKeys, AXPAuthInactiveSessionTerminationOptions, AXPAuthMenuKeys, AXPAuthSettings, RootConfig };
|
|
67
|
+
export type { AXPAuthInactiveSessionTerminationValue };
|