@acorex-platform/module-security-management-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-security-management-client-acorex-platform-module-security-management-client-Ddzg9VYV.mjs → acorex-platform-module-security-management-client-acorex-platform-module-security-management-client-D-VISihP.mjs} +116 -37
- package/fesm2022/acorex-platform-module-security-management-client-acorex-platform-module-security-management-client-D-VISihP.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-security-management-client-cancel-invitation.command-C3iaOEKI.mjs +74 -0
- package/fesm2022/acorex-platform-module-security-management-client-cancel-invitation.command-C3iaOEKI.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-security-management-client-contracts-entities-device-sessions.mjs +22 -0
- package/fesm2022/acorex-platform-module-security-management-client-contracts-entities-device-sessions.mjs.map +1 -1
- package/fesm2022/acorex-platform-module-security-management-client-contracts-entities-identity-provider.mjs +22 -0
- package/fesm2022/acorex-platform-module-security-management-client-contracts-entities-identity-provider.mjs.map +1 -1
- package/fesm2022/acorex-platform-module-security-management-client-contracts-entities-policy.mjs +21 -0
- package/fesm2022/acorex-platform-module-security-management-client-contracts-entities-policy.mjs.map +1 -1
- package/fesm2022/acorex-platform-module-security-management-client-contracts-entities-profile.mjs +21 -0
- package/fesm2022/acorex-platform-module-security-management-client-contracts-entities-profile.mjs.map +1 -1
- package/fesm2022/acorex-platform-module-security-management-client-contracts-entities-role-permission.mjs +22 -0
- package/fesm2022/acorex-platform-module-security-management-client-contracts-entities-role-permission.mjs.map +1 -1
- package/fesm2022/acorex-platform-module-security-management-client-contracts-entities-roles.mjs +22 -0
- package/fesm2022/acorex-platform-module-security-management-client-contracts-entities-roles.mjs.map +1 -1
- package/fesm2022/acorex-platform-module-security-management-client-contracts-entities-user-role.mjs +22 -0
- package/fesm2022/acorex-platform-module-security-management-client-contracts-entities-user-role.mjs.map +1 -1
- package/fesm2022/acorex-platform-module-security-management-client-contracts-entities-user-two-factor.mjs +182 -0
- package/fesm2022/acorex-platform-module-security-management-client-contracts-entities-user-two-factor.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-security-management-client-contracts-entities-users.mjs +165 -3
- package/fesm2022/acorex-platform-module-security-management-client-contracts-entities-users.mjs.map +1 -1
- package/fesm2022/{acorex-platform-module-security-management-client-contracts-entity-catalog-acorex-platform-module-security-management-client-contracts-entity-catalog-lSVw6AfZ.mjs → acorex-platform-module-security-management-client-contracts-entity-catalog-acorex-platform-module-security-management-client-contracts-entity-catalog-B4oiF8FO.mjs} +16 -9
- package/fesm2022/acorex-platform-module-security-management-client-contracts-entity-catalog-acorex-platform-module-security-management-client-contracts-entity-catalog-B4oiF8FO.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-security-management-client-contracts-entity-catalog-device-sessions.entity-Dvpk0Zbp.mjs → acorex-platform-module-security-management-client-contracts-entity-catalog-device-sessions.entity-CU-5X-qu.mjs} +18 -2
- package/fesm2022/acorex-platform-module-security-management-client-contracts-entity-catalog-device-sessions.entity-CU-5X-qu.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-security-management-client-contracts-entity-catalog-identity-provider.entity-Tdv5yyXZ.mjs → acorex-platform-module-security-management-client-contracts-entity-catalog-identity-provider.entity-Bld1buTd.mjs} +18 -2
- package/fesm2022/acorex-platform-module-security-management-client-contracts-entity-catalog-identity-provider.entity-Bld1buTd.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-security-management-client-contracts-entity-catalog-policy.entity-CseeIcOT.mjs → acorex-platform-module-security-management-client-contracts-entity-catalog-policy.entity-DZVzHzVM.mjs} +17 -2
- package/fesm2022/acorex-platform-module-security-management-client-contracts-entity-catalog-policy.entity-DZVzHzVM.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-security-management-client-contracts-entity-catalog-profile.entity-DY1FIReo.mjs → acorex-platform-module-security-management-client-contracts-entity-catalog-profile.entity-BCy5fNc9.mjs} +17 -2
- package/fesm2022/acorex-platform-module-security-management-client-contracts-entity-catalog-profile.entity-BCy5fNc9.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-security-management-client-contracts-entity-catalog-role-permission.entity-Bu6GOmpN.mjs → acorex-platform-module-security-management-client-contracts-entity-catalog-role-permission.entity-DcvYjfZm.mjs} +18 -2
- package/fesm2022/acorex-platform-module-security-management-client-contracts-entity-catalog-role-permission.entity-DcvYjfZm.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-security-management-client-contracts-entity-catalog-roles.entity-Gm_ZliWA.mjs → acorex-platform-module-security-management-client-contracts-entity-catalog-roles.entity-lNKDIDry.mjs} +18 -2
- package/fesm2022/acorex-platform-module-security-management-client-contracts-entity-catalog-roles.entity-lNKDIDry.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-security-management-client-contracts-entity-catalog-user-role.entity-QDvbO4dK.mjs → acorex-platform-module-security-management-client-contracts-entity-catalog-user-role.entity-DKII6o5N.mjs} +18 -2
- package/fesm2022/acorex-platform-module-security-management-client-contracts-entity-catalog-user-role.entity-DKII6o5N.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-security-management-client-contracts-entity-catalog-user-two-factor.entity-ge21b3mE.mjs +100 -0
- package/fesm2022/acorex-platform-module-security-management-client-contracts-entity-catalog-user-two-factor.entity-ge21b3mE.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-security-management-client-contracts-entity-catalog-users.entity-5Or50mGu.mjs → acorex-platform-module-security-management-client-contracts-entity-catalog-users.entity-CJ7x5rjC.mjs} +161 -5
- package/fesm2022/acorex-platform-module-security-management-client-contracts-entity-catalog-users.entity-CJ7x5rjC.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-security-management-client-contracts-entity-catalog.mjs +1 -1
- package/fesm2022/acorex-platform-module-security-management-client-contracts.mjs +179 -1
- package/fesm2022/acorex-platform-module-security-management-client-contracts.mjs.map +1 -1
- package/fesm2022/{acorex-platform-module-security-management-client-index-C1rCxs2K.mjs → acorex-platform-module-security-management-client-index-CT-N83bV.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-security-management-client-index-C1rCxs2K.mjs.map → acorex-platform-module-security-management-client-index-CT-N83bV.mjs.map} +1 -1
- package/fesm2022/acorex-platform-module-security-management-client-invitation-target.util-BAXQZwLW.mjs +41 -0
- package/fesm2022/acorex-platform-module-security-management-client-invitation-target.util-BAXQZwLW.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-security-management-client-invite-user.command-kFXjLdxy.mjs +143 -0
- package/fesm2022/acorex-platform-module-security-management-client-invite-user.command-kFXjLdxy.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-security-management-client-local-entities.mjs +1 -0
- package/fesm2022/acorex-platform-module-security-management-client-local-entities.mjs.map +1 -1
- package/fesm2022/acorex-platform-module-security-management-client-resend-invitation.command-D9Ijk565.mjs +76 -0
- package/fesm2022/acorex-platform-module-security-management-client-resend-invitation.command-D9Ijk565.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-security-management-client-reset-two-factor.command-psTDKoNf.mjs +96 -0
- package/fesm2022/acorex-platform-module-security-management-client-reset-two-factor.command-psTDKoNf.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-security-management-client.mjs +1 -1
- package/package.json +5 -1
- package/types/acorex-platform-module-security-management-client-contracts-entities-user-two-factor.d.ts +9 -0
- package/types/acorex-platform-module-security-management-client-contracts.d.ts +224 -4
- package/fesm2022/acorex-platform-module-security-management-client-acorex-platform-module-security-management-client-Ddzg9VYV.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-security-management-client-contracts-entity-catalog-acorex-platform-module-security-management-client-contracts-entity-catalog-lSVw6AfZ.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-security-management-client-contracts-entity-catalog-device-sessions.entity-Dvpk0Zbp.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-security-management-client-contracts-entity-catalog-identity-provider.entity-Tdv5yyXZ.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-security-management-client-contracts-entity-catalog-policy.entity-CseeIcOT.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-security-management-client-contracts-entity-catalog-profile.entity-DY1FIReo.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-security-management-client-contracts-entity-catalog-role-permission.entity-Bu6GOmpN.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-security-management-client-contracts-entity-catalog-roles.entity-Gm_ZliWA.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-security-management-client-contracts-entity-catalog-user-role.entity-QDvbO4dK.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-security-management-client-contracts-entity-catalog-users.entity-5Or50mGu.mjs.map +0 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { AXPWidgetsCatalog, AXPWidgetsList } from '@acorex-platform/framework-shared/core';
|
|
2
|
-
import { createAllQueryView,
|
|
3
|
-
import { R as RootConfig } from './acorex-platform-module-security-management-client-contracts-entity-catalog-acorex-platform-module-security-management-client-contracts-entity-catalog-
|
|
1
|
+
import { AXPSystemActionType, AXPWidgetsCatalog, AXPWidgetsList } from '@acorex-platform/framework-shared/core';
|
|
2
|
+
import { createAllQueryView, createQueryView, AXPEntityCommandScope, entityMasterCrudActions, entityMasterRecordActions } from '@acorex-platform/framework-shared/entity';
|
|
3
|
+
import { R as RootConfig } from './acorex-platform-module-security-management-client-contracts-entity-catalog-acorex-platform-module-security-management-client-contracts-entity-catalog-B4oiF8FO.mjs';
|
|
4
4
|
|
|
5
5
|
/** Status provider key for `accessState` on SecurityManagement.User (transitions define editable paths in the status UI). */
|
|
6
6
|
const AXM_USER_ACCESS_STATE_DEFINITION_KEY = 'security-management.access-state.user';
|
|
@@ -13,6 +13,21 @@ const AXMSecurityManagementServerCommands = {
|
|
|
13
13
|
SendPasswordResetEmail: 'SecurityManagement:Server:SendPasswordResetEmail',
|
|
14
14
|
CompletePasswordReset: 'SecurityManagement:Server:CompletePasswordReset',
|
|
15
15
|
ChangeOwnPassword: 'SecurityManagement:Server:ChangeOwnPassword',
|
|
16
|
+
InviteUser: 'SecurityManagement:Server:InviteUser',
|
|
17
|
+
ResendInvitation: 'SecurityManagement:Server:ResendInvitation',
|
|
18
|
+
CancelInvitation: 'SecurityManagement:Server:CancelInvitation',
|
|
19
|
+
AcceptInvitation: 'SecurityManagement:Server:AcceptInvitation',
|
|
20
|
+
ListMyPendingInvitations: 'SecurityManagement:Server:ListMyPendingInvitations',
|
|
21
|
+
DeclineInvitation: 'SecurityManagement:Server:DeclineInvitation',
|
|
22
|
+
AcceptMyInvitation: 'SecurityManagement:Server:AcceptMyInvitation',
|
|
23
|
+
StartTwoFactorEnrollment: 'SecurityManagement:Server:StartTwoFactorEnrollment',
|
|
24
|
+
ConfirmTwoFactorEnrollment: 'SecurityManagement:Server:ConfirmTwoFactorEnrollment',
|
|
25
|
+
DisableTwoFactor: 'SecurityManagement:Server:DisableTwoFactor',
|
|
26
|
+
GenerateTwoFactorRecoveryCodes: 'SecurityManagement:Server:GenerateTwoFactorRecoveryCodes',
|
|
27
|
+
GetTwoFactorStatus: 'SecurityManagement:Server:GetTwoFactorStatus',
|
|
28
|
+
AdminResetTwoFactor: 'SecurityManagement:Server:AdminResetTwoFactor',
|
|
29
|
+
/** Public — completes login after password challenge (TOTP or recovery). */
|
|
30
|
+
VerifyTwoFactorLogin: 'SecurityManagement:Server:VerifyTwoFactorLogin',
|
|
16
31
|
};
|
|
17
32
|
/** Stable codes for self-service password change (client maps to i18n). */
|
|
18
33
|
const AXM_CHANGE_OWN_PASSWORD_ERROR_CODES = {
|
|
@@ -23,6 +38,34 @@ const AXM_CHANGE_OWN_PASSWORD_ERROR_CODES = {
|
|
|
23
38
|
};
|
|
24
39
|
/** Client/UI action key (confirm dialog → server send). */
|
|
25
40
|
const AXM_USER_SEND_PASSWORD_RESET_COMMAND = 'SecurityManagement:User:SendPasswordResetEmail';
|
|
41
|
+
/** Client/UI action key (confirm dialog → server admin reset 2FA). */
|
|
42
|
+
const AXM_USER_RESET_TWO_FACTOR_COMMAND = 'SecurityManagement:User:ResetTwoFactor';
|
|
43
|
+
/** Client/UI action keys for invite flows. */
|
|
44
|
+
const AXM_USER_INVITE_COMMAND = 'SecurityManagement:User:Invite';
|
|
45
|
+
const AXM_USER_RESEND_INVITATION_COMMAND = 'SecurityManagement:User:ResendInvitation';
|
|
46
|
+
const AXM_USER_CANCEL_INVITATION_COMMAND = 'SecurityManagement:User:CancelInvitation';
|
|
47
|
+
/** Stable codes for public invitation accept (client maps invalid/expired to the page, not a toast). */
|
|
48
|
+
const AXM_ACCEPT_INVITATION_ERROR_CODES = {
|
|
49
|
+
Invalid: 'ACCEPT_INVITATION_INVALID',
|
|
50
|
+
Expired: 'ACCEPT_INVITATION_EXPIRED',
|
|
51
|
+
PasswordRequired: 'ACCEPT_INVITATION_PASSWORD_REQUIRED',
|
|
52
|
+
};
|
|
53
|
+
/** Stable codes for two-factor self-service and login challenge (client maps to i18n). */
|
|
54
|
+
const AXM_TWO_FACTOR_ERROR_CODES = {
|
|
55
|
+
NotSignedIn: 'TWO_FACTOR_NOT_SIGNED_IN',
|
|
56
|
+
InvalidInput: 'TWO_FACTOR_INVALID_INPUT',
|
|
57
|
+
IncorrectPassword: 'TWO_FACTOR_INCORRECT_PASSWORD',
|
|
58
|
+
IncorrectCode: 'TWO_FACTOR_INCORRECT_CODE',
|
|
59
|
+
AlreadyEnabled: 'TWO_FACTOR_ALREADY_ENABLED',
|
|
60
|
+
NotEnabled: 'TWO_FACTOR_NOT_ENABLED',
|
|
61
|
+
EnrollmentExpired: 'TWO_FACTOR_ENROLLMENT_EXPIRED',
|
|
62
|
+
ChallengeExpired: 'TWO_FACTOR_CHALLENGE_EXPIRED',
|
|
63
|
+
RateLimited: 'TWO_FACTOR_RATE_LIMITED',
|
|
64
|
+
InvalidConfiguration: 'TWO_FACTOR_INVALID_CONFIGURATION',
|
|
65
|
+
ProofRequired: 'TWO_FACTOR_PROOF_REQUIRED',
|
|
66
|
+
UserNotFound: 'TWO_FACTOR_USER_NOT_FOUND',
|
|
67
|
+
Forbidden: 'TWO_FACTOR_FORBIDDEN',
|
|
68
|
+
};
|
|
26
69
|
//#endregion
|
|
27
70
|
|
|
28
71
|
const USER_ROLES_PAGE_COMPONENT_KEY = 'user-roles-page';
|
|
@@ -33,6 +76,23 @@ async function usersFactory() {
|
|
|
33
76
|
name: RootConfig.entities.users.name,
|
|
34
77
|
title: RootConfig.entities.users.title,
|
|
35
78
|
icon: RootConfig.entities.users.icon,
|
|
79
|
+
searchTags: [
|
|
80
|
+
'user',
|
|
81
|
+
'users',
|
|
82
|
+
'account',
|
|
83
|
+
'identity',
|
|
84
|
+
'sign-in',
|
|
85
|
+
'password',
|
|
86
|
+
'access-state',
|
|
87
|
+
'lifecycle',
|
|
88
|
+
'authorization',
|
|
89
|
+
'home-tenant',
|
|
90
|
+
'کاربر',
|
|
91
|
+
'کاربران',
|
|
92
|
+
'رمز عبور',
|
|
93
|
+
'ورود',
|
|
94
|
+
'حساب کاربری',
|
|
95
|
+
],
|
|
36
96
|
formats: {
|
|
37
97
|
individual: RootConfig.entities.users.title,
|
|
38
98
|
plural: RootConfig.entities.users.titlePlural,
|
|
@@ -218,6 +278,46 @@ async function usersFactory() {
|
|
|
218
278
|
},
|
|
219
279
|
},
|
|
220
280
|
},
|
|
281
|
+
{
|
|
282
|
+
/**
|
|
283
|
+
* Display-only (like rolesList). Never persisted on User documents.
|
|
284
|
+
* Hydrated from session-tenant TenantUser.statusId (+ acceptedAt → accepted).
|
|
285
|
+
*/
|
|
286
|
+
name: 'membershipStatusId',
|
|
287
|
+
title: '@security-management:users.entities.user.fields.membership-status.title',
|
|
288
|
+
groupId: 'user-account-access',
|
|
289
|
+
schema: {
|
|
290
|
+
dataType: 'string',
|
|
291
|
+
readonly: true,
|
|
292
|
+
nullable: true,
|
|
293
|
+
visible: false,
|
|
294
|
+
interface: {
|
|
295
|
+
type: AXPWidgetsList.Advanced.Status,
|
|
296
|
+
options: {
|
|
297
|
+
definitionKey: 'security-management.status.user-invitation',
|
|
298
|
+
},
|
|
299
|
+
},
|
|
300
|
+
},
|
|
301
|
+
},
|
|
302
|
+
{
|
|
303
|
+
/**
|
|
304
|
+
* Hidden view filter marker only; rewritten server-side to TenantUser
|
|
305
|
+
* invitation.source=invite. Never persisted on User documents.
|
|
306
|
+
*/
|
|
307
|
+
name: 'membershipInviteScope',
|
|
308
|
+
title: '@security-management:users.entities.user.fields.membership-invite-scope.title',
|
|
309
|
+
groupId: 'user-account-access',
|
|
310
|
+
schema: {
|
|
311
|
+
dataType: 'string',
|
|
312
|
+
readonly: true,
|
|
313
|
+
visible: false,
|
|
314
|
+
nullable: true,
|
|
315
|
+
interface: {
|
|
316
|
+
type: AXPWidgetsCatalog.text,
|
|
317
|
+
options: {},
|
|
318
|
+
},
|
|
319
|
+
},
|
|
320
|
+
},
|
|
221
321
|
{
|
|
222
322
|
name: 'homeTenantId',
|
|
223
323
|
title: '@security-management:users.entities.user.fields.home-tenant.title',
|
|
@@ -335,6 +435,7 @@ async function usersFactory() {
|
|
|
335
435
|
{ name: 'displayName' },
|
|
336
436
|
{ name: 'email' },
|
|
337
437
|
{ name: 'rolesList' },
|
|
438
|
+
{ name: 'membershipStatusId', options: { visible: false } },
|
|
338
439
|
{ name: 'lastSignInAt', options: { visible: false } },
|
|
339
440
|
],
|
|
340
441
|
interfaces: {
|
|
@@ -452,15 +553,70 @@ async function usersFactory() {
|
|
|
452
553
|
type: 'view',
|
|
453
554
|
scope: AXPEntityCommandScope.Individual,
|
|
454
555
|
},
|
|
556
|
+
{
|
|
557
|
+
title: '@security-management:users.entities.user.actions.reset-two-factor.title',
|
|
558
|
+
icon: 'fa-light fa-shield-keyhole',
|
|
559
|
+
command: AXM_USER_RESET_TWO_FACTOR_COMMAND,
|
|
560
|
+
priority: 'secondary',
|
|
561
|
+
type: 'view',
|
|
562
|
+
scope: AXPEntityCommandScope.Individual,
|
|
563
|
+
},
|
|
564
|
+
{
|
|
565
|
+
title: '@security-management:users.entities.user.actions.resend-invitation.title',
|
|
566
|
+
icon: 'fa-light fa-paper-plane',
|
|
567
|
+
command: AXM_USER_RESEND_INVITATION_COMMAND,
|
|
568
|
+
priority: 'secondary',
|
|
569
|
+
type: 'view',
|
|
570
|
+
scope: AXPEntityCommandScope.Individual,
|
|
571
|
+
},
|
|
572
|
+
{
|
|
573
|
+
title: '@security-management:users.entities.user.actions.cancel-invitation.title',
|
|
574
|
+
icon: 'fa-light fa-user-xmark',
|
|
575
|
+
command: AXM_USER_CANCEL_INVITATION_COMMAND,
|
|
576
|
+
priority: 'secondary',
|
|
577
|
+
type: 'view',
|
|
578
|
+
scope: AXPEntityCommandScope.Individual,
|
|
579
|
+
},
|
|
455
580
|
...entityMasterRecordActions(),
|
|
456
581
|
],
|
|
457
582
|
},
|
|
458
583
|
list: {
|
|
459
|
-
actions: [
|
|
584
|
+
actions: [
|
|
585
|
+
{
|
|
586
|
+
name: 'invite',
|
|
587
|
+
title: '@security-management:users.entities.user.actions.invite.title',
|
|
588
|
+
icon: 'fa-light fa-user-plus',
|
|
589
|
+
command: {
|
|
590
|
+
name: AXM_USER_INVITE_COMMAND,
|
|
591
|
+
},
|
|
592
|
+
priority: 'primary',
|
|
593
|
+
type: AXPSystemActionType.Create,
|
|
594
|
+
scope: AXPEntityCommandScope.TypeLevel,
|
|
595
|
+
},
|
|
596
|
+
...entityMasterCrudActions({ create: false }),
|
|
597
|
+
],
|
|
460
598
|
views: [
|
|
461
599
|
createAllQueryView({
|
|
462
600
|
sorts: [{ name: 'displayName', dir: 'asc' }],
|
|
463
601
|
}),
|
|
602
|
+
createQueryView('invitations', '@security-management:users.entities.user.views.invitations.title', true, {
|
|
603
|
+
conditions: [
|
|
604
|
+
{
|
|
605
|
+
name: 'membershipInviteScope',
|
|
606
|
+
operator: { type: 'equal' },
|
|
607
|
+
value: 'lifecycle',
|
|
608
|
+
hidden: true,
|
|
609
|
+
},
|
|
610
|
+
],
|
|
611
|
+
columns: [
|
|
612
|
+
'username',
|
|
613
|
+
'displayName',
|
|
614
|
+
'email',
|
|
615
|
+
'membershipStatusId',
|
|
616
|
+
'rolesList',
|
|
617
|
+
],
|
|
618
|
+
sorts: [{ name: 'displayName', dir: 'asc' }],
|
|
619
|
+
}),
|
|
464
620
|
],
|
|
465
621
|
},
|
|
466
622
|
card: {
|
|
@@ -483,4 +639,4 @@ async function usersFactory() {
|
|
|
483
639
|
}
|
|
484
640
|
|
|
485
641
|
export { usersFactory };
|
|
486
|
-
//# sourceMappingURL=acorex-platform-module-security-management-client-contracts-entity-catalog-users.entity-
|
|
642
|
+
//# sourceMappingURL=acorex-platform-module-security-management-client-contracts-entity-catalog-users.entity-CJ7x5rjC.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"acorex-platform-module-security-management-client-contracts-entity-catalog-users.entity-CJ7x5rjC.mjs","sources":["../../../../libs/modules/security-management/contracts/src/AXM_USER_ACCESS_STATE_DEFINITION_KEY.ts","../../../../libs/modules/security-management/contracts/src/AXM_USER_EFFECTIVE_STATE_DEFINITION_KEY.ts","../../../../libs/modules/security-management/contracts/src/server-commands.ts","../../../../libs/modules/security-management/contracts/src/USER_ROLES_PAGE_COMPONENT_KEY.ts","../../../../libs/modules/security-management/contracts/src/entities/users/users.entity.ts"],"sourcesContent":["/** Status provider key for `accessState` on SecurityManagement.User (transitions define editable paths in the status UI). */\nexport const AXM_USER_ACCESS_STATE_DEFINITION_KEY = 'security-management.access-state.user';\n","/** Status provider key for persisted `effectiveState` on SecurityManagement.User (derived; read-only in UI). */\nexport const AXM_USER_EFFECTIVE_STATE_DEFINITION_KEY = 'security-management.effective-state.user';\n","//#region ---- Security management server command keys ----\n\nexport const AXMSecurityManagementServerCommands = {\n SendPasswordResetEmail: 'SecurityManagement:Server:SendPasswordResetEmail',\n CompletePasswordReset: 'SecurityManagement:Server:CompletePasswordReset',\n ChangeOwnPassword: 'SecurityManagement:Server:ChangeOwnPassword',\n InviteUser: 'SecurityManagement:Server:InviteUser',\n ResendInvitation: 'SecurityManagement:Server:ResendInvitation',\n CancelInvitation: 'SecurityManagement:Server:CancelInvitation',\n AcceptInvitation: 'SecurityManagement:Server:AcceptInvitation',\n ListMyPendingInvitations: 'SecurityManagement:Server:ListMyPendingInvitations',\n DeclineInvitation: 'SecurityManagement:Server:DeclineInvitation',\n AcceptMyInvitation: 'SecurityManagement:Server:AcceptMyInvitation',\n StartTwoFactorEnrollment: 'SecurityManagement:Server:StartTwoFactorEnrollment',\n ConfirmTwoFactorEnrollment: 'SecurityManagement:Server:ConfirmTwoFactorEnrollment',\n DisableTwoFactor: 'SecurityManagement:Server:DisableTwoFactor',\n GenerateTwoFactorRecoveryCodes: 'SecurityManagement:Server:GenerateTwoFactorRecoveryCodes',\n GetTwoFactorStatus: 'SecurityManagement:Server:GetTwoFactorStatus',\n AdminResetTwoFactor: 'SecurityManagement:Server:AdminResetTwoFactor',\n /** Public — completes login after password challenge (TOTP or recovery). */\n VerifyTwoFactorLogin: 'SecurityManagement:Server:VerifyTwoFactorLogin',\n} as const;\n\n/** Stable codes for self-service password change (client maps to i18n). */\nexport const AXM_CHANGE_OWN_PASSWORD_ERROR_CODES = {\n NotSignedIn: 'CHANGE_OWN_PASSWORD_NOT_SIGNED_IN',\n IncorrectCurrent: 'CHANGE_OWN_PASSWORD_INCORRECT_CURRENT',\n SameAsCurrent: 'CHANGE_OWN_PASSWORD_SAME_AS_CURRENT',\n InvalidInput: 'CHANGE_OWN_PASSWORD_INVALID_INPUT',\n} as const;\n\n/** Client/UI action key (confirm dialog → server send). */\nexport const AXM_USER_SEND_PASSWORD_RESET_COMMAND = 'SecurityManagement:User:SendPasswordResetEmail';\n\n/** Client/UI action key (confirm dialog → server admin reset 2FA). */\nexport const AXM_USER_RESET_TWO_FACTOR_COMMAND = 'SecurityManagement:User:ResetTwoFactor';\n\n/** Client/UI action keys for invite flows. */\nexport const AXM_USER_INVITE_COMMAND = 'SecurityManagement:User:Invite';\nexport const AXM_USER_RESEND_INVITATION_COMMAND = 'SecurityManagement:User:ResendInvitation';\nexport const AXM_USER_CANCEL_INVITATION_COMMAND = 'SecurityManagement:User:CancelInvitation';\n\nexport interface AXMSendPasswordResetEmailInput {\n /** Admin path: target user id. */\n userId?: string;\n /** Forgot path: email or username. */\n login?: string;\n /** Optional absolute web origin for reset link (defaults to env / localhost). */\n webOrigin?: string;\n}\n\nexport interface AXMCompletePasswordResetInput {\n token: string;\n newPassword: string;\n}\n\nexport interface AXMChangeOwnPasswordInput {\n currentPassword: string;\n newPassword: string;\n}\n\nexport interface AXMChangeOwnPasswordResult {\n passwordChangedAt: string;\n}\n\nexport interface AXMInviteUserInput {\n email: string;\n displayName?: string;\n applicationIds?: string[];\n /** Client sets true after warning that the identity already exists. */\n confirmExisting?: boolean;\n webOrigin?: string;\n}\n\nexport interface AXMInviteUserResult {\n userId: string;\n tenantUserId: string;\n userAlreadyExists: boolean;\n sent: boolean;\n}\n\nexport interface AXMResendInvitationInput {\n tenantUserId?: string;\n userId?: string;\n webOrigin?: string;\n}\n\nexport interface AXMCancelInvitationInput {\n tenantUserId?: string;\n userId?: string;\n}\n\n/** Stable codes for public invitation accept (client maps invalid/expired to the page, not a toast). */\nexport const AXM_ACCEPT_INVITATION_ERROR_CODES = {\n Invalid: 'ACCEPT_INVITATION_INVALID',\n Expired: 'ACCEPT_INVITATION_EXPIRED',\n PasswordRequired: 'ACCEPT_INVITATION_PASSWORD_REQUIRED',\n} as const;\n\nexport type AXMAcceptInvitationReason = 'valid' | 'invalid' | 'expired';\n\nexport interface AXMAcceptInvitationInput {\n token: string;\n newPassword?: string;\n /** Check the token only. Does not set a password or consume the link. */\n preview?: boolean;\n}\n\nexport interface AXMAcceptInvitationPreviewResult {\n usable: boolean;\n reason: AXMAcceptInvitationReason;\n}\n\nexport interface AXMPendingInvitationItem {\n tenantUserId: string;\n tenantId: string;\n tenantTitle?: string;\n invitedByUserId?: string;\n expiresAt?: string;\n sentAt?: string;\n applicationIds?: string[];\n}\n\nexport interface AXMListMyPendingInvitationsResult {\n items: AXMPendingInvitationItem[];\n}\n\nexport interface AXMAcceptMyInvitationInput {\n tenantUserId: string;\n newPassword?: string;\n}\n\nexport interface AXMDeclineInvitationInput {\n tenantUserId: string;\n}\n\n/** Stable codes for two-factor self-service and login challenge (client maps to i18n). */\nexport const AXM_TWO_FACTOR_ERROR_CODES = {\n NotSignedIn: 'TWO_FACTOR_NOT_SIGNED_IN',\n InvalidInput: 'TWO_FACTOR_INVALID_INPUT',\n IncorrectPassword: 'TWO_FACTOR_INCORRECT_PASSWORD',\n IncorrectCode: 'TWO_FACTOR_INCORRECT_CODE',\n AlreadyEnabled: 'TWO_FACTOR_ALREADY_ENABLED',\n NotEnabled: 'TWO_FACTOR_NOT_ENABLED',\n EnrollmentExpired: 'TWO_FACTOR_ENROLLMENT_EXPIRED',\n ChallengeExpired: 'TWO_FACTOR_CHALLENGE_EXPIRED',\n RateLimited: 'TWO_FACTOR_RATE_LIMITED',\n InvalidConfiguration: 'TWO_FACTOR_INVALID_CONFIGURATION',\n ProofRequired: 'TWO_FACTOR_PROOF_REQUIRED',\n UserNotFound: 'TWO_FACTOR_USER_NOT_FOUND',\n Forbidden: 'TWO_FACTOR_FORBIDDEN',\n} as const;\n\nexport interface AXMStartTwoFactorEnrollmentInput {\n password: string;\n}\n\nexport interface AXMStartTwoFactorEnrollmentResult {\n enrollmentId: string;\n otpauthUri: string;\n /** Base32 secret for manual entry (client renders QR via ax-qrcode). */\n secretBase32: string;\n expiresAt: string;\n}\n\nexport interface AXMConfirmTwoFactorEnrollmentInput {\n enrollmentId: string;\n code: string;\n}\n\nexport interface AXMConfirmTwoFactorEnrollmentResult {\n enabled: true;\n verifiedAt: string;\n}\n\nexport interface AXMDisableTwoFactorInput {\n /** At least one of password or totpCode is required. */\n password?: string;\n totpCode?: string;\n}\n\nexport interface AXMDisableTwoFactorResult {\n enabled: false;\n}\n\nexport interface AXMGenerateTwoFactorRecoveryCodesInput {\n /** At least one of password or totpCode is required. */\n password?: string;\n totpCode?: string;\n}\n\nexport interface AXMGenerateTwoFactorRecoveryCodesResult {\n /** Plaintext codes shown once only (display format ABCD-EFGH). */\n codes: string[];\n}\n\nexport interface AXMGetTwoFactorStatusResult {\n enabled: boolean;\n enrolled: boolean;\n verifiedAt?: string | null;\n hasRecoveryCodes: boolean;\n unusedRecoveryCodeCount: number;\n}\n\nexport interface AXMAdminResetTwoFactorInput {\n userId: string;\n /** When true, only validates that 2FA is enabled; does not wipe or revoke sessions. */\n dryRun?: boolean;\n}\n\nexport interface AXMAdminResetTwoFactorResult {\n reset: boolean;\n}\n\nexport interface AXMVerifyTwoFactorLoginInput {\n challengeId: string;\n /** TOTP (6 digits) or recovery code. */\n code: string;\n rememberMe?: boolean;\n}\n\n//#endregion\n","export const USER_ROLES_PAGE_COMPONENT_KEY = 'user-roles-page';\n","import { AXPSystemActionType, AXPWidgetsCatalog, AXPWidgetsList } from '@acorex-platform/framework-shared/core';\nimport {\n AXPEntity,\n AXPEntityCommandScope,\n createAllQueryView,\n createQueryView,\n entityMasterCrudActions,\n entityMasterRecordActions,\n} from '@acorex-platform/framework-shared/entity';\nimport { AXM_USER_ACCESS_STATE_DEFINITION_KEY } from '../../AXM_USER_ACCESS_STATE_DEFINITION_KEY';\nimport { AXM_USER_EFFECTIVE_STATE_DEFINITION_KEY } from '../../AXM_USER_EFFECTIVE_STATE_DEFINITION_KEY';\nimport {\n AXM_USER_CANCEL_INVITATION_COMMAND,\n AXM_USER_INVITE_COMMAND,\n AXM_USER_RESEND_INVITATION_COMMAND,\n AXM_USER_RESET_TWO_FACTOR_COMMAND,\n AXM_USER_SEND_PASSWORD_RESET_COMMAND,\n} from '../../server-commands';\nimport { USER_ROLES_PAGE_COMPONENT_KEY } from '../../USER_ROLES_PAGE_COMPONENT_KEY';\nimport { RootConfig } from '../../root-config';\n\nexport async function usersFactory(): Promise<AXPEntity | null> {\n const entityDef: AXPEntity = {\n module: RootConfig.module.name,\n name: RootConfig.entities.users.name,\n title: RootConfig.entities.users.title,\n icon: RootConfig.entities.users.icon,\n searchTags: [\n 'user',\n 'users',\n 'account',\n 'identity',\n 'sign-in',\n 'password',\n 'access-state',\n 'lifecycle',\n 'authorization',\n 'home-tenant',\n 'کاربر',\n 'کاربران',\n 'رمز عبور',\n 'ورود',\n 'حساب کاربری',\n ],\n formats: {\n individual: RootConfig.entities.users.title,\n plural: RootConfig.entities.users.titlePlural,\n searchResult: {\n title: '{{ displayName }}',\n description:\n '{{ context.eval(\"lastSignInAt\", { pipes: [\"timeleft\"] }) || \"@security-management:users.entities.user.fields.last-sign-in-at.never\" }}',\n },\n },\n plugins: [\n {\n name: 'status',\n options: {\n definition: 'security-management.account-state.user',\n field: 'accountState',\n isPrimary: false,\n groupId: 'user-account-access',\n title: '@security-management:users.entities.user.fields.account-lifecycle.title',\n showInCreate: false,\n generate: { views: { enabled: false } },\n },\n },\n {\n name: 'status',\n options: {\n field: 'accessState',\n definition: AXM_USER_ACCESS_STATE_DEFINITION_KEY,\n isPrimary: false,\n groupId: 'user-account-access',\n title: '@security-management:users.entities.user.fields.access-state.title',\n showInCreate: false,\n // Platform-scoped sign-in gate: display-only on User detail (tenant must not change).\n // Platform mutations should go through a dedicated ops path once client isPlatform is available.\n readonly: true,\n generate: { views: { enabled: false } },\n },\n },\n {\n name: 'status',\n options: {\n field: 'effectiveState',\n definition: AXM_USER_EFFECTIVE_STATE_DEFINITION_KEY,\n isPrimary: true,\n groupId: 'user-account-access',\n title: '@security-management:users.entities.user.fields.effective-state.title',\n showInCreate: false,\n readonly: true,\n generate: { views: { enabled: true } },\n },\n },\n { name: 'unique-fields', options: { fields: 'email', scope: 'global' } },\n { name: 'history' },\n { name: 'lock' },\n { name: 'compare' },\n { name: 'reports' },\n ],\n pages: [\n {\n componentKey: USER_ROLES_PAGE_COMPONENT_KEY,\n title: '@security-management:users.entities.user.pages.roles.title',\n icon: 'fa-light fa-user-tag',\n layout: { order: 1, position: 'after' },\n appearOn: { create: true, update: true },\n },\n ],\n groups: [\n {\n id: 'basic-info',\n title: '@general:terms.interface.basic-info',\n },\n {\n id: 'avatar',\n title: '@general:terms.common.avatar',\n icon: 'fa-light fa-image',\n },\n {\n id: 'user-account-access',\n title: '@security-management:users.entities.user.groups.account-access',\n },\n ],\n properties: [\n {\n name: 'username',\n title: '@general:terms.contact.username',\n groupId: 'basic-info',\n options: {\n filter: {\n advance: {\n enabled: true,\n },\n inline: {\n enabled: true,\n },\n },\n sort: {\n enabled: true,\n },\n },\n schema: {\n dataType: 'string',\n readonly: '{{ !!context.eval(\"id\") }}',\n interface: {\n type: AXPWidgetsCatalog.text,\n options: {},\n },\n },\n validations: [\n {\n rule: 'required',\n },\n ],\n },\n {\n name: 'displayName',\n title: `@general:terms.common.display-name`,\n groupId: 'basic-info',\n options: {\n sort: {\n enabled: true,\n },\n filter: {\n advance: {\n enabled: true,\n },\n inline: {\n enabled: true,\n },\n },\n },\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsCatalog.text,\n },\n },\n\n validations: [\n {\n rule: 'required',\n },\n ],\n },\n {\n name: 'email',\n title: '@general:terms.communication.email',\n groupId: 'basic-info',\n options: {\n filter: {\n advance: { enabled: true },\n inline: { enabled: true },\n },\n sort: { enabled: true },\n },\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsCatalog.text,\n options: {},\n },\n },\n validations: [{ rule: 'required' }],\n },\n {\n name: 'rolesList',\n title: '@security-management:users.entities.user.fields.roles.title',\n groupId: 'basic-info',\n schema: {\n dataType: 'array',\n /**\n * Display-only Role snapshots. Not a stored FK — source of truth is\n * scoped SecurityManagement.UserRole. Name must not end in Id/Ids so\n * the query planner does not join Role from this User document.\n */\n readonly: true,\n visible: false,\n interface: {\n type: AXPWidgetsList.Editors.LookupBox,\n options: {\n entity: `${RootConfig.module.name}.${RootConfig.entities.roles.name}`,\n textField: 'title',\n valueField: 'id',\n multiple: true,\n look: 'select',\n },\n },\n },\n },\n {\n /**\n * Display-only (like rolesList). Never persisted on User documents.\n * Hydrated from session-tenant TenantUser.statusId (+ acceptedAt → accepted).\n */\n name: 'membershipStatusId',\n title: '@security-management:users.entities.user.fields.membership-status.title',\n groupId: 'user-account-access',\n schema: {\n dataType: 'string',\n readonly: true,\n nullable: true,\n visible: false,\n interface: {\n type: AXPWidgetsList.Advanced.Status,\n options: {\n definitionKey: 'security-management.status.user-invitation',\n },\n },\n },\n },\n {\n /**\n * Hidden view filter marker only; rewritten server-side to TenantUser\n * invitation.source=invite. Never persisted on User documents.\n */\n name: 'membershipInviteScope',\n title: '@security-management:users.entities.user.fields.membership-invite-scope.title',\n groupId: 'user-account-access',\n schema: {\n dataType: 'string',\n readonly: true,\n visible: false,\n nullable: true,\n interface: {\n type: AXPWidgetsCatalog.text,\n options: {},\n },\n },\n },\n {\n name: 'homeTenantId',\n title: '@security-management:users.entities.user.fields.home-tenant.title',\n groupId: 'basic-info',\n schema: {\n dataType: 'string',\n /** Stamped on create from session; not shown on User forms. */\n readonly: true,\n visible: false,\n interface: {\n type: AXPWidgetsCatalog.text,\n options: {},\n },\n },\n },\n {\n name: 'password',\n title: '@security-management:users.entities.user.fields.password.title',\n groupId: 'basic-info',\n schema: {\n dataType: 'string',\n visible: false,\n interface: {\n type: AXPWidgetsCatalog.text,\n },\n },\n },\n {\n name: 'avatar',\n title: '@general:terms.common.avatar',\n groupId: 'avatar',\n schema: {\n dataType: 'string',\n nullable: true,\n interface: {\n type: AXPWidgetsList.Advanced.Image,\n options: {\n type: 'profile-photo',\n },\n },\n },\n },\n {\n name: 'pinCode',\n title: '@security-management:users.entities.user.fields.pin-code.title',\n groupId: 'basic-info',\n schema: {\n dataType: 'string',\n readonly: true,\n visible: false,\n interface: {\n type: AXPWidgetsCatalog.text,\n },\n },\n },\n {\n name: 'passwordChangedAt',\n title: '@security-management:users.entities.user.fields.password-changed-at.title',\n groupId: 'user-account-access',\n schema: {\n dataType: 'date',\n readonly: true,\n visible: false,\n nullable: true,\n interface: {\n type: AXPWidgetsCatalog.dateTime,\n },\n },\n },\n {\n name: 'pinChangedAt',\n title: '@security-management:users.entities.user.fields.pin-changed-at.title',\n groupId: 'user-account-access',\n schema: {\n dataType: 'date',\n readonly: true,\n visible: false,\n nullable: true,\n interface: {\n type: AXPWidgetsCatalog.dateTime,\n },\n },\n },\n {\n name: 'lastSignInAt',\n title: '@security-management:users.entities.user.fields.last-sign-in-at.title',\n groupId: 'user-account-access',\n schema: {\n dataType: 'date',\n readonly: true,\n visible: false,\n nullable: true,\n interface: {\n type: AXPWidgetsCatalog.dateTime,\n },\n },\n },\n {\n name: 'passwordReset',\n title: '@security-management:users.entities.user.fields.password-reset.title',\n groupId: 'user-account-access',\n schema: {\n dataType: 'object',\n readonly: true,\n visible: false,\n nullable: true,\n interface: {\n type: AXPWidgetsCatalog.text,\n },\n },\n },\n ],\n columns: [\n { name: 'username' },\n { name: 'displayName' },\n { name: 'email' },\n { name: 'rolesList' },\n { name: 'membershipStatusId', options: { visible: false } },\n { name: 'lastSignInAt', options: { visible: false } },\n ],\n interfaces: {\n master: {\n create: {\n sections: [\n {\n id: 'basic-info',\n order: 1,\n layout: { positions: { lg: { colSpan: 8, colStart: 1 } } },\n },\n {\n id: 'avatar',\n order: 2,\n layout: { positions: { lg: { colSpan: 4, colStart: 9 } } },\n },\n ],\n properties: [\n {\n name: 'username',\n layout: { positions: { lg: { colSpan: 6 } } },\n },\n {\n name: 'displayName',\n layout: { positions: { lg: { colSpan: 6 } } },\n },\n {\n name: 'email',\n layout: { positions: { lg: { colSpan: 12 } } },\n },\n {\n name: 'avatar',\n layout: {\n label: { visible: false },\n positions: { lg: { colSpan: 12, order: 1 } },\n },\n },\n ],\n },\n update: {\n sections: [\n {\n id: 'basic-info',\n order: 1,\n layout: { positions: { lg: { colSpan: 8, colStart: 1 } } },\n },\n {\n id: 'avatar',\n order: 2,\n layout: { positions: { lg: { colSpan: 4, colStart: 9 } } },\n },\n {\n id: 'user-account-access',\n order: 3,\n layout: { positions: { lg: { colSpan: 12, colStart: 1 } } },\n },\n ],\n properties: [\n { name: 'username', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'displayName', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'email', layout: { positions: { lg: { colSpan: 6 } } } },\n {\n name: 'avatar',\n layout: {\n label: { visible: false },\n positions: { lg: { colSpan: 12, order: 1 } },\n },\n },\n { name: 'accountState', layout: { positions: { lg: { colSpan: 4 } } } },\n { name: 'accessState', layout: { positions: { lg: { colSpan: 4 } } } },\n { name: 'effectiveState', layout: { positions: { lg: { colSpan: 4 } } } },\n ],\n },\n single: {\n title: '{{ context.eval(\"displayName\") ?? context.eval(\"username\") }}',\n description:\n '{{ context.eval(\"lastSignInAt\", { pipes: [\"timeleft\"] }) || \"@security-management:users.entities.user.fields.last-sign-in-at.never\" }}',\n\n sections: [\n {\n id: 'basic-info',\n order: 1,\n layout: { positions: { lg: { colSpan: 8, colStart: 1 } } },\n },\n {\n id: 'avatar',\n order: 2,\n layout: { positions: { lg: { colSpan: 4, colStart: 9 } } },\n },\n {\n id: 'user-account-access',\n order: 3,\n layout: { positions: { lg: { colSpan: 12, colStart: 1 } } },\n },\n ],\n properties: [\n { name: 'username', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'displayName', layout: { positions: { lg: { colSpan: 6 } } } },\n { name: 'email', layout: { positions: { lg: { colSpan: 6 } } } },\n {\n name: 'avatar',\n layout: {\n label: { visible: false },\n positions: { lg: { colSpan: 12, order: 1 } },\n },\n },\n { name: 'accountState', layout: { positions: { lg: { colSpan: 4 } } } },\n { name: 'accessState', layout: { positions: { lg: { colSpan: 4 } } } },\n { name: 'effectiveState', layout: { positions: { lg: { colSpan: 4 } } } },\n ],\n actions: [\n {\n title: '@security-management:users.entities.user.actions.send-password-reset.title',\n icon: 'fa-light fa-envelope',\n command: AXM_USER_SEND_PASSWORD_RESET_COMMAND,\n priority: 'secondary',\n type: 'view',\n scope: AXPEntityCommandScope.Individual,\n },\n {\n title: '@security-management:users.entities.user.actions.reset-two-factor.title',\n icon: 'fa-light fa-shield-keyhole',\n command: AXM_USER_RESET_TWO_FACTOR_COMMAND,\n priority: 'secondary',\n type: 'view',\n scope: AXPEntityCommandScope.Individual,\n },\n {\n title: '@security-management:users.entities.user.actions.resend-invitation.title',\n icon: 'fa-light fa-paper-plane',\n command: AXM_USER_RESEND_INVITATION_COMMAND,\n priority: 'secondary',\n type: 'view',\n scope: AXPEntityCommandScope.Individual,\n },\n {\n title: '@security-management:users.entities.user.actions.cancel-invitation.title',\n icon: 'fa-light fa-user-xmark',\n command: AXM_USER_CANCEL_INVITATION_COMMAND,\n priority: 'secondary',\n type: 'view',\n scope: AXPEntityCommandScope.Individual,\n },\n ...entityMasterRecordActions(),\n ],\n },\n list: {\n actions: [\n {\n name: 'invite',\n title: '@security-management:users.entities.user.actions.invite.title',\n icon: 'fa-light fa-user-plus',\n command: {\n name: AXM_USER_INVITE_COMMAND,\n },\n priority: 'primary',\n type: AXPSystemActionType.Create,\n scope: AXPEntityCommandScope.TypeLevel,\n },\n ...entityMasterCrudActions({ create: false }),\n ],\n views: [\n createAllQueryView({\n sorts: [{ name: 'displayName', dir: 'asc' }],\n }),\n createQueryView(\n 'invitations',\n '@security-management:users.entities.user.views.invitations.title',\n true,\n {\n conditions: [\n {\n name: 'membershipInviteScope',\n operator: { type: 'equal' },\n value: 'lifecycle',\n hidden: true,\n },\n ],\n columns: [\n 'username',\n 'displayName',\n 'email',\n 'membershipStatusId',\n 'rolesList',\n ],\n sorts: [{ name: 'displayName', dir: 'asc' }],\n },\n ),\n ],\n },\n card: {\n enabled: true,\n header: {\n title: 'displayName',\n description:\n '{{ context.eval(\"lastSignInAt\", { pipes: [\"timeleft\"] }) || \"@security-management:users.entities.user.fields.last-sign-in-at.never\" }}',\n avatar: 'avatar',\n },\n fields: [\n { name: 'username', display: 'meta' },\n { name: 'email', display: 'meta' },\n { name: 'rolesList', display: 'simple' },\n ],\n },\n },\n },\n };\n return entityDef;\n}\n"],"names":[],"mappings":"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"}
|
package/fesm2022/acorex-platform-module-security-management-client-contracts-entity-catalog.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { s as securityManagementLocalEntityCatalog } from './acorex-platform-module-security-management-client-contracts-entity-catalog-acorex-platform-module-security-management-client-contracts-entity-catalog-
|
|
1
|
+
export { s as securityManagementLocalEntityCatalog } from './acorex-platform-module-security-management-client-contracts-entity-catalog-acorex-platform-module-security-management-client-contracts-entity-catalog-B4oiF8FO.mjs';
|
|
2
2
|
//# sourceMappingURL=acorex-platform-module-security-management-client-contracts-entity-catalog.mjs.map
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
import { AXPWidgetsCatalog } from '@acorex-platform/framework-shared/core';
|
|
2
|
+
import { createAllQueryView, entityMasterCrudActions } from '@acorex-platform/framework-shared/entity';
|
|
3
|
+
|
|
1
4
|
//#region ---- User context definitions ----
|
|
2
5
|
const AXM_SECURITY_CONTEXT_DEFINITIONS = [
|
|
3
6
|
{
|
|
@@ -163,6 +166,12 @@ const RootConfig = {
|
|
|
163
166
|
titlePlural: `@${config.i18n}:identity-providers.entities.identity-provider.plural`,
|
|
164
167
|
icon: 'fa-light fa-id-badge',
|
|
165
168
|
},
|
|
169
|
+
userTwoFactor: {
|
|
170
|
+
name: 'UserTwoFactor',
|
|
171
|
+
title: `@${config.i18n}:user-two-factor.entities.user-two-factor.title`,
|
|
172
|
+
titlePlural: `@${config.i18n}:user-two-factor.entities.user-two-factor.plural`,
|
|
173
|
+
icon: 'fa-light fa-shield-keyhole',
|
|
174
|
+
},
|
|
166
175
|
},
|
|
167
176
|
queries: {
|
|
168
177
|
reports: {
|
|
@@ -175,6 +184,26 @@ const RootConfig = {
|
|
|
175
184
|
},
|
|
176
185
|
};
|
|
177
186
|
|
|
187
|
+
//#region ---- Imports ----
|
|
188
|
+
//#endregion
|
|
189
|
+
//#region ---- Manifest Definition ----
|
|
190
|
+
/**
|
|
191
|
+
* Security Management Module Manifest.
|
|
192
|
+
* Defines module metadata, features, and provider references.
|
|
193
|
+
*/
|
|
194
|
+
const SecurityManagementManifest = {
|
|
195
|
+
name: RootConfig.module.name,
|
|
196
|
+
version: '1.0.0',
|
|
197
|
+
title: RootConfig.module.title,
|
|
198
|
+
icon: RootConfig.module.icon,
|
|
199
|
+
i18n: RootConfig.config.i18n,
|
|
200
|
+
type: 'platform',
|
|
201
|
+
domain: 'platform',
|
|
202
|
+
required: true,
|
|
203
|
+
// Module dependencies (optional)
|
|
204
|
+
};
|
|
205
|
+
//#endregion
|
|
206
|
+
|
|
178
207
|
/** Status provider key for `accessState` on SecurityManagement.User (transitions define editable paths in the status UI). */
|
|
179
208
|
const AXM_USER_ACCESS_STATE_DEFINITION_KEY = 'security-management.access-state.user';
|
|
180
209
|
|
|
@@ -253,11 +282,36 @@ function resolveAXMUserEffectiveState(input) {
|
|
|
253
282
|
//#region ---- Password reset payload on User ----
|
|
254
283
|
//#endregion
|
|
255
284
|
|
|
285
|
+
//#region ---- User invitation payload on TenantUser ----
|
|
286
|
+
/**
|
|
287
|
+
* In-app inbox definition for membership invites to users who already have a tenant.
|
|
288
|
+
* Inbox row action opens the auth waiting room (Approve/Decline live there).
|
|
289
|
+
*/
|
|
290
|
+
const AXM_MEMBERSHIP_INVITATION_NOTIFICATION_DEFINITION_KEY = 'security-management.membership-invitation';
|
|
291
|
+
/** Query `source` value when opening waiting room from a membership-invite notification. */
|
|
292
|
+
const AXM_MEMBERSHIP_INVITE_WAITING_ROOM_SOURCE = 'membership-invite';
|
|
293
|
+
//#endregion
|
|
294
|
+
|
|
256
295
|
//#region ---- Security management server command keys ----
|
|
257
296
|
const AXMSecurityManagementServerCommands = {
|
|
258
297
|
SendPasswordResetEmail: 'SecurityManagement:Server:SendPasswordResetEmail',
|
|
259
298
|
CompletePasswordReset: 'SecurityManagement:Server:CompletePasswordReset',
|
|
260
299
|
ChangeOwnPassword: 'SecurityManagement:Server:ChangeOwnPassword',
|
|
300
|
+
InviteUser: 'SecurityManagement:Server:InviteUser',
|
|
301
|
+
ResendInvitation: 'SecurityManagement:Server:ResendInvitation',
|
|
302
|
+
CancelInvitation: 'SecurityManagement:Server:CancelInvitation',
|
|
303
|
+
AcceptInvitation: 'SecurityManagement:Server:AcceptInvitation',
|
|
304
|
+
ListMyPendingInvitations: 'SecurityManagement:Server:ListMyPendingInvitations',
|
|
305
|
+
DeclineInvitation: 'SecurityManagement:Server:DeclineInvitation',
|
|
306
|
+
AcceptMyInvitation: 'SecurityManagement:Server:AcceptMyInvitation',
|
|
307
|
+
StartTwoFactorEnrollment: 'SecurityManagement:Server:StartTwoFactorEnrollment',
|
|
308
|
+
ConfirmTwoFactorEnrollment: 'SecurityManagement:Server:ConfirmTwoFactorEnrollment',
|
|
309
|
+
DisableTwoFactor: 'SecurityManagement:Server:DisableTwoFactor',
|
|
310
|
+
GenerateTwoFactorRecoveryCodes: 'SecurityManagement:Server:GenerateTwoFactorRecoveryCodes',
|
|
311
|
+
GetTwoFactorStatus: 'SecurityManagement:Server:GetTwoFactorStatus',
|
|
312
|
+
AdminResetTwoFactor: 'SecurityManagement:Server:AdminResetTwoFactor',
|
|
313
|
+
/** Public — completes login after password challenge (TOTP or recovery). */
|
|
314
|
+
VerifyTwoFactorLogin: 'SecurityManagement:Server:VerifyTwoFactorLogin',
|
|
261
315
|
};
|
|
262
316
|
/** Stable codes for self-service password change (client maps to i18n). */
|
|
263
317
|
const AXM_CHANGE_OWN_PASSWORD_ERROR_CODES = {
|
|
@@ -268,6 +322,34 @@ const AXM_CHANGE_OWN_PASSWORD_ERROR_CODES = {
|
|
|
268
322
|
};
|
|
269
323
|
/** Client/UI action key (confirm dialog → server send). */
|
|
270
324
|
const AXM_USER_SEND_PASSWORD_RESET_COMMAND = 'SecurityManagement:User:SendPasswordResetEmail';
|
|
325
|
+
/** Client/UI action key (confirm dialog → server admin reset 2FA). */
|
|
326
|
+
const AXM_USER_RESET_TWO_FACTOR_COMMAND = 'SecurityManagement:User:ResetTwoFactor';
|
|
327
|
+
/** Client/UI action keys for invite flows. */
|
|
328
|
+
const AXM_USER_INVITE_COMMAND = 'SecurityManagement:User:Invite';
|
|
329
|
+
const AXM_USER_RESEND_INVITATION_COMMAND = 'SecurityManagement:User:ResendInvitation';
|
|
330
|
+
const AXM_USER_CANCEL_INVITATION_COMMAND = 'SecurityManagement:User:CancelInvitation';
|
|
331
|
+
/** Stable codes for public invitation accept (client maps invalid/expired to the page, not a toast). */
|
|
332
|
+
const AXM_ACCEPT_INVITATION_ERROR_CODES = {
|
|
333
|
+
Invalid: 'ACCEPT_INVITATION_INVALID',
|
|
334
|
+
Expired: 'ACCEPT_INVITATION_EXPIRED',
|
|
335
|
+
PasswordRequired: 'ACCEPT_INVITATION_PASSWORD_REQUIRED',
|
|
336
|
+
};
|
|
337
|
+
/** Stable codes for two-factor self-service and login challenge (client maps to i18n). */
|
|
338
|
+
const AXM_TWO_FACTOR_ERROR_CODES = {
|
|
339
|
+
NotSignedIn: 'TWO_FACTOR_NOT_SIGNED_IN',
|
|
340
|
+
InvalidInput: 'TWO_FACTOR_INVALID_INPUT',
|
|
341
|
+
IncorrectPassword: 'TWO_FACTOR_INCORRECT_PASSWORD',
|
|
342
|
+
IncorrectCode: 'TWO_FACTOR_INCORRECT_CODE',
|
|
343
|
+
AlreadyEnabled: 'TWO_FACTOR_ALREADY_ENABLED',
|
|
344
|
+
NotEnabled: 'TWO_FACTOR_NOT_ENABLED',
|
|
345
|
+
EnrollmentExpired: 'TWO_FACTOR_ENROLLMENT_EXPIRED',
|
|
346
|
+
ChallengeExpired: 'TWO_FACTOR_CHALLENGE_EXPIRED',
|
|
347
|
+
RateLimited: 'TWO_FACTOR_RATE_LIMITED',
|
|
348
|
+
InvalidConfiguration: 'TWO_FACTOR_INVALID_CONFIGURATION',
|
|
349
|
+
ProofRequired: 'TWO_FACTOR_PROOF_REQUIRED',
|
|
350
|
+
UserNotFound: 'TWO_FACTOR_USER_NOT_FOUND',
|
|
351
|
+
Forbidden: 'TWO_FACTOR_FORBIDDEN',
|
|
352
|
+
};
|
|
271
353
|
//#endregion
|
|
272
354
|
|
|
273
355
|
var AXMSessionStatusTypes;
|
|
@@ -335,11 +417,107 @@ const AXM_IDENTITY_PROVIDER_PROTOCOL = {
|
|
|
335
417
|
//#region ----- UserRole types -----
|
|
336
418
|
//#endregion
|
|
337
419
|
|
|
420
|
+
//#endregion
|
|
421
|
+
|
|
422
|
+
/**
|
|
423
|
+
* Schema-only entity for authenticator enrollment.
|
|
424
|
+
* No secret fields in UI; all mutations go through dedicated 2FA commands.
|
|
425
|
+
*/
|
|
426
|
+
async function userTwoFactorFactory() {
|
|
427
|
+
const i18n = RootConfig.config.i18n;
|
|
428
|
+
const entityDef = {
|
|
429
|
+
module: RootConfig.module.name,
|
|
430
|
+
name: RootConfig.entities.userTwoFactor.name,
|
|
431
|
+
title: RootConfig.entities.userTwoFactor.title,
|
|
432
|
+
icon: RootConfig.entities.userTwoFactor.icon,
|
|
433
|
+
searchTags: ['two-factor', '2fa', 'totp', 'authenticator', 'احراز هویت دو مرحلهای'],
|
|
434
|
+
formats: {
|
|
435
|
+
individual: RootConfig.entities.userTwoFactor.title,
|
|
436
|
+
plural: RootConfig.entities.userTwoFactor.titlePlural,
|
|
437
|
+
searchResult: {
|
|
438
|
+
title: '{{ userId }}',
|
|
439
|
+
description: RootConfig.module.title,
|
|
440
|
+
},
|
|
441
|
+
},
|
|
442
|
+
groups: [
|
|
443
|
+
{
|
|
444
|
+
id: 'basic-info',
|
|
445
|
+
title: `@general:terms.interface.basic-info`,
|
|
446
|
+
},
|
|
447
|
+
],
|
|
448
|
+
properties: [
|
|
449
|
+
{
|
|
450
|
+
name: 'userId',
|
|
451
|
+
title: `@${i18n}:user-two-factor.fields.user-id.title`,
|
|
452
|
+
groupId: 'basic-info',
|
|
453
|
+
schema: {
|
|
454
|
+
dataType: 'string',
|
|
455
|
+
interface: {
|
|
456
|
+
type: AXPWidgetsCatalog.text,
|
|
457
|
+
options: { readOnly: true },
|
|
458
|
+
},
|
|
459
|
+
},
|
|
460
|
+
validations: [{ rule: 'required' }],
|
|
461
|
+
},
|
|
462
|
+
{
|
|
463
|
+
name: 'method',
|
|
464
|
+
title: `@${i18n}:user-two-factor.fields.method.title`,
|
|
465
|
+
groupId: 'basic-info',
|
|
466
|
+
schema: {
|
|
467
|
+
dataType: 'string',
|
|
468
|
+
interface: {
|
|
469
|
+
type: AXPWidgetsCatalog.text,
|
|
470
|
+
options: { readOnly: true },
|
|
471
|
+
},
|
|
472
|
+
},
|
|
473
|
+
validations: [{ rule: 'required' }],
|
|
474
|
+
},
|
|
475
|
+
{
|
|
476
|
+
name: 'verifiedAt',
|
|
477
|
+
title: `@${i18n}:user-two-factor.fields.verified-at.title`,
|
|
478
|
+
groupId: 'basic-info',
|
|
479
|
+
schema: {
|
|
480
|
+
dataType: 'dateTime',
|
|
481
|
+
interface: {
|
|
482
|
+
type: AXPWidgetsCatalog.dateTime,
|
|
483
|
+
options: { readOnly: true },
|
|
484
|
+
},
|
|
485
|
+
},
|
|
486
|
+
},
|
|
487
|
+
],
|
|
488
|
+
columns: [{ name: 'userId' }, { name: 'method' }, { name: 'verifiedAt' }],
|
|
489
|
+
interfaces: {
|
|
490
|
+
master: {
|
|
491
|
+
single: {
|
|
492
|
+
title: '{{ userId }}',
|
|
493
|
+
sections: [
|
|
494
|
+
{
|
|
495
|
+
id: 'basic-info',
|
|
496
|
+
layout: { positions: { lg: { colSpan: 12 } } },
|
|
497
|
+
},
|
|
498
|
+
],
|
|
499
|
+
properties: [
|
|
500
|
+
{ name: 'userId', layout: { positions: { lg: { colSpan: 6 } } } },
|
|
501
|
+
{ name: 'method', layout: { positions: { lg: { colSpan: 6 } } } },
|
|
502
|
+
{ name: 'verifiedAt', layout: { positions: { lg: { colSpan: 6 } } } },
|
|
503
|
+
],
|
|
504
|
+
actions: [],
|
|
505
|
+
},
|
|
506
|
+
list: {
|
|
507
|
+
actions: [...entityMasterCrudActions({ create: false, delete: false, edit: false })],
|
|
508
|
+
views: [createAllQueryView({ sorts: [{ name: 'verifiedAt', dir: 'desc' }] })],
|
|
509
|
+
},
|
|
510
|
+
},
|
|
511
|
+
},
|
|
512
|
+
};
|
|
513
|
+
return entityDef;
|
|
514
|
+
}
|
|
515
|
+
|
|
338
516
|
//#region ---- Contracts barrel ----
|
|
339
517
|
|
|
340
518
|
/**
|
|
341
519
|
* Generated bundle index. Do not edit.
|
|
342
520
|
*/
|
|
343
521
|
|
|
344
|
-
export { AXMSecurityManagementServerCommands, AXMSessionStatusTypes, AXMUserAccessState, AXMUserEffectiveState, AXM_CHANGE_OWN_PASSWORD_ERROR_CODES, AXM_IDENTITY_PROVIDER_PROTOCOL, AXM_SECURITY_CONTEXT_DEFINITIONS, AXM_USER_ACCESS_STATE_DEFINITION_KEY, AXM_USER_EFFECTIVE_STATE_DEFINITION_KEY, AXM_USER_SEND_PASSWORD_RESET_COMMAND, AXPAdministrationPermissionKeys, AXPSecurityManagementFeatureKeys, AXPSecurityManagementMenuKeys, AXPSecurityManagementPermissionKeys, ROLE_PERMISSIONS_PAGE_COMPONENT_KEY, RootConfig, USER_ROLES_PAGE_COMPONENT_KEY, resolveAXMUserEffectiveState };
|
|
522
|
+
export { AXMSecurityManagementServerCommands, AXMSessionStatusTypes, AXMUserAccessState, AXMUserEffectiveState, AXM_ACCEPT_INVITATION_ERROR_CODES, AXM_CHANGE_OWN_PASSWORD_ERROR_CODES, AXM_IDENTITY_PROVIDER_PROTOCOL, AXM_MEMBERSHIP_INVITATION_NOTIFICATION_DEFINITION_KEY, AXM_MEMBERSHIP_INVITE_WAITING_ROOM_SOURCE, AXM_SECURITY_CONTEXT_DEFINITIONS, AXM_TWO_FACTOR_ERROR_CODES, AXM_USER_ACCESS_STATE_DEFINITION_KEY, AXM_USER_CANCEL_INVITATION_COMMAND, AXM_USER_EFFECTIVE_STATE_DEFINITION_KEY, AXM_USER_INVITE_COMMAND, AXM_USER_RESEND_INVITATION_COMMAND, AXM_USER_RESET_TWO_FACTOR_COMMAND, AXM_USER_SEND_PASSWORD_RESET_COMMAND, AXPAdministrationPermissionKeys, AXPSecurityManagementFeatureKeys, AXPSecurityManagementMenuKeys, AXPSecurityManagementPermissionKeys, ROLE_PERMISSIONS_PAGE_COMPONENT_KEY, RootConfig, SecurityManagementManifest, USER_ROLES_PAGE_COMPONENT_KEY, resolveAXMUserEffectiveState, userTwoFactorFactory };
|
|
345
523
|
//# sourceMappingURL=acorex-platform-module-security-management-client-contracts.mjs.map
|