@acorex-platform/module-auth-client 0.0.38 → 0.0.48
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-accept-invitation.component-Ct28GG3a.mjs +179 -0
- package/fesm2022/acorex-platform-module-auth-client-accept-invitation.component-Ct28GG3a.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-auth-client-acorex-platform-module-auth-client-CRl74b8g.mjs → acorex-platform-module-auth-client-acorex-platform-module-auth-client-C1oSPf12.mjs} +1154 -107
- package/fesm2022/acorex-platform-module-auth-client-acorex-platform-module-auth-client-C1oSPf12.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-auth-client-app-chooser.component-CjWofUGR.mjs → acorex-platform-module-auth-client-app-chooser.component-CLKLwWW8.mjs} +4 -4
- package/fesm2022/{acorex-platform-module-auth-client-app-chooser.component-CjWofUGR.mjs.map → acorex-platform-module-auth-client-app-chooser.component-CLKLwWW8.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-auth-client-blank.layout-BCXNPgrp.mjs → acorex-platform-module-auth-client-blank.layout-xSXPWxyw.mjs} +3 -3
- package/fesm2022/acorex-platform-module-auth-client-blank.layout-xSXPWxyw.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-auth-client-change-password.command-BqU3jYV9.mjs → acorex-platform-module-auth-client-change-password.command-CknYaMZD.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-auth-client-change-password.command-BqU3jYV9.mjs.map → acorex-platform-module-auth-client-change-password.command-CknYaMZD.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-auth-client-change-photo.command-CzO3A7OG.mjs → acorex-platform-module-auth-client-change-photo.command-CML784Lg.mjs} +71 -21
- package/fesm2022/acorex-platform-module-auth-client-change-photo.command-CML784Lg.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-auth-client-command-return-url.util-mBmtJ7T2.mjs +69 -0
- package/fesm2022/acorex-platform-module-auth-client-command-return-url.util-mBmtJ7T2.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-auth-client-contracts.mjs +12 -7
- package/fesm2022/acorex-platform-module-auth-client-contracts.mjs.map +1 -1
- package/fesm2022/{acorex-platform-module-auth-client-edit-account-info.command-CD9IrimO.mjs → acorex-platform-module-auth-client-edit-account-info.command-DulLUfWs.mjs} +25 -4
- package/fesm2022/acorex-platform-module-auth-client-edit-account-info.command-DulLUfWs.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-auth-client-get-user-activity.query-B1bKcSVQ.mjs → acorex-platform-module-auth-client-get-user-activity.query-CV9mdOBi.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-auth-client-get-user-activity.query-B1bKcSVQ.mjs.map → acorex-platform-module-auth-client-get-user-activity.query-CV9mdOBi.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-auth-client-lock-screen.command-DKtlBzS7.mjs → acorex-platform-module-auth-client-lock-screen.command-BH3Q6lJE.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-auth-client-lock-screen.command-DKtlBzS7.mjs.map → acorex-platform-module-auth-client-lock-screen.command-BH3Q6lJE.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-auth-client-login.module-CXl61yOu.mjs → acorex-platform-module-auth-client-login.module-DtvnPpBH.mjs} +3 -3
- package/fesm2022/{acorex-platform-module-auth-client-login.module-CXl61yOu.mjs.map → acorex-platform-module-auth-client-login.module-DtvnPpBH.mjs.map} +1 -1
- package/fesm2022/acorex-platform-module-auth-client-manage-two-factor.command-BAg2W20W.mjs +445 -0
- package/fesm2022/acorex-platform-module-auth-client-manage-two-factor.command-BAg2W20W.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-auth-client-master.layout-D7zUm7aL.mjs → acorex-platform-module-auth-client-master.layout-B3krDskY.mjs} +5 -5
- package/fesm2022/{acorex-platform-module-auth-client-master.layout-D7zUm7aL.mjs.map → acorex-platform-module-auth-client-master.layout-B3krDskY.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-auth-client-oauth-callback.component-fdWC08nA.mjs → acorex-platform-module-auth-client-oauth-callback.component-DWnljN18.mjs} +3 -3
- package/fesm2022/{acorex-platform-module-auth-client-oauth-callback.component-fdWC08nA.mjs.map → acorex-platform-module-auth-client-oauth-callback.component-DWnljN18.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-auth-client-open-sessions.command-DKvyMkhl.mjs → acorex-platform-module-auth-client-open-sessions.command-CEpu6c7D.mjs} +6 -6
- package/fesm2022/{acorex-platform-module-auth-client-open-sessions.command-DKvyMkhl.mjs.map → acorex-platform-module-auth-client-open-sessions.command-CEpu6c7D.mjs.map} +1 -1
- package/fesm2022/acorex-platform-module-auth-client-open-waiting-room.command-CR-_ppYd.mjs +28 -0
- package/fesm2022/acorex-platform-module-auth-client-open-waiting-room.command-CR-_ppYd.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-auth-client-password.component-BE2JkYm_.mjs → acorex-platform-module-auth-client-password.component-Ci5Wy3rO.mjs} +5 -5
- package/fesm2022/{acorex-platform-module-auth-client-password.component-BE2JkYm_.mjs.map → acorex-platform-module-auth-client-password.component-Ci5Wy3rO.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-auth-client-password.component-BoWDVby5.mjs → acorex-platform-module-auth-client-password.component-ddh-_0k3.mjs} +39 -9
- package/fesm2022/acorex-platform-module-auth-client-password.component-ddh-_0k3.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-auth-client-platform-settings-unavailable.component-BJMtsa99.mjs → acorex-platform-module-auth-client-platform-settings-unavailable.component-LwuokJiZ.mjs} +4 -4
- package/fesm2022/{acorex-platform-module-auth-client-platform-settings-unavailable.component-BJMtsa99.mjs.map → acorex-platform-module-auth-client-platform-settings-unavailable.component-LwuokJiZ.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-auth-client-profile-activity-chart.component-CFaRGMKu.mjs → acorex-platform-module-auth-client-profile-activity-chart.component-D4bqeKCd.mjs} +5 -5
- package/fesm2022/{acorex-platform-module-auth-client-profile-activity-chart.component-CFaRGMKu.mjs.map → acorex-platform-module-auth-client-profile-activity-chart.component-D4bqeKCd.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-auth-client-profile-delete-account-danger-zone.component-Dx2-o9XL.mjs → acorex-platform-module-auth-client-profile-delete-account-danger-zone.component-DWNbDzDd.mjs} +4 -4
- package/fesm2022/{acorex-platform-module-auth-client-profile-delete-account-danger-zone.component-Dx2-o9XL.mjs.map → acorex-platform-module-auth-client-profile-delete-account-danger-zone.component-DWNbDzDd.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-auth-client-profile-page-component.provider-1Spuexhb.mjs → acorex-platform-module-auth-client-profile-page-component.provider-DLTbTEe6.mjs} +4 -4
- package/fesm2022/{acorex-platform-module-auth-client-profile-page-component.provider-1Spuexhb.mjs.map → acorex-platform-module-auth-client-profile-page-component.provider-DLTbTEe6.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-auth-client-profile-page.component-CGs24n0j.mjs → acorex-platform-module-auth-client-profile-page.component-BhmMsO3g.mjs} +9 -7
- package/fesm2022/acorex-platform-module-auth-client-profile-page.component-BhmMsO3g.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-auth-client-pwa-install.component-BJOvT0hW.mjs +84 -0
- package/fesm2022/acorex-platform-module-auth-client-pwa-install.component-BJOvT0hW.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-auth-client-register-password.component-BlOn9609.mjs → acorex-platform-module-auth-client-register-password.component-M-ayP7oO.mjs} +7 -7
- package/fesm2022/{acorex-platform-module-auth-client-register-password.component-BlOn9609.mjs.map → acorex-platform-module-auth-client-register-password.component-M-ayP7oO.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-auth-client-register.module-CpoYf5uG.mjs → acorex-platform-module-auth-client-register.module-Qa3ovje0.mjs} +4 -4
- package/fesm2022/{acorex-platform-module-auth-client-register.module-CpoYf5uG.mjs.map → acorex-platform-module-auth-client-register.module-Qa3ovje0.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-auth-client-remove-pin-code.command-Da7ryul6.mjs → acorex-platform-module-auth-client-remove-pin-code.command-BenNCyt6.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-auth-client-remove-pin-code.command-Da7ryul6.mjs.map → acorex-platform-module-auth-client-remove-pin-code.command-BenNCyt6.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-auth-client-reset-password.component-D0nxlhJm.mjs → acorex-platform-module-auth-client-reset-password.component-BQfKSqpW.mjs} +6 -6
- package/fesm2022/{acorex-platform-module-auth-client-reset-password.component-D0nxlhJm.mjs.map → acorex-platform-module-auth-client-reset-password.component-BQfKSqpW.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-auth-client-result.component-Bo1QkwMu.mjs → acorex-platform-module-auth-client-result.component-PhPaEAgh.mjs} +3 -3
- package/fesm2022/{acorex-platform-module-auth-client-result.component-Bo1QkwMu.mjs.map → acorex-platform-module-auth-client-result.component-PhPaEAgh.mjs.map} +1 -1
- package/fesm2022/acorex-platform-module-auth-client-routes-90eFjxx8.mjs +17 -0
- package/fesm2022/acorex-platform-module-auth-client-routes-90eFjxx8.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-auth-client-session-limit.component-DH58dRba.mjs → acorex-platform-module-auth-client-session-limit.component-Dc6TIn-2.mjs} +3 -3
- package/fesm2022/{acorex-platform-module-auth-client-session-limit.component-DH58dRba.mjs.map → acorex-platform-module-auth-client-session-limit.component-Dc6TIn-2.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-auth-client-session-lock-overlay.component-cDCrwNRV.mjs → acorex-platform-module-auth-client-session-lock-overlay.component-ChigSAI-.mjs} +7 -7
- package/fesm2022/{acorex-platform-module-auth-client-session-lock-overlay.component-cDCrwNRV.mjs.map → acorex-platform-module-auth-client-session-lock-overlay.component-ChigSAI-.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-auth-client-set-pin-code.command-FjM1kzUj.mjs → acorex-platform-module-auth-client-set-pin-code.command-CefSbJz8.mjs} +3 -3
- package/fesm2022/{acorex-platform-module-auth-client-set-pin-code.command-FjM1kzUj.mjs.map → acorex-platform-module-auth-client-set-pin-code.command-CefSbJz8.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-auth-client-set-pin-code.component-BgEgdFxQ.mjs → acorex-platform-module-auth-client-set-pin-code.component-DqFW_4rM.mjs} +6 -6
- package/fesm2022/{acorex-platform-module-auth-client-set-pin-code.component-BgEgdFxQ.mjs.map → acorex-platform-module-auth-client-set-pin-code.component-DqFW_4rM.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-auth-client-settings.provider-DGiK-MmW.mjs → acorex-platform-module-auth-client-settings.provider-DsKsZrOC.mjs} +18 -13
- package/fesm2022/acorex-platform-module-auth-client-settings.provider-DsKsZrOC.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-auth-client-signout-command-B7n_Fn4P.mjs → acorex-platform-module-auth-client-signout-command-D4Qgv7q2.mjs} +7 -1
- package/fesm2022/acorex-platform-module-auth-client-signout-command-D4Qgv7q2.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-auth-client-tenant-chooser.component-B8CNqHx5.mjs → acorex-platform-module-auth-client-tenant-chooser.component-DCdRCf1m.mjs} +5 -5
- package/fesm2022/{acorex-platform-module-auth-client-tenant-chooser.component-B8CNqHx5.mjs.map → acorex-platform-module-auth-client-tenant-chooser.component-DCdRCf1m.mjs.map} +1 -1
- package/fesm2022/acorex-platform-module-auth-client-two-factor-challenge.storage-mi0UD7Sc.mjs +48 -0
- package/fesm2022/acorex-platform-module-auth-client-two-factor-challenge.storage-mi0UD7Sc.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-auth-client-two-factor-code.component-CtSv3MQu.mjs +200 -0
- package/fesm2022/acorex-platform-module-auth-client-two-factor-code.component-CtSv3MQu.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-auth-client-two-factor.module-CI8KC5M_.mjs → acorex-platform-module-auth-client-two-factor.module-B7tETPbq.mjs} +10 -5
- package/fesm2022/acorex-platform-module-auth-client-two-factor.module-B7tETPbq.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-auth-client-view-login-history.command-Cqb27L-l.mjs → acorex-platform-module-auth-client-view-login-history.command-CKPbyVWd.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-auth-client-view-login-history.command-Cqb27L-l.mjs.map → acorex-platform-module-auth-client-view-login-history.command-CKPbyVWd.mjs.map} +1 -1
- package/fesm2022/acorex-platform-module-auth-client-waiting-room.component-IAVIt1fY.mjs +165 -0
- package/fesm2022/acorex-platform-module-auth-client-waiting-room.component-IAVIt1fY.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-auth-client-welcome-onboarding-page.component-C2WYgv4l.mjs +813 -0
- package/fesm2022/acorex-platform-module-auth-client-welcome-onboarding-page.component-C2WYgv4l.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-auth-client-welcome-onboarding.command-Ck1A26BI.mjs +59 -0
- package/fesm2022/acorex-platform-module-auth-client-welcome-onboarding.command-Ck1A26BI.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-auth-client.mjs +1 -1
- package/package.json +2 -2
- package/types/acorex-platform-module-auth-client-contracts.d.ts +13 -3
- package/types/acorex-platform-module-auth-client.d.ts +60 -2
- package/fesm2022/acorex-platform-module-auth-client-acorex-platform-module-auth-client-CRl74b8g.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-auth-client-blank.layout-BCXNPgrp.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-auth-client-change-photo.command-CzO3A7OG.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-auth-client-edit-account-info.command-CD9IrimO.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-auth-client-password.component-BoWDVby5.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-auth-client-profile-page.component-CGs24n0j.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-auth-client-routes-B6iJHJ60.mjs +0 -13
- package/fesm2022/acorex-platform-module-auth-client-routes-B6iJHJ60.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-auth-client-settings.provider-DGiK-MmW.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-auth-client-signout-command-B7n_Fn4P.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-auth-client-two-factor-code.component-BrqfaY8i.mjs +0 -40
- package/fesm2022/acorex-platform-module-auth-client-two-factor-code.component-BrqfaY8i.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-auth-client-two-factor.module-CI8KC5M_.mjs.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-platform-module-auth-client-contracts.mjs","sources":["../../../../libs/modules/auth/contracts/src/commands.keys.ts","../../../../libs/modules/auth/contracts/src/menu.keys.ts","../../../../libs/modules/auth/contracts/src/permission.keys.ts","../../../../libs/modules/auth/contracts/src/root-config.ts","../../../../libs/modules/auth/contracts/src/settings.keys.ts","../../../../libs/modules/auth/contracts/src/index.ts","../../../../libs/modules/auth/contracts/src/acorex-platform-module-auth-client-contracts.ts"],"sourcesContent":["//#region ---- Command keys ----\n\nexport const AXMAuthCommandKeys = {\n Profile: {\n Show: 'auth:profile',\n ChangePhoto: 'auth:change-photo',\n EditAccountInfo: 'auth:edit-account-info',\n ComingSoon: 'auth:profile-coming-soon',\n },\n Session: {\n Signout: 'auth:signout',\n OpenSessions: 'auth:open-sessions',\n LockScreen: 'auth:lock-screen',\n },\n Security: {\n ChangePassword: 'auth:change-password',\n SetPinCode: 'auth:set-pin-code',\n RemovePinCode: 'auth:remove-pin-code',\n ViewLoginHistory: 'auth:view-login-history',\n EditSignature: 'auth:edit-signature',\n },\n} as const;\n\n/** Scheduled purge of DeviceSessions idle past the InactiveSessionTermination setting. */\nexport const AXM_AUTH_INACTIVE_SESSION_TERMINATION_PURGE_COMMAND_KEY =\n 'auth.inactive-session.terminate' as const;\n\n//#endregion\n","export const AXPAuthMenuKeys = {} as const;\n\n","/**\n * Auth stub — maps legacy Management to Administration Access.\n * Prefer {@link AXPAdministrationPermissionKeys} from security-management contracts when wiring real checks.\n */\nexport const AXPAdministrationPermissionKeys = {\n Access: 'Administration:Permission:Access',\n} as const;\n\n/**\n * @deprecated Prefer Administration Access / conceptual keys.\n */\nexport const AXMPermissionsKeys = {\n Auth: {\n Management: AXPAdministrationPermissionKeys.Access,\n },\n} as const;\n","const config = {\n i18n: 'auth',\n module: 'Auth',\n};\n\nexport const RootConfig = {\n config,\n module: {\n route: 'auth',\n name: config.module,\n title: '@auth:module.title',\n icon: 'fa-light fa-shield-keyhole',\n },\n /**\n * Platform schedule: revoke DeviceSessions idle longer than\n * {@link AXPAuthSettings.InactiveSessionTermination} (user override → tenant default).\n * Cron every minute so the 1-minute option is testable.\n */\n inactiveSessionTermination: {\n providerKey: 'auth',\n defaultCron: '* * * * *',\n },\n} as const;\n","import type { AXPMultiLanguageString } from '@acorex-platform/framework-shared/core';\n\n//#region ----- Auth setting keys -----\n\nexport enum AXPAuthSettings {\n TwoFactorAuth = 'Auth:Setting:Authentication.TwoFactorAuth',\n PasswordComplexity = 'Auth:Setting:Authentication.PasswordComplexity',\n PasswordExpiryDays = 'Auth:Setting:Authentication.PasswordExpiryDays',\n MaxLoginAttempts = 'Auth:Setting:Authentication.MaxLoginAttempts',\n LockoutDuration = 'Auth:Setting:Authentication.LockoutDuration',\n CaptchaAttemptThreshold = 'Auth:Setting:Authentication.CaptchaAttemptThreshold',\n\n /** Platform sign-in page branding (multi-language string). */\n SignInPageSlogan = 'Auth:Setting:SignInPage.Slogan',\n SignInPageDescription = 'Auth:Setting:SignInPage.Description',\n\n /** Platform sign-up policy. */\n SignUpEnabled = 'Auth:Setting:SignUp.Enabled',\n SignUpUrl = 'Auth:Setting:SignUp.Url',\n\n /** Platform sign-in credential UX + default strategy. */\n SignInCredentialType = 'Auth:Setting:SignIn.CredentialType',\n SignInDefaultStrategy = 'Auth:Setting:SignIn.DefaultStrategy',\n\n LockWhenIdleEnabled = 'Auth:Setting:SessionManagement.LockWhenIdleEnabled',\n LockWhenIdleMinutes = 'Auth:Setting:SessionManagement.LockWhenIdleMinutes',\n InactiveSessionTermination = 'Auth:Setting:SessionManagement.InactiveSessionTermination',\n MaxActiveDeviceSessions = 'Auth:Setting:SessionManagement.MaxActiveDeviceSessions',\n}\n\nexport const AXPAuthInactiveSessionTerminationOptions = {\n OneMinute: 'oneMinute',\n OneWeek: 'oneWeek',\n OneMonth: 'oneMonth',\n ThreeMonths: 'threeMonths',\n SixMonths: 'sixMonths',\n} as const;\n\nexport type AXPAuthInactiveSessionTerminationValue =\n (typeof AXPAuthInactiveSessionTerminationOptions)[keyof typeof AXPAuthInactiveSessionTerminationOptions];\n\n/** Shared select options for settings UI + Active Sessions modal (i18n title keys). */\nexport const AXP_AUTH_INACTIVE_SESSION_TERMINATION_OPTION_DEFINITIONS: ReadonlyArray<{\n id: AXPAuthInactiveSessionTerminationValue;\n titleKey: string;\n}> = [\n {\n id: AXPAuthInactiveSessionTerminationOptions.OneMinute,\n titleKey: '@auth:settings.session.terminate-old-sessions.options.one-minute',\n },\n {\n id: AXPAuthInactiveSessionTerminationOptions.OneWeek,\n titleKey: '@auth:settings.session.terminate-old-sessions.options.one-week',\n },\n {\n id: AXPAuthInactiveSessionTerminationOptions.OneMonth,\n titleKey: '@auth:settings.session.terminate-old-sessions.options.one-month',\n },\n {\n id: AXPAuthInactiveSessionTerminationOptions.ThreeMonths,\n titleKey: '@auth:settings.session.terminate-old-sessions.options.three-months',\n },\n {\n id: AXPAuthInactiveSessionTerminationOptions.SixMonths,\n titleKey: '@auth:settings.session.terminate-old-sessions.options.six-months',\n },\n];\n\nconst MS_MINUTE = 60_000;\nconst MS_DAY = 24 * 60 * MS_MINUTE;\n\n/** Inactivity window for each stored termination option. */\nexport const AXP_AUTH_INACTIVE_SESSION_TERMINATION_DURATION_MS: Record<\n AXPAuthInactiveSessionTerminationValue,\n number\n> = {\n [AXPAuthInactiveSessionTerminationOptions.OneMinute]: MS_MINUTE,\n [AXPAuthInactiveSessionTerminationOptions.OneWeek]: 7 * MS_DAY,\n [AXPAuthInactiveSessionTerminationOptions.OneMonth]: 30 * MS_DAY,\n [AXPAuthInactiveSessionTerminationOptions.ThreeMonths]: 90 * MS_DAY,\n [AXPAuthInactiveSessionTerminationOptions.SixMonths]: 180 * MS_DAY,\n};\n\nexport const AXP_AUTH_INACTIVE_SESSION_TERMINATION_SETTING_DEFAULTS = {\n [AXPAuthSettings.InactiveSessionTermination]: AXPAuthInactiveSessionTerminationOptions.OneMonth,\n} as const;\n\nexport function isAuthInactiveSessionTerminationValue(\n value: unknown,\n): value is AXPAuthInactiveSessionTerminationValue {\n return (\n typeof value === 'string' &&\n (Object.values(AXPAuthInactiveSessionTerminationOptions) as string[]).includes(value)\n );\n}\n\nexport function resolveAuthInactiveSessionTerminationDurationMs(\n value: unknown,\n): number {\n if (isAuthInactiveSessionTerminationValue(value)) {\n return AXP_AUTH_INACTIVE_SESSION_TERMINATION_DURATION_MS[value];\n }\n return AXP_AUTH_INACTIVE_SESSION_TERMINATION_DURATION_MS[\n AXP_AUTH_INACTIVE_SESSION_TERMINATION_SETTING_DEFAULTS[AXPAuthSettings.InactiveSessionTermination]\n ];\n}\n\n/** Stored values for {@link AXPAuthSettings.SignInCredentialType}. */\nexport const AXPAuthCredentialTypeOptions = {\n UsernamePassword: 'UsernamePassword',\n UsernameEmailPassword: 'UsernameEmailPassword',\n EmailPassword: 'EmailPassword',\n MobilePassword: 'MobilePassword',\n EmailCode: 'EmailCode',\n MobileCode: 'MobileCode',\n} as const;\n\nexport type AXPAuthCredentialTypeValue =\n (typeof AXPAuthCredentialTypeOptions)[keyof typeof AXPAuthCredentialTypeOptions];\n\nexport const AXP_AUTH_LOCKOUT_SETTING_DEFAULTS = {\n [AXPAuthSettings.MaxLoginAttempts]: 5,\n [AXPAuthSettings.LockoutDuration]: 3,\n [AXPAuthSettings.CaptchaAttemptThreshold]: 3,\n} as const;\n\nexport const AXP_AUTH_MAX_ACTIVE_DEVICE_SESSIONS_SETTING_DEFAULTS = {\n [AXPAuthSettings.MaxActiveDeviceSessions]: 0,\n} as const;\n\nexport const AXP_AUTH_SIGN_IN_PAGE_SLOGAN_DEFAULT: AXPMultiLanguageString = {\n 'en-US': 'Welcome',\n 'fa-IR': 'خوش آمدید',\n};\n\nexport const AXP_AUTH_SIGN_IN_PAGE_DESCRIPTION_DEFAULT: AXPMultiLanguageString = {\n 'en-US': 'Sign in to continue to your applications.',\n 'fa-IR': 'برای ادامه به برنامههای خود وارد شوید.',\n};\n\n//#endregion\n","//#region ---- Contracts barrel ----\n\nexport * from './commands.keys';\nexport * from './menu.keys';\nexport * from './permission.keys';\nexport * from './root-config';\nexport * from './settings.keys';\n\n//#endregion\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"acorex-platform-module-auth-client-contracts.mjs","sources":["../../../../libs/modules/auth/contracts/src/commands.keys.ts","../../../../libs/modules/auth/contracts/src/menu.keys.ts","../../../../libs/modules/auth/contracts/src/permission.keys.ts","../../../../libs/modules/auth/contracts/src/root-config.ts","../../../../libs/modules/auth/contracts/src/settings.keys.ts","../../../../libs/modules/auth/contracts/src/index.ts","../../../../libs/modules/auth/contracts/src/acorex-platform-module-auth-client-contracts.ts"],"sourcesContent":["//#region ---- Command keys ----\n\nexport const AXMAuthCommandKeys = {\n Profile: {\n Show: 'auth:profile',\n ChangePhoto: 'auth:change-photo',\n EditAccountInfo: 'auth:edit-account-info',\n ComingSoon: 'auth:profile-coming-soon',\n },\n Session: {\n Signout: 'auth:signout',\n OpenSessions: 'auth:open-sessions',\n LockScreen: 'auth:lock-screen',\n },\n Security: {\n ChangePassword: 'auth:change-password',\n ManageTwoFactor: 'auth:manage-two-factor',\n SetPinCode: 'auth:set-pin-code',\n RemovePinCode: 'auth:remove-pin-code',\n ViewLoginHistory: 'auth:view-login-history',\n EditSignature: 'auth:edit-signature',\n },\n Onboarding: {\n Welcome: 'auth:welcome-onboarding',\n },\n Account: {\n /** Opens `/auth/account/waiting-room` (e.g. from membership-invite inbox action). */\n OpenWaitingRoom: 'auth:open-waiting-room',\n },\n} as const;\n\n/** Scheduled purge of DeviceSessions idle past the InactiveSessionTermination setting. */\nexport const AXM_AUTH_INACTIVE_SESSION_TERMINATION_PURGE_COMMAND_KEY =\n 'auth.inactive-session.terminate' as const;\n\n//#endregion\n","export const AXPAuthMenuKeys = {} as const;\n\n","/**\n * Auth stub — maps legacy Management to Administration Access.\n * Prefer {@link AXPAdministrationPermissionKeys} from security-management contracts when wiring real checks.\n */\nexport const AXPAdministrationPermissionKeys = {\n Access: 'Administration:Permission:Access',\n} as const;\n\n/**\n * @deprecated Prefer Administration Access / conceptual keys.\n */\nexport const AXMPermissionsKeys = {\n Auth: {\n Management: AXPAdministrationPermissionKeys.Access,\n },\n} as const;\n","const config = {\n i18n: 'auth',\n module: 'Auth',\n};\n\nexport const RootConfig = {\n config,\n module: {\n route: 'auth',\n name: config.module,\n title: '@auth:module.title',\n icon: 'fa-light fa-shield-keyhole',\n },\n /**\n * Platform schedule: revoke DeviceSessions idle longer than\n * {@link AXPAuthSettings.InactiveSessionTermination} (user override → tenant default).\n * Cron every minute so the 1-minute option is testable.\n */\n inactiveSessionTermination: {\n providerKey: 'auth',\n defaultCron: '* * * * *',\n },\n} as const;\n","import type { AXPMultiLanguageString } from '@acorex-platform/framework-shared/core';\n\n//#region ----- Auth setting keys -----\n\nexport enum AXPAuthSettings {\n /** User-scoped: login requires verified authenticator enrollment when true. */\n UserTwoFactorEnabled = 'Auth:Setting:User.TwoFactor.Enabled',\n PasswordComplexity = 'Auth:Setting:Authentication.PasswordComplexity',\n PasswordExpiryDays = 'Auth:Setting:Authentication.PasswordExpiryDays',\n MaxLoginAttempts = 'Auth:Setting:Authentication.MaxLoginAttempts',\n LockoutDuration = 'Auth:Setting:Authentication.LockoutDuration',\n CaptchaAttemptThreshold = 'Auth:Setting:Authentication.CaptchaAttemptThreshold',\n\n /** Platform sign-in page branding (multi-language string). */\n SignInPageSlogan = 'Auth:Setting:SignInPage.Slogan',\n SignInPageDescription = 'Auth:Setting:SignInPage.Description',\n\n /** Platform sign-up policy. */\n SignUpEnabled = 'Auth:Setting:SignUp.Enabled',\n SignUpUrl = 'Auth:Setting:SignUp.Url',\n\n /** Platform sign-in credential UX + default strategy. */\n SignInCredentialType = 'Auth:Setting:SignIn.CredentialType',\n SignInDefaultStrategy = 'Auth:Setting:SignIn.DefaultStrategy',\n\n LockWhenIdleEnabled = 'Auth:Setting:SessionManagement.LockWhenIdleEnabled',\n LockWhenIdleMinutes = 'Auth:Setting:SessionManagement.LockWhenIdleMinutes',\n InactiveSessionTermination = 'Auth:Setting:SessionManagement.InactiveSessionTermination',\n MaxActiveDeviceSessions = 'Auth:Setting:SessionManagement.MaxActiveDeviceSessions',\n\n /** User-scoped welcome onboarding progress blob. */\n OnboardingWelcome = 'Auth:Setting:Onboarding.Welcome',\n}\n\nexport const AXPAuthInactiveSessionTerminationOptions = {\n OneWeek: 'oneWeek',\n OneMonth: 'oneMonth',\n ThreeMonths: 'threeMonths',\n SixMonths: 'sixMonths',\n} as const;\n\nexport type AXPAuthInactiveSessionTerminationValue =\n (typeof AXPAuthInactiveSessionTerminationOptions)[keyof typeof AXPAuthInactiveSessionTerminationOptions];\n\n/** Shared select options for settings UI + Active Sessions modal (i18n title keys). */\nexport const AXP_AUTH_INACTIVE_SESSION_TERMINATION_OPTION_DEFINITIONS: ReadonlyArray<{\n id: AXPAuthInactiveSessionTerminationValue;\n titleKey: string;\n}> = [\n {\n id: AXPAuthInactiveSessionTerminationOptions.OneWeek,\n titleKey: '@auth:settings.session.terminate-old-sessions.options.one-week',\n },\n {\n id: AXPAuthInactiveSessionTerminationOptions.OneMonth,\n titleKey: '@auth:settings.session.terminate-old-sessions.options.one-month',\n },\n {\n id: AXPAuthInactiveSessionTerminationOptions.ThreeMonths,\n titleKey: '@auth:settings.session.terminate-old-sessions.options.three-months',\n },\n {\n id: AXPAuthInactiveSessionTerminationOptions.SixMonths,\n titleKey: '@auth:settings.session.terminate-old-sessions.options.six-months',\n },\n];\n\nconst MS_MINUTE = 60_000;\nconst MS_DAY = 24 * 60 * MS_MINUTE;\n\n/** Inactivity window for each stored termination option. */\nexport const AXP_AUTH_INACTIVE_SESSION_TERMINATION_DURATION_MS: Record<\n AXPAuthInactiveSessionTerminationValue,\n number\n> = {\n [AXPAuthInactiveSessionTerminationOptions.OneWeek]: 7 * MS_DAY,\n [AXPAuthInactiveSessionTerminationOptions.OneMonth]: 30 * MS_DAY,\n [AXPAuthInactiveSessionTerminationOptions.ThreeMonths]: 90 * MS_DAY,\n [AXPAuthInactiveSessionTerminationOptions.SixMonths]: 180 * MS_DAY,\n};\n\nexport const AXP_AUTH_INACTIVE_SESSION_TERMINATION_SETTING_DEFAULTS = {\n [AXPAuthSettings.InactiveSessionTermination]: AXPAuthInactiveSessionTerminationOptions.OneMonth,\n} as const;\n\nexport function isAuthInactiveSessionTerminationValue(\n value: unknown,\n): value is AXPAuthInactiveSessionTerminationValue {\n return (\n typeof value === 'string' &&\n (Object.values(AXPAuthInactiveSessionTerminationOptions) as string[]).includes(value)\n );\n}\n\nexport function resolveAuthInactiveSessionTerminationDurationMs(\n value: unknown,\n): number {\n if (isAuthInactiveSessionTerminationValue(value)) {\n return AXP_AUTH_INACTIVE_SESSION_TERMINATION_DURATION_MS[value];\n }\n return AXP_AUTH_INACTIVE_SESSION_TERMINATION_DURATION_MS[\n AXP_AUTH_INACTIVE_SESSION_TERMINATION_SETTING_DEFAULTS[AXPAuthSettings.InactiveSessionTermination]\n ];\n}\n\n/** Stored values for {@link AXPAuthSettings.SignInCredentialType}. */\nexport const AXPAuthCredentialTypeOptions = {\n UsernamePassword: 'UsernamePassword',\n UsernameEmailPassword: 'UsernameEmailPassword',\n EmailPassword: 'EmailPassword',\n MobilePassword: 'MobilePassword',\n EmailCode: 'EmailCode',\n MobileCode: 'MobileCode',\n} as const;\n\nexport type AXPAuthCredentialTypeValue =\n (typeof AXPAuthCredentialTypeOptions)[keyof typeof AXPAuthCredentialTypeOptions];\n\nexport const AXP_AUTH_LOCKOUT_SETTING_DEFAULTS = {\n [AXPAuthSettings.MaxLoginAttempts]: 5,\n [AXPAuthSettings.LockoutDuration]: 3,\n [AXPAuthSettings.CaptchaAttemptThreshold]: 3,\n} as const;\n\nexport const AXP_AUTH_MAX_ACTIVE_DEVICE_SESSIONS_SETTING_DEFAULTS = {\n [AXPAuthSettings.MaxActiveDeviceSessions]: 0,\n} as const;\n\nexport const AXP_AUTH_SIGN_IN_PAGE_SLOGAN_DEFAULT: AXPMultiLanguageString = {\n 'en-US': 'Welcome',\n 'fa-IR': 'خوش آمدید',\n};\n\nexport const AXP_AUTH_SIGN_IN_PAGE_DESCRIPTION_DEFAULT: AXPMultiLanguageString = {\n 'en-US': 'Sign in to continue to your applications.',\n 'fa-IR': 'برای ادامه به برنامههای خود وارد شوید.',\n};\n\n//#endregion\n","//#region ---- Contracts barrel ----\n\nexport * from './commands.keys';\nexport * from './menu.keys';\nexport * from './permission.keys';\nexport * from './root-config';\nexport * from './settings.keys';\n\n//#endregion\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -2,13 +2,15 @@ import { AXToastService } from '@acorex/components/toast';
|
|
|
2
2
|
import { AXTranslationService } from '@acorex/core/translation';
|
|
3
3
|
import { RootConfig } from '@acorex-platform/module-security-management-client/contracts';
|
|
4
4
|
import { AXPSessionService, AXPUserProfileIdentityService } from '@acorex-platform/framework-client/auth';
|
|
5
|
+
import { axpEndCommandSubFlowNavigation } from '@acorex-platform/framework-client/common';
|
|
5
6
|
import { AXPLayoutBuilderService } from '@acorex-platform/framework-client/layout/builder';
|
|
6
7
|
import { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';
|
|
7
8
|
import * as i0 from '@angular/core';
|
|
8
9
|
import { inject, Injectable } from '@angular/core';
|
|
10
|
+
import { Router } from '@angular/router';
|
|
9
11
|
import { isNil, defaultTo, trim, isEmpty } from 'lodash';
|
|
12
|
+
import { c as captureCommandReturnUrl, i as isWelcomeOnboardingRouterUrl, r as restoreWelcomeOnboardingAfterSubFlow, a as restoreCommandReturnUrlAfterSubFlow } from './acorex-platform-module-auth-client-command-return-url.util-mBmtJ7T2.mjs';
|
|
10
13
|
|
|
11
|
-
//#region ---- Edit account info command ----
|
|
12
14
|
/** Opens a self-service dialog for users without an employee record (display name editable; username read-only). */
|
|
13
15
|
class AXPEditAccountInfoCommand {
|
|
14
16
|
constructor() {
|
|
@@ -19,10 +21,11 @@ class AXPEditAccountInfoCommand {
|
|
|
19
21
|
this.identityService = inject(AXPUserProfileIdentityService);
|
|
20
22
|
this.toastService = inject(AXToastService);
|
|
21
23
|
this.translateService = inject(AXTranslationService);
|
|
24
|
+
this.router = inject(Router);
|
|
22
25
|
}
|
|
23
26
|
//#endregion
|
|
24
27
|
//#region ---- Command ----
|
|
25
|
-
async execute() {
|
|
28
|
+
async execute(input = {}) {
|
|
26
29
|
const userId = this.sessionService.user?.id;
|
|
27
30
|
if (isNil(userId)) {
|
|
28
31
|
return {
|
|
@@ -32,6 +35,15 @@ class AXPEditAccountInfoCommand {
|
|
|
32
35
|
},
|
|
33
36
|
};
|
|
34
37
|
}
|
|
38
|
+
const returnUrl = captureCommandReturnUrl(this.router, input.subFlowReturnUrl);
|
|
39
|
+
try {
|
|
40
|
+
return await this.executeDialog(userId, returnUrl);
|
|
41
|
+
}
|
|
42
|
+
finally {
|
|
43
|
+
axpEndCommandSubFlowNavigation();
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
async executeDialog(userId, returnUrl) {
|
|
35
47
|
const userData = this.entityService
|
|
36
48
|
.withEntity(RootConfig.module.name, RootConfig.entities.users.name)
|
|
37
49
|
.data();
|
|
@@ -108,7 +120,16 @@ class AXPEditAccountInfoCommand {
|
|
|
108
120
|
});
|
|
109
121
|
})
|
|
110
122
|
.show();
|
|
111
|
-
|
|
123
|
+
const outcome = result ?? { success: false };
|
|
124
|
+
if (outcome.success) {
|
|
125
|
+
if (isWelcomeOnboardingRouterUrl(returnUrl)) {
|
|
126
|
+
await restoreWelcomeOnboardingAfterSubFlow(this.router, returnUrl);
|
|
127
|
+
}
|
|
128
|
+
else {
|
|
129
|
+
await restoreCommandReturnUrlAfterSubFlow(this.router, returnUrl);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
return outcome;
|
|
112
133
|
}
|
|
113
134
|
//#endregion
|
|
114
135
|
//#region ---- Utility Methods ----
|
|
@@ -126,4 +147,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
126
147
|
}] });
|
|
127
148
|
|
|
128
149
|
export { AXPEditAccountInfoCommand };
|
|
129
|
-
//# sourceMappingURL=acorex-platform-module-auth-client-edit-account-info.command-
|
|
150
|
+
//# sourceMappingURL=acorex-platform-module-auth-client-edit-account-info.command-DulLUfWs.mjs.map
|
package/fesm2022/acorex-platform-module-auth-client-edit-account-info.command-DulLUfWs.mjs.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"acorex-platform-module-auth-client-edit-account-info.command-DulLUfWs.mjs","sources":["../../../../libs/modules/auth/client/src/lib/commands/edit-account-info.command.ts"],"sourcesContent":["import { AXPCommand, type AXPCommandExecuteResultPromise } from '@acorex-platform/framework-shared/runtime';\nimport { AXToastService } from '@acorex/components/toast';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport {RootConfig as SecurityManagementRootConfig} from '@acorex-platform/module-security-management-client/contracts'\nimport {AXMSecurityManagementUsersEntityModel} from '@acorex-platform/module-security-management-client/contracts';\nimport { AXPSessionService, AXPUserProfileIdentityService } from '@acorex-platform/framework-client/auth';\nimport { AXPRuntimeCommandResult } from '@acorex-platform/framework-shared/core';\nimport { axpEndCommandSubFlowNavigation } from '@acorex-platform/framework-client/common';\nimport { AXPLayoutBuilderService } from '@acorex-platform/framework-client/layout/builder';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\n\nimport { inject, Injectable } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { defaultTo, isEmpty, isNil, trim } from 'lodash';\n\nimport {\n captureCommandReturnUrl,\n isWelcomeOnboardingRouterUrl,\n restoreCommandReturnUrlAfterSubFlow,\n restoreWelcomeOnboardingAfterSubFlow,\n} from '../shared/command-return-url.util';\n\n//#region ---- Edit account info command ----\n\nexport type AXPEditAccountInfoCommandInput = {\n /** Explicit return URL for sub-flow restore (welcome onboarding passes its route). */\n subFlowReturnUrl?: string;\n};\n\n/** Opens a self-service dialog for users without an employee record (display name editable; username read-only). */\n@Injectable({ providedIn: 'root' })\nexport class AXPEditAccountInfoCommand implements AXPCommand<AXPEditAccountInfoCommandInput, void> {\n //#region ---- Services & Dependencies ----\n\n private readonly layoutBuilder = inject(AXPLayoutBuilderService);\n private readonly entityService = inject(AXPEntityService);\n private readonly sessionService = inject(AXPSessionService);\n private readonly identityService = inject(AXPUserProfileIdentityService);\n private readonly toastService = inject(AXToastService);\n private readonly translateService = inject(AXTranslationService);\n private readonly router = inject(Router);\n\n //#endregion\n\n //#region ---- Command ----\n\n async execute(input: AXPEditAccountInfoCommandInput = {}): AXPCommandExecuteResultPromise<void> {\n const userId = this.sessionService.user?.id;\n if (isNil(userId)) {\n return {\n success: false,\n message: {\n text: await this.translateService.translateAsync(\n '@auth:profile-page.commands.edit-account-info.messages.not-signed-in',\n ),\n },\n };\n }\n\n const returnUrl = captureCommandReturnUrl(this.router, input.subFlowReturnUrl);\n\n try {\n return await this.executeDialog(userId, returnUrl);\n } finally {\n axpEndCommandSubFlowNavigation();\n }\n }\n\n private async executeDialog(\n userId: string,\n returnUrl: string,\n ): AXPCommandExecuteResultPromise<void> {\n const userData = this.entityService\n .withEntity(\n SecurityManagementRootConfig.module.name,\n SecurityManagementRootConfig.entities.users.name,\n )\n .data<string, AXMSecurityManagementUsersEntityModel>();\n\n const user = await userData.byKey(userId);\n if (isNil(user)) {\n return {\n success: false,\n message: {\n text: await this.translateService.translateAsync(\n '@auth:profile-page.commands.edit-account-info.messages.user-not-found',\n ),\n },\n };\n }\n\n const dialogTitle = await this.translateService.translateAsync(\n '@auth:profile-page.commands.edit-account-info.dialog.title',\n );\n\n const result = await this.layoutBuilder\n .create()\n .dialog<AXPRuntimeCommandResult<void>>((dialog) => {\n dialog\n .setTitle(dialogTitle)\n .setSize('md')\n .setCloseButton(true)\n .setContext({\n username: defaultTo(user.username, ''),\n displayName: defaultTo(user.displayName, ''),\n })\n .content((layout) => {\n layout.flex((flex) => {\n flex\n .setDirection('column')\n .setGap('1rem')\n .formField('@general:terms.contact.username', (field) => {\n field.path('username');\n field.disabled(true);\n field.textBox({\n placeholder: '@general:terms.contact.username',\n });\n })\n .formField('@general:terms.common.display-name', (field) => {\n field.path('displayName');\n field.textBox({\n placeholder: '@general:terms.common.display-name',\n validations: [{ rule: 'required' }],\n });\n });\n });\n })\n .setActions((actions) => {\n actions.cancel('@general:actions.cancel.title');\n actions.submit('@general:actions.save.title');\n })\n .onAction(async (dialogRef) => {\n if (dialogRef.action() === 'cancel') {\n return { success: false };\n }\n\n const form = dialogRef.context() as { username?: string; displayName?: string };\n const displayName = trim(defaultTo(form.displayName, ''));\n\n if (isEmpty(displayName)) {\n await this.showError('@auth:profile-page.commands.edit-account-info.messages.required-fields');\n throw new Error('Display name is required');\n }\n\n dialogRef.setLoading(true);\n try {\n await userData.update(userId, { displayName });\n\n await this.identityService.applySessionPatch({\n title: displayName,\n });\n\n const successTitle = await this.translateService.translateAsync(\n '@auth:profile-page.commands.edit-account-info.messages.success',\n );\n this.toastService.show({ color: 'success', title: successTitle });\n dialogRef.close();\n return { success: true, kind: 'object', data: undefined };\n } finally {\n dialogRef.setLoading(false);\n }\n });\n })\n .show();\n\n const outcome = result ?? { success: false };\n if (outcome.success) {\n if (isWelcomeOnboardingRouterUrl(returnUrl)) {\n await restoreWelcomeOnboardingAfterSubFlow(this.router, returnUrl);\n } else {\n await restoreCommandReturnUrlAfterSubFlow(this.router, returnUrl);\n }\n }\n return outcome;\n }\n\n //#endregion\n\n //#region ---- Utility Methods ----\n\n private async showError(messageKey: string): Promise<void> {\n const content = await this.translateService.translateAsync(messageKey);\n const title = await this.translateService.translateAsync('@general:messages.generic.error.title');\n this.toastService.show({ color: 'danger', title, content, closeButton: true });\n }\n\n //#endregion\n}\n\n//#endregion\n"],"names":["SecurityManagementRootConfig"],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@ import { AXPEntityService } from '@acorex-platform/framework-client/layout/entit
|
|
|
4
4
|
import * as i0 from '@angular/core';
|
|
5
5
|
import { inject, Injectable } from '@angular/core';
|
|
6
6
|
import { isEmpty } from 'lodash';
|
|
7
|
-
import { g as resolveDefaultUserActivityDateRange, h as resolveSmartUserActivityDateRange, i as buildUserActivityDataSourceItem } from './acorex-platform-module-auth-client-acorex-platform-module-auth-client-
|
|
7
|
+
import { g as resolveDefaultUserActivityDateRange, h as resolveSmartUserActivityDateRange, i as buildUserActivityDataSourceItem } from './acorex-platform-module-auth-client-acorex-platform-module-auth-client-C1oSPf12.mjs';
|
|
8
8
|
|
|
9
9
|
//#endregion
|
|
10
10
|
//#region ---- Helpers ----
|
|
@@ -87,4 +87,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
87
87
|
}] });
|
|
88
88
|
|
|
89
89
|
export { AXMGetUserActivityQuery };
|
|
90
|
-
//# sourceMappingURL=acorex-platform-module-auth-client-get-user-activity.query-
|
|
90
|
+
//# sourceMappingURL=acorex-platform-module-auth-client-get-user-activity.query-CV9mdOBi.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-platform-module-auth-client-get-user-activity.query-
|
|
1
|
+
{"version":3,"file":"acorex-platform-module-auth-client-get-user-activity.query-CV9mdOBi.mjs","sources":["../../../../libs/modules/auth/client/src/lib/features/queries/get-user-activity.query.ts"],"sourcesContent":["import {\n runtimeQueryFailure,\n runtimeQuerySuccessObject,\n} from '@acorex-platform/framework-shared/core';\nimport type { AXPQuery, AXPQueryFetchResultPromise } from '@acorex-platform/framework-shared/runtime';\nimport { AXDataSourceFilterOption } from '@acorex/cdk/common';\nimport {\n AXMSecurityManagementDeviceSessionsEntityModel,\n RootConfig as SecurityManagementRootConfig,\n} from '@acorex-platform/module-security-management-client/contracts';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\n\nimport { Injectable, inject } from '@angular/core';\nimport { isEmpty } from 'lodash';\n\nimport {\n AXPUserActivityDataSourceItem,\n AXPUserActivityLoadParams,\n} from '../../shared/datasources/user-activity/user-activity.types';\nimport {\n buildUserActivityDataSourceItem,\n resolveDefaultUserActivityDateRange,\n resolveSmartUserActivityDateRange,\n} from '../../shared/datasources/user-activity/user-activity.utils';\n\n//#region ---- Types ----\n\nexport interface AXMGetUserActivityQueryInput {\n userId: string;\n startDate?: string | Date;\n endDate?: string | Date;\n}\n\n//#endregion\n\n//#region ---- Helpers ----\n\nfunction coerceDate(value: string | Date | undefined, fallback: Date): Date {\n if (value instanceof Date && !Number.isNaN(value.getTime())) {\n return value;\n }\n if (typeof value === 'string' && value.trim()) {\n const parsed = new Date(value);\n if (!Number.isNaN(parsed.getTime())) {\n return parsed;\n }\n }\n return fallback;\n}\n\n//#endregion\n\n//#region ---- Query ----\n\n/**\n * User activity heatmap — replaces the `auth-user-activity` DI data source.\n */\n@Injectable({ providedIn: 'root' })\nexport class AXMGetUserActivityQuery\n implements AXPQuery<AXMGetUserActivityQueryInput, AXPUserActivityDataSourceItem | null>\n{\n //#region ---- Services & Dependencies ----\n\n private readonly entityService = inject(AXPEntityService);\n\n //#endregion\n\n //#region ---- Query Execution ----\n\n async fetch(\n input?: AXMGetUserActivityQueryInput | null,\n ): AXPQueryFetchResultPromise<AXPUserActivityDataSourceItem | null> {\n try {\n if (isEmpty(input?.userId)) {\n return runtimeQuerySuccessObject(null);\n }\n\n const sessions = await this.loadUserSessions(input!.userId);\n let range: { startDate: Date; endDate: Date };\n if (input?.startDate != null && input?.endDate != null) {\n const fallback = resolveDefaultUserActivityDateRange();\n range = {\n startDate: coerceDate(input.startDate, fallback.startDate),\n endDate: coerceDate(input.endDate, fallback.endDate),\n };\n } else {\n range = resolveSmartUserActivityDateRange(sessions, input!.userId);\n }\n const params: AXPUserActivityLoadParams = {\n userId: input!.userId,\n startDate: range.startDate,\n endDate: range.endDate,\n };\n\n const item = buildUserActivityDataSourceItem(params, sessions);\n return runtimeQuerySuccessObject(item);\n } catch (error) {\n return runtimeQueryFailure(\n error instanceof Error ? error.message : 'Unknown error occurred',\n );\n }\n }\n\n //#endregion\n\n //#region ---- Private Methods ----\n\n private async loadUserSessions(\n userId: string,\n ): Promise<AXMSecurityManagementDeviceSessionsEntityModel[]> {\n const response = await this.entityService\n .withEntity(\n SecurityManagementRootConfig.module.name,\n SecurityManagementRootConfig.entities.deviceSessions.name,\n )\n .data<string, AXMSecurityManagementDeviceSessionsEntityModel>()\n .query({\n skip: 0,\n take: 1000,\n filter: {\n field: 'userId',\n operator: { type: 'equal' },\n value: userId,\n } as AXDataSourceFilterOption,\n });\n\n return response.items ?? [];\n }\n\n //#endregion\n}\n\n//#endregion\n"],"names":["SecurityManagementRootConfig"],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
2
|
import { inject, Injectable } from '@angular/core';
|
|
3
|
-
import { j as AXPIdleLockService } from './acorex-platform-module-auth-client-acorex-platform-module-auth-client-
|
|
3
|
+
import { j as AXPIdleLockService } from './acorex-platform-module-auth-client-acorex-platform-module-auth-client-C1oSPf12.mjs';
|
|
4
4
|
|
|
5
5
|
//#region ---- Lock screen command ----
|
|
6
6
|
/** Locks the session overlay when Lock When Idle is enabled. */
|
|
@@ -27,4 +27,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
27
27
|
}] });
|
|
28
28
|
|
|
29
29
|
export { AXPLockScreenCommand };
|
|
30
|
-
//# sourceMappingURL=acorex-platform-module-auth-client-lock-screen.command-
|
|
30
|
+
//# sourceMappingURL=acorex-platform-module-auth-client-lock-screen.command-BH3Q6lJE.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-platform-module-auth-client-lock-screen.command-
|
|
1
|
+
{"version":3,"file":"acorex-platform-module-auth-client-lock-screen.command-BH3Q6lJE.mjs","sources":["../../../../libs/modules/auth/client/src/lib/commands/lock-screen.command.ts"],"sourcesContent":["import { AXPCommand, type AXPCommandExecuteResultPromise } from '@acorex-platform/framework-shared/runtime';\nimport { AXPRuntimeCommandResult } from '@acorex-platform/framework-shared/core';\n\nimport { inject, Injectable } from '@angular/core';\nimport { AXPIdleLockService } from '../shared/services/idle-lock.service';\n\n//#region ---- Lock screen command ----\n\n/** Locks the session overlay when Lock When Idle is enabled. */\n@Injectable({ providedIn: 'root' })\nexport class AXPLockScreenCommand implements AXPCommand {\n //#region ---- Services & Dependencies ----\n\n private readonly idleLockService = inject(AXPIdleLockService);\n\n //#endregion\n\n //#region ---- Command ----\n\n async execute(): AXPCommandExecuteResultPromise<void> {\n await this.idleLockService.refreshLockState();\n\n if (this.idleLockService.canLock()) {\n this.idleLockService.lockScreen();\n }\n\n return { success: true, kind: 'object', data: undefined };\n }\n\n //#endregion\n}\n\n//#endregion\n"],"names":[],"mappings":";;;;AAMA;AAEA;MAEa,oBAAoB,CAAA;AADjC,IAAA,WAAA,GAAA;;AAImB,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,kBAAkB,CAAC;AAiB9D,IAAA;;;AAXC,IAAA,MAAM,OAAO,GAAA;AACX,QAAA,MAAM,IAAI,CAAC,eAAe,CAAC,gBAAgB,EAAE;AAE7C,QAAA,IAAI,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,EAAE;AAClC,YAAA,IAAI,CAAC,eAAe,CAAC,UAAU,EAAE;QACnC;AAEA,QAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE;IAC3D;8GAjBW,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAApB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,cADP,MAAM,EAAA,CAAA,CAAA;;2FACnB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBADhC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
2
|
import { inject, NgModule } from '@angular/core';
|
|
3
3
|
import { ROUTES } from '@angular/router';
|
|
4
|
-
import {
|
|
4
|
+
import { y as AXM_LOGIN_GUARD_TOKEN } from './acorex-platform-module-auth-client-acorex-platform-module-auth-client-C1oSPf12.mjs';
|
|
5
5
|
|
|
6
6
|
function routesFacory() {
|
|
7
7
|
const loginGuard = inject(AXM_LOGIN_GUARD_TOKEN);
|
|
@@ -9,7 +9,7 @@ function routesFacory() {
|
|
|
9
9
|
{
|
|
10
10
|
path: 'login',
|
|
11
11
|
canActivate: [loginGuard],
|
|
12
|
-
loadComponent: () => import('./acorex-platform-module-auth-client-password.component-
|
|
12
|
+
loadComponent: () => import('./acorex-platform-module-auth-client-password.component-ddh-_0k3.mjs').then((c) => c.AXPLoginPasswordComponent),
|
|
13
13
|
},
|
|
14
14
|
];
|
|
15
15
|
return routes;
|
|
@@ -41,4 +41,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
41
41
|
}] });
|
|
42
42
|
|
|
43
43
|
export { AXPSignInModule };
|
|
44
|
-
//# sourceMappingURL=acorex-platform-module-auth-client-login.module-
|
|
44
|
+
//# sourceMappingURL=acorex-platform-module-auth-client-login.module-DtvnPpBH.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-platform-module-auth-client-login.module-
|
|
1
|
+
{"version":3,"file":"acorex-platform-module-auth-client-login.module-DtvnPpBH.mjs","sources":["../../../../libs/modules/auth/client/src/lib/pages/login/login.module.ts"],"sourcesContent":["import { NgModule, inject } from '@angular/core';\nimport { ROUTES, Routes } from '@angular/router';\nimport { AXM_LOGIN_GUARD_TOKEN } from '../../auth.config';\n\nfunction routesFacory() {\n const loginGuard = inject(AXM_LOGIN_GUARD_TOKEN);\n const routes: Routes = [\n {\n path: 'login',\n canActivate: [loginGuard],\n loadComponent: () =>\n import('./password/password.component').then((c) => c.AXPLoginPasswordComponent),\n },\n ];\n return routes;\n}\n\n@NgModule({\n imports: [],\n exports: [],\n providers: [\n {\n provide: ROUTES,\n multi: true,\n useFactory: routesFacory,\n },\n ],\n})\nexport class AXPSignInModule {}\n"],"names":[],"mappings":";;;;;AAIA,SAAS,YAAY,GAAA;AACnB,IAAA,MAAM,UAAU,GAAG,MAAM,CAAC,qBAAqB,CAAC;AAChD,IAAA,MAAM,MAAM,GAAW;AACrB,QAAA;AACE,YAAA,IAAI,EAAE,OAAO;YACb,WAAW,EAAE,CAAC,UAAU,CAAC;AACzB,YAAA,aAAa,EAAE,MACb,OAAO,sEAA+B,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,yBAAyB,CAAC;AACnF,SAAA;KACF;AACD,IAAA,OAAO,MAAM;AACf;MAaa,eAAe,CAAA;8GAAf,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;+GAAf,eAAe,EAAA,CAAA,CAAA;AAAf,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,eAAe,EAAA,SAAA,EARf;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,MAAM;AACf,gBAAA,KAAK,EAAE,IAAI;AACX,gBAAA,UAAU,EAAE,YAAY;AACzB,aAAA;AACF,SAAA,EAAA,CAAA,CAAA;;2FAEU,eAAe,EAAA,UAAA,EAAA,CAAA;kBAX3B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE,EAAE;AACX,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;;;"}
|