@acorex-platform/module-security-management-client 0.0.30 → 0.0.33

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.
Files changed (58) hide show
  1. package/fesm2022/{acorex-platform-module-security-management-client-acorex-platform-module-security-management-client-jSDkyMMZ.mjs → acorex-platform-module-security-management-client-acorex-platform-module-security-management-client-Wtvhs7VH.mjs} +10 -3
  2. package/fesm2022/acorex-platform-module-security-management-client-acorex-platform-module-security-management-client-Wtvhs7VH.mjs.map +1 -0
  3. package/fesm2022/acorex-platform-module-security-management-client-contracts-entities-device-sessions.mjs +579 -0
  4. package/fesm2022/acorex-platform-module-security-management-client-contracts-entities-device-sessions.mjs.map +1 -0
  5. package/fesm2022/acorex-platform-module-security-management-client-contracts-entities-identity-provider.mjs +326 -0
  6. package/fesm2022/acorex-platform-module-security-management-client-contracts-entities-identity-provider.mjs.map +1 -0
  7. package/fesm2022/acorex-platform-module-security-management-client-contracts-entities-policy.mjs +284 -0
  8. package/fesm2022/acorex-platform-module-security-management-client-contracts-entities-policy.mjs.map +1 -0
  9. package/fesm2022/acorex-platform-module-security-management-client-contracts-entities-profile.mjs +243 -0
  10. package/fesm2022/acorex-platform-module-security-management-client-contracts-entities-profile.mjs.map +1 -0
  11. package/fesm2022/acorex-platform-module-security-management-client-contracts-entities-role-permission.mjs +220 -0
  12. package/fesm2022/acorex-platform-module-security-management-client-contracts-entities-role-permission.mjs.map +1 -0
  13. package/fesm2022/acorex-platform-module-security-management-client-contracts-entities-roles.mjs +271 -0
  14. package/fesm2022/acorex-platform-module-security-management-client-contracts-entities-roles.mjs.map +1 -0
  15. package/fesm2022/acorex-platform-module-security-management-client-contracts-entities-user-role.mjs +221 -0
  16. package/fesm2022/acorex-platform-module-security-management-client-contracts-entities-user-role.mjs.map +1 -0
  17. package/fesm2022/acorex-platform-module-security-management-client-contracts-entities-users.mjs +562 -0
  18. package/fesm2022/acorex-platform-module-security-management-client-contracts-entities-users.mjs.map +1 -0
  19. package/fesm2022/acorex-platform-module-security-management-client-contracts-entity-catalog-acorex-platform-module-security-management-client-contracts-entity-catalog-CeqvAe30.mjs +102 -0
  20. package/fesm2022/acorex-platform-module-security-management-client-contracts-entity-catalog-acorex-platform-module-security-management-client-contracts-entity-catalog-CeqvAe30.mjs.map +1 -0
  21. package/fesm2022/acorex-platform-module-security-management-client-contracts-entity-catalog-device-sessions.entity-D5wMKRJ3.mjs +503 -0
  22. package/fesm2022/acorex-platform-module-security-management-client-contracts-entity-catalog-device-sessions.entity-D5wMKRJ3.mjs.map +1 -0
  23. package/fesm2022/acorex-platform-module-security-management-client-contracts-entity-catalog-identity-provider.entity-6LBD6MuU.mjs +250 -0
  24. package/fesm2022/acorex-platform-module-security-management-client-contracts-entity-catalog-identity-provider.entity-6LBD6MuU.mjs.map +1 -0
  25. package/fesm2022/acorex-platform-module-security-management-client-contracts-entity-catalog-policy.entity-CVsH_anF.mjs +208 -0
  26. package/fesm2022/acorex-platform-module-security-management-client-contracts-entity-catalog-policy.entity-CVsH_anF.mjs.map +1 -0
  27. package/fesm2022/acorex-platform-module-security-management-client-contracts-entity-catalog-profile.entity-B3m3wpcT.mjs +167 -0
  28. package/fesm2022/acorex-platform-module-security-management-client-contracts-entity-catalog-profile.entity-B3m3wpcT.mjs.map +1 -0
  29. package/fesm2022/acorex-platform-module-security-management-client-contracts-entity-catalog-role-permission.entity-DK99ir3U.mjs +144 -0
  30. package/fesm2022/acorex-platform-module-security-management-client-contracts-entity-catalog-role-permission.entity-DK99ir3U.mjs.map +1 -0
  31. package/fesm2022/acorex-platform-module-security-management-client-contracts-entity-catalog-roles.entity-B5PknTEu.mjs +195 -0
  32. package/fesm2022/acorex-platform-module-security-management-client-contracts-entity-catalog-roles.entity-B5PknTEu.mjs.map +1 -0
  33. package/fesm2022/acorex-platform-module-security-management-client-contracts-entity-catalog-user-role.entity-IHUWsgjf.mjs +145 -0
  34. package/fesm2022/acorex-platform-module-security-management-client-contracts-entity-catalog-user-role.entity-IHUWsgjf.mjs.map +1 -0
  35. package/fesm2022/acorex-platform-module-security-management-client-contracts-entity-catalog-users.entity-DmVp5gj1.mjs +486 -0
  36. package/fesm2022/acorex-platform-module-security-management-client-contracts-entity-catalog-users.entity-DmVp5gj1.mjs.map +1 -0
  37. package/fesm2022/acorex-platform-module-security-management-client-contracts-entity-catalog.mjs +2 -0
  38. package/fesm2022/acorex-platform-module-security-management-client-contracts-entity-catalog.mjs.map +1 -0
  39. package/fesm2022/acorex-platform-module-security-management-client-contracts.mjs +2 -0
  40. package/fesm2022/acorex-platform-module-security-management-client-contracts.mjs.map +1 -1
  41. package/fesm2022/{acorex-platform-module-security-management-client-index-DOHWBEzM.mjs → acorex-platform-module-security-management-client-index-Dw9MKtB1.mjs} +2 -2
  42. package/fesm2022/{acorex-platform-module-security-management-client-index-DOHWBEzM.mjs.map → acorex-platform-module-security-management-client-index-Dw9MKtB1.mjs.map} +1 -1
  43. package/fesm2022/acorex-platform-module-security-management-client-local-entities.mjs +36 -0
  44. package/fesm2022/acorex-platform-module-security-management-client-local-entities.mjs.map +1 -0
  45. package/fesm2022/acorex-platform-module-security-management-client.mjs +1 -1
  46. package/package.json +41 -1
  47. package/types/acorex-platform-module-security-management-client-contracts-entities-device-sessions.d.ts +5 -0
  48. package/types/acorex-platform-module-security-management-client-contracts-entities-identity-provider.d.ts +5 -0
  49. package/types/acorex-platform-module-security-management-client-contracts-entities-policy.d.ts +5 -0
  50. package/types/acorex-platform-module-security-management-client-contracts-entities-profile.d.ts +5 -0
  51. package/types/acorex-platform-module-security-management-client-contracts-entities-role-permission.d.ts +5 -0
  52. package/types/acorex-platform-module-security-management-client-contracts-entities-roles.d.ts +5 -0
  53. package/types/acorex-platform-module-security-management-client-contracts-entities-user-role.d.ts +5 -0
  54. package/types/acorex-platform-module-security-management-client-contracts-entities-users.d.ts +5 -0
  55. package/types/acorex-platform-module-security-management-client-contracts-entity-catalog.d.ts +10 -0
  56. package/types/acorex-platform-module-security-management-client-contracts.d.ts +10 -0
  57. package/types/acorex-platform-module-security-management-client-local-entities.d.ts +12 -0
  58. package/fesm2022/acorex-platform-module-security-management-client-acorex-platform-module-security-management-client-jSDkyMMZ.mjs.map +0 -1
@@ -0,0 +1,562 @@
1
+ import { AXPWidgetsCatalog, AXPWidgetsList } from '@acorex-platform/framework-shared/core';
2
+ import { createAllQueryView, entityMasterCrudActions, AXPEntityCommandScope, entityMasterRecordActions } from '@acorex-platform/framework-shared/entity';
3
+
4
+ /** Status provider key for `accessState` on SecurityManagement.User (transitions define editable paths in the status UI). */
5
+ const AXM_USER_ACCESS_STATE_DEFINITION_KEY = 'security-management.access-state.user';
6
+
7
+ /** Status provider key for persisted `effectiveState` on SecurityManagement.User (derived; read-only in UI). */
8
+ const AXM_USER_EFFECTIVE_STATE_DEFINITION_KEY = 'security-management.effective-state.user';
9
+
10
+ //#region ---- Security management server command keys ----
11
+ const AXMSecurityManagementServerCommands = {
12
+ SendPasswordResetEmail: 'SecurityManagement:Server:SendPasswordResetEmail',
13
+ CompletePasswordReset: 'SecurityManagement:Server:CompletePasswordReset',
14
+ ChangeOwnPassword: 'SecurityManagement:Server:ChangeOwnPassword',
15
+ };
16
+ /** Stable codes for self-service password change (client maps to i18n). */
17
+ const AXM_CHANGE_OWN_PASSWORD_ERROR_CODES = {
18
+ NotSignedIn: 'CHANGE_OWN_PASSWORD_NOT_SIGNED_IN',
19
+ IncorrectCurrent: 'CHANGE_OWN_PASSWORD_INCORRECT_CURRENT',
20
+ SameAsCurrent: 'CHANGE_OWN_PASSWORD_SAME_AS_CURRENT',
21
+ InvalidInput: 'CHANGE_OWN_PASSWORD_INVALID_INPUT',
22
+ };
23
+ /** Client/UI action key (confirm dialog → server send). */
24
+ const AXM_USER_SEND_PASSWORD_RESET_COMMAND = 'SecurityManagement:User:SendPasswordResetEmail';
25
+ //#endregion
26
+
27
+ const USER_ROLES_PAGE_COMPONENT_KEY = 'user-roles-page';
28
+
29
+ const config = {
30
+ i18n: 'security-management',
31
+ profileEntity: 'Profile',
32
+ };
33
+ const RootConfig = {
34
+ config,
35
+ module: {
36
+ route: 'security-management',
37
+ name: 'SecurityManagement',
38
+ title: `@${config.i18n}:module.title`,
39
+ icon: 'fa-light fa-shield-halved',
40
+ },
41
+ entities: {
42
+ policy: {
43
+ name: 'Policy',
44
+ title: `@${config.i18n}:policies.entities.policy.title`,
45
+ titlePlural: `@${config.i18n}:policies.entities.policy.plural`,
46
+ icon: 'fa-light fa-clipboard-list',
47
+ },
48
+ deviceSessions: {
49
+ name: 'DeviceSessions',
50
+ title: `@${config.i18n}:sessions.entities.session.title`,
51
+ titlePlural: `@${config.i18n}:sessions.entities.session.plural`,
52
+ icon: 'fa-light fa-laptop',
53
+ },
54
+ users: {
55
+ name: 'User',
56
+ title: `@${config.i18n}:users.entities.user.title`,
57
+ titlePlural: `@${config.i18n}:users.entities.user.plural`,
58
+ icon: 'fa-light fa-users',
59
+ },
60
+ roles: {
61
+ name: 'Role',
62
+ title: `@${config.i18n}:roles.entities.role.title`,
63
+ titlePlural: `@${config.i18n}:roles.entities.role.plural`,
64
+ icon: 'fa-light fa-user-tag',
65
+ },
66
+ rolePermission: {
67
+ name: 'RolePermission',
68
+ title: `@${config.i18n}:role-permissions.entities.role-permission.title`,
69
+ titlePlural: `@${config.i18n}:role-permissions.entities.role-permission.plural`,
70
+ icon: 'fa-light fa-key',
71
+ },
72
+ userRole: {
73
+ name: 'UserRole',
74
+ title: `@${config.i18n}:user-roles.entities.user-role.title`,
75
+ titlePlural: `@${config.i18n}:user-roles.entities.user-role.plural`,
76
+ icon: 'fa-light fa-user-tag',
77
+ },
78
+ profile: {
79
+ name: 'Profile',
80
+ title: `@${config.i18n}:profile.entities.profile.title`,
81
+ titlePlural: `@${config.i18n}:profile.entities.profile.plural`,
82
+ icon: 'fa-light fa-user',
83
+ },
84
+ identityProvider: {
85
+ name: 'IdentityProvider',
86
+ title: `@${config.i18n}:identity-providers.entities.identity-provider.title`,
87
+ titlePlural: `@${config.i18n}:identity-providers.entities.identity-provider.plural`,
88
+ icon: 'fa-light fa-id-badge',
89
+ },
90
+ },
91
+ queries: {
92
+ reports: {
93
+ getUserEffectiveRolesHistory: 'SecurityManagement:Reports:GetUserEffectiveRolesHistory',
94
+ getUserEffectivePermissionsHistory: 'SecurityManagement:Reports:GetUserEffectivePermissionsHistory',
95
+ getRoleHoldersHistory: 'SecurityManagement:Reports:GetRoleHoldersHistory',
96
+ getPermissionHoldersHistory: 'SecurityManagement:Reports:GetPermissionHoldersHistory',
97
+ getUserPasswordChangeHistory: 'SecurityManagement:Reports:GetUserPasswordChangeHistory',
98
+ },
99
+ },
100
+ };
101
+
102
+ async function usersFactory() {
103
+ const entityDef = {
104
+ module: RootConfig.module.name,
105
+ name: RootConfig.entities.users.name,
106
+ title: RootConfig.entities.users.title,
107
+ icon: RootConfig.entities.users.icon,
108
+ formats: {
109
+ individual: RootConfig.entities.users.title,
110
+ plural: RootConfig.entities.users.titlePlural,
111
+ searchResult: {
112
+ title: '{{ displayName }}',
113
+ description: '{{ context.eval("lastSignInAt", { pipes: ["timeleft"] }) || "@security-management:users.entities.user.fields.last-sign-in-at.never" }}',
114
+ },
115
+ },
116
+ plugins: [
117
+ {
118
+ name: 'status',
119
+ options: {
120
+ definition: 'security-management.account-state.user',
121
+ field: 'accountState',
122
+ isPrimary: false,
123
+ groupId: 'user-account-access',
124
+ title: '@security-management:users.entities.user.fields.account-lifecycle.title',
125
+ showInCreate: false,
126
+ generate: { views: { enabled: false } },
127
+ },
128
+ },
129
+ {
130
+ name: 'status',
131
+ options: {
132
+ field: 'accessState',
133
+ definition: AXM_USER_ACCESS_STATE_DEFINITION_KEY,
134
+ isPrimary: false,
135
+ groupId: 'user-account-access',
136
+ title: '@security-management:users.entities.user.fields.access-state.title',
137
+ showInCreate: false,
138
+ // Platform-scoped sign-in gate: display-only on User detail (tenant must not change).
139
+ // Platform mutations should go through a dedicated ops path once client isPlatform is available.
140
+ readonly: true,
141
+ generate: { views: { enabled: false } },
142
+ },
143
+ },
144
+ {
145
+ name: 'status',
146
+ options: {
147
+ field: 'effectiveState',
148
+ definition: AXM_USER_EFFECTIVE_STATE_DEFINITION_KEY,
149
+ isPrimary: true,
150
+ groupId: 'user-account-access',
151
+ title: '@security-management:users.entities.user.fields.effective-state.title',
152
+ showInCreate: false,
153
+ readonly: true,
154
+ generate: { views: { enabled: true } },
155
+ },
156
+ },
157
+ { name: 'unique-fields', options: { fields: 'email', scope: 'global' } },
158
+ { name: 'history' },
159
+ { name: 'lock' },
160
+ { name: 'compare' },
161
+ { name: 'reports' },
162
+ ],
163
+ pages: [
164
+ {
165
+ componentKey: USER_ROLES_PAGE_COMPONENT_KEY,
166
+ title: '@security-management:users.entities.user.pages.roles.title',
167
+ icon: 'fa-light fa-user-tag',
168
+ layout: { order: 1, position: 'after' },
169
+ appearOn: { create: true, update: true },
170
+ },
171
+ ],
172
+ groups: [
173
+ {
174
+ id: 'basic-info',
175
+ title: '@general:terms.interface.basic-info',
176
+ },
177
+ {
178
+ id: 'avatar',
179
+ title: '@general:terms.common.avatar',
180
+ icon: 'fa-light fa-image',
181
+ },
182
+ {
183
+ id: 'user-account-access',
184
+ title: '@security-management:users.entities.user.groups.account-access',
185
+ },
186
+ ],
187
+ properties: [
188
+ {
189
+ name: 'username',
190
+ title: '@general:terms.contact.username',
191
+ groupId: 'basic-info',
192
+ options: {
193
+ filter: {
194
+ advance: {
195
+ enabled: true,
196
+ },
197
+ inline: {
198
+ enabled: true,
199
+ },
200
+ },
201
+ sort: {
202
+ enabled: true,
203
+ },
204
+ },
205
+ schema: {
206
+ dataType: 'string',
207
+ readonly: '{{ !!context.eval("id") }}',
208
+ interface: {
209
+ type: AXPWidgetsCatalog.text,
210
+ options: {},
211
+ },
212
+ },
213
+ validations: [
214
+ {
215
+ rule: 'required',
216
+ },
217
+ ],
218
+ },
219
+ {
220
+ name: 'displayName',
221
+ title: `@general:terms.common.display-name`,
222
+ groupId: 'basic-info',
223
+ options: {
224
+ sort: {
225
+ enabled: true,
226
+ },
227
+ filter: {
228
+ advance: {
229
+ enabled: true,
230
+ },
231
+ inline: {
232
+ enabled: true,
233
+ },
234
+ },
235
+ },
236
+ schema: {
237
+ dataType: 'string',
238
+ interface: {
239
+ type: AXPWidgetsCatalog.text,
240
+ },
241
+ },
242
+ validations: [
243
+ {
244
+ rule: 'required',
245
+ },
246
+ ],
247
+ },
248
+ {
249
+ name: 'email',
250
+ title: '@general:terms.communication.email',
251
+ groupId: 'basic-info',
252
+ options: {
253
+ filter: {
254
+ advance: { enabled: true },
255
+ inline: { enabled: true },
256
+ },
257
+ sort: { enabled: true },
258
+ },
259
+ schema: {
260
+ dataType: 'string',
261
+ interface: {
262
+ type: AXPWidgetsCatalog.text,
263
+ options: {},
264
+ },
265
+ },
266
+ validations: [{ rule: 'required' }],
267
+ },
268
+ {
269
+ name: 'rolesList',
270
+ title: '@security-management:users.entities.user.fields.roles.title',
271
+ groupId: 'basic-info',
272
+ schema: {
273
+ dataType: 'array',
274
+ /**
275
+ * Display-only Role snapshots. Not a stored FK — source of truth is
276
+ * scoped SecurityManagement.UserRole. Name must not end in Id/Ids so
277
+ * the query planner does not join Role from this User document.
278
+ */
279
+ readonly: true,
280
+ visible: false,
281
+ interface: {
282
+ type: AXPWidgetsList.Editors.LookupBox,
283
+ options: {
284
+ entity: `${RootConfig.module.name}.${RootConfig.entities.roles.name}`,
285
+ textField: 'title',
286
+ valueField: 'id',
287
+ multiple: true,
288
+ look: 'select',
289
+ },
290
+ },
291
+ },
292
+ },
293
+ {
294
+ name: 'homeTenantId',
295
+ title: '@security-management:users.entities.user.fields.home-tenant.title',
296
+ groupId: 'basic-info',
297
+ schema: {
298
+ dataType: 'string',
299
+ /** Stamped on create from session; not shown on User forms. */
300
+ readonly: true,
301
+ visible: false,
302
+ interface: {
303
+ type: AXPWidgetsCatalog.text,
304
+ options: {},
305
+ },
306
+ },
307
+ },
308
+ {
309
+ name: 'password',
310
+ title: '@security-management:users.entities.user.fields.password.title',
311
+ groupId: 'basic-info',
312
+ schema: {
313
+ dataType: 'string',
314
+ visible: false,
315
+ interface: {
316
+ type: AXPWidgetsCatalog.text,
317
+ },
318
+ },
319
+ },
320
+ {
321
+ name: 'avatar',
322
+ title: '@general:terms.common.avatar',
323
+ groupId: 'avatar',
324
+ schema: {
325
+ dataType: 'string',
326
+ nullable: true,
327
+ interface: {
328
+ type: AXPWidgetsList.Advanced.Image,
329
+ options: {
330
+ type: 'profile-photo',
331
+ },
332
+ },
333
+ },
334
+ },
335
+ {
336
+ name: 'pinCode',
337
+ title: '@security-management:users.entities.user.fields.pin-code.title',
338
+ groupId: 'basic-info',
339
+ schema: {
340
+ dataType: 'string',
341
+ readonly: true,
342
+ visible: false,
343
+ interface: {
344
+ type: AXPWidgetsCatalog.text,
345
+ },
346
+ },
347
+ },
348
+ {
349
+ name: 'passwordChangedAt',
350
+ title: '@security-management:users.entities.user.fields.password-changed-at.title',
351
+ groupId: 'user-account-access',
352
+ schema: {
353
+ dataType: 'date',
354
+ readonly: true,
355
+ visible: false,
356
+ nullable: true,
357
+ interface: {
358
+ type: AXPWidgetsCatalog.dateTime,
359
+ },
360
+ },
361
+ },
362
+ {
363
+ name: 'pinChangedAt',
364
+ title: '@security-management:users.entities.user.fields.pin-changed-at.title',
365
+ groupId: 'user-account-access',
366
+ schema: {
367
+ dataType: 'date',
368
+ readonly: true,
369
+ visible: false,
370
+ nullable: true,
371
+ interface: {
372
+ type: AXPWidgetsCatalog.dateTime,
373
+ },
374
+ },
375
+ },
376
+ {
377
+ name: 'lastSignInAt',
378
+ title: '@security-management:users.entities.user.fields.last-sign-in-at.title',
379
+ groupId: 'user-account-access',
380
+ schema: {
381
+ dataType: 'date',
382
+ readonly: true,
383
+ visible: false,
384
+ nullable: true,
385
+ interface: {
386
+ type: AXPWidgetsCatalog.dateTime,
387
+ },
388
+ },
389
+ },
390
+ {
391
+ name: 'passwordReset',
392
+ title: '@security-management:users.entities.user.fields.password-reset.title',
393
+ groupId: 'user-account-access',
394
+ schema: {
395
+ dataType: 'object',
396
+ readonly: true,
397
+ visible: false,
398
+ nullable: true,
399
+ interface: {
400
+ type: AXPWidgetsCatalog.text,
401
+ },
402
+ },
403
+ },
404
+ ],
405
+ columns: [
406
+ { name: 'username' },
407
+ { name: 'displayName' },
408
+ { name: 'email' },
409
+ { name: 'rolesList' },
410
+ { name: 'lastSignInAt', options: { visible: false } },
411
+ ],
412
+ interfaces: {
413
+ master: {
414
+ create: {
415
+ sections: [
416
+ {
417
+ id: 'basic-info',
418
+ order: 1,
419
+ layout: { positions: { lg: { colSpan: 8, colStart: 1 } } },
420
+ },
421
+ {
422
+ id: 'avatar',
423
+ order: 2,
424
+ layout: { positions: { lg: { colSpan: 4, colStart: 9 } } },
425
+ },
426
+ ],
427
+ properties: [
428
+ {
429
+ name: 'username',
430
+ layout: { positions: { lg: { colSpan: 6 } } },
431
+ },
432
+ {
433
+ name: 'displayName',
434
+ layout: { positions: { lg: { colSpan: 6 } } },
435
+ },
436
+ {
437
+ name: 'email',
438
+ layout: { positions: { lg: { colSpan: 12 } } },
439
+ },
440
+ {
441
+ name: 'avatar',
442
+ layout: {
443
+ label: { visible: false },
444
+ positions: { lg: { colSpan: 12, order: 1 } },
445
+ },
446
+ },
447
+ ],
448
+ },
449
+ update: {
450
+ sections: [
451
+ {
452
+ id: 'basic-info',
453
+ order: 1,
454
+ layout: { positions: { lg: { colSpan: 8, colStart: 1 } } },
455
+ },
456
+ {
457
+ id: 'avatar',
458
+ order: 2,
459
+ layout: { positions: { lg: { colSpan: 4, colStart: 9 } } },
460
+ },
461
+ {
462
+ id: 'user-account-access',
463
+ order: 3,
464
+ layout: { positions: { lg: { colSpan: 12, colStart: 1 } } },
465
+ },
466
+ ],
467
+ properties: [
468
+ { name: 'username', layout: { positions: { lg: { colSpan: 6 } } } },
469
+ { name: 'displayName', layout: { positions: { lg: { colSpan: 6 } } } },
470
+ { name: 'email', layout: { positions: { lg: { colSpan: 6 } } } },
471
+ {
472
+ name: 'avatar',
473
+ layout: {
474
+ label: { visible: false },
475
+ positions: { lg: { colSpan: 12, order: 1 } },
476
+ },
477
+ },
478
+ { name: 'accountState', layout: { positions: { lg: { colSpan: 4 } } } },
479
+ { name: 'accessState', layout: { positions: { lg: { colSpan: 4 } } } },
480
+ { name: 'effectiveState', layout: { positions: { lg: { colSpan: 4 } } } },
481
+ ],
482
+ },
483
+ single: {
484
+ title: '{{ context.eval("displayName") ?? context.eval("username") }}',
485
+ description: '{{ context.eval("lastSignInAt", { pipes: ["timeleft"] }) || "@security-management:users.entities.user.fields.last-sign-in-at.never" }}',
486
+ sections: [
487
+ {
488
+ id: 'basic-info',
489
+ order: 1,
490
+ layout: { positions: { lg: { colSpan: 8, colStart: 1 } } },
491
+ },
492
+ {
493
+ id: 'avatar',
494
+ order: 2,
495
+ layout: { positions: { lg: { colSpan: 4, colStart: 9 } } },
496
+ },
497
+ {
498
+ id: 'user-account-access',
499
+ order: 3,
500
+ layout: { positions: { lg: { colSpan: 12, colStart: 1 } } },
501
+ },
502
+ ],
503
+ properties: [
504
+ { name: 'username', layout: { positions: { lg: { colSpan: 6 } } } },
505
+ { name: 'displayName', layout: { positions: { lg: { colSpan: 6 } } } },
506
+ { name: 'email', layout: { positions: { lg: { colSpan: 6 } } } },
507
+ {
508
+ name: 'avatar',
509
+ layout: {
510
+ label: { visible: false },
511
+ positions: { lg: { colSpan: 12, order: 1 } },
512
+ },
513
+ },
514
+ { name: 'accountState', layout: { positions: { lg: { colSpan: 4 } } } },
515
+ { name: 'accessState', layout: { positions: { lg: { colSpan: 4 } } } },
516
+ { name: 'effectiveState', layout: { positions: { lg: { colSpan: 4 } } } },
517
+ ],
518
+ actions: [
519
+ {
520
+ title: '@security-management:users.entities.user.actions.send-password-reset.title',
521
+ icon: 'fa-light fa-envelope',
522
+ command: AXM_USER_SEND_PASSWORD_RESET_COMMAND,
523
+ priority: 'secondary',
524
+ type: 'view',
525
+ scope: AXPEntityCommandScope.Individual,
526
+ },
527
+ ...entityMasterRecordActions(),
528
+ ],
529
+ },
530
+ list: {
531
+ actions: [...entityMasterCrudActions()],
532
+ views: [
533
+ createAllQueryView({
534
+ sorts: [{ name: 'displayName', dir: 'asc' }],
535
+ }),
536
+ ],
537
+ },
538
+ card: {
539
+ enabled: true,
540
+ header: {
541
+ title: 'displayName',
542
+ description: '{{ context.eval("lastSignInAt", { pipes: ["timeleft"] }) || "@security-management:users.entities.user.fields.last-sign-in-at.never" }}',
543
+ avatar: 'avatar',
544
+ },
545
+ fields: [
546
+ { name: 'username', display: 'meta' },
547
+ { name: 'email', display: 'meta' },
548
+ { name: 'rolesList', display: 'simple' },
549
+ ],
550
+ },
551
+ },
552
+ },
553
+ };
554
+ return entityDef;
555
+ }
556
+
557
+ /**
558
+ * Generated bundle index. Do not edit.
559
+ */
560
+
561
+ export { usersFactory };
562
+ //# sourceMappingURL=acorex-platform-module-security-management-client-contracts-entities-users.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acorex-platform-module-security-management-client-contracts-entities-users.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/root-config.ts","../../../../libs/modules/security-management/contracts/src/entities/users/users.entity.ts","../../../../libs/modules/security-management/contracts/src/acorex-platform-module-security-management-client-contracts-entities-users.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} 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\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\n//#endregion\n","export const USER_ROLES_PAGE_COMPONENT_KEY = 'user-roles-page';\n","const config = {\n i18n: 'security-management',\n profileEntity: 'Profile',\n};\nexport const RootConfig = {\n config,\n module: {\n route: 'security-management',\n name: 'SecurityManagement',\n title: `@${config.i18n}:module.title`,\n icon: 'fa-light fa-shield-halved',\n },\n entities: {\n policy: {\n name: 'Policy',\n title: `@${config.i18n}:policies.entities.policy.title`,\n titlePlural: `@${config.i18n}:policies.entities.policy.plural`,\n icon: 'fa-light fa-clipboard-list',\n },\n deviceSessions: {\n name: 'DeviceSessions',\n title: `@${config.i18n}:sessions.entities.session.title`,\n titlePlural: `@${config.i18n}:sessions.entities.session.plural`,\n icon: 'fa-light fa-laptop',\n },\n users: {\n name: 'User',\n title: `@${config.i18n}:users.entities.user.title`,\n titlePlural: `@${config.i18n}:users.entities.user.plural`,\n icon: 'fa-light fa-users',\n },\n roles: {\n name: 'Role',\n title: `@${config.i18n}:roles.entities.role.title`,\n titlePlural: `@${config.i18n}:roles.entities.role.plural`,\n icon: 'fa-light fa-user-tag',\n },\n rolePermission: {\n name: 'RolePermission',\n title: `@${config.i18n}:role-permissions.entities.role-permission.title`,\n titlePlural: `@${config.i18n}:role-permissions.entities.role-permission.plural`,\n icon: 'fa-light fa-key',\n },\n userRole: {\n name: 'UserRole',\n title: `@${config.i18n}:user-roles.entities.user-role.title`,\n titlePlural: `@${config.i18n}:user-roles.entities.user-role.plural`,\n icon: 'fa-light fa-user-tag',\n },\n profile: {\n name: 'Profile',\n title: `@${config.i18n}:profile.entities.profile.title`,\n titlePlural: `@${config.i18n}:profile.entities.profile.plural`,\n icon: 'fa-light fa-user',\n },\n identityProvider: {\n name: 'IdentityProvider',\n title: `@${config.i18n}:identity-providers.entities.identity-provider.title`,\n titlePlural: `@${config.i18n}:identity-providers.entities.identity-provider.plural`,\n icon: 'fa-light fa-id-badge',\n },\n },\n queries: {\n reports: {\n getUserEffectiveRolesHistory: 'SecurityManagement:Reports:GetUserEffectiveRolesHistory',\n getUserEffectivePermissionsHistory:\n 'SecurityManagement:Reports:GetUserEffectivePermissionsHistory',\n getRoleHoldersHistory: 'SecurityManagement:Reports:GetRoleHoldersHistory',\n getPermissionHoldersHistory: 'SecurityManagement:Reports:GetPermissionHoldersHistory',\n getUserPasswordChangeHistory: 'SecurityManagement:Reports:GetUserPasswordChangeHistory',\n },\n },\n} as const;\n","import { AXPWidgetsCatalog, AXPWidgetsList } from '@acorex-platform/framework-shared/core';\nimport {\n AXPEntity,\n AXPEntityCommandScope,\n createAllQueryView,\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 { AXM_USER_SEND_PASSWORD_RESET_COMMAND } 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 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 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: '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 ...entityMasterRecordActions(),\n ],\n },\n list: {\n actions: [...entityMasterCrudActions()],\n views: [\n createAllQueryView({\n sorts: [{ name: 'displayName', dir: 'asc' }],\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","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './entity-entry.users';\n"],"names":[],"mappings":"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"}