@acorex-platform/module-security-management-client 0.0.59 → 0.0.60
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-CNHPwr3d.mjs → acorex-platform-module-security-management-client-acorex-platform-module-security-management-client-B61j_cJF.mjs} +206 -15
- package/fesm2022/acorex-platform-module-security-management-client-acorex-platform-module-security-management-client-B61j_cJF.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-security-management-client-approve-join-request.command-BSvK59LV.mjs +322 -0
- package/fesm2022/acorex-platform-module-security-management-client-approve-join-request.command-BSvK59LV.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-security-management-client-contracts-entities-device-sessions.mjs +21 -2
- 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-users.mjs +170 -39
- 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-DAZZcjkf.mjs → acorex-platform-module-security-management-client-contracts-entity-catalog-acorex-platform-module-security-management-client-contracts-entity-catalog-JP3zTrun.mjs} +10 -10
- package/fesm2022/{acorex-platform-module-security-management-client-contracts-entity-catalog-acorex-platform-module-security-management-client-contracts-entity-catalog-DAZZcjkf.mjs.map → acorex-platform-module-security-management-client-contracts-entity-catalog-acorex-platform-module-security-management-client-contracts-entity-catalog-JP3zTrun.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-security-management-client-contracts-entity-catalog-device-sessions.entity-DXhQ1_3K.mjs → acorex-platform-module-security-management-client-contracts-entity-catalog-device-sessions.entity-lwQtCJoy.mjs} +23 -4
- package/fesm2022/acorex-platform-module-security-management-client-contracts-entity-catalog-device-sessions.entity-lwQtCJoy.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-security-management-client-contracts-entity-catalog-identity-provider.entity-D6g5wMQu.mjs → acorex-platform-module-security-management-client-contracts-entity-catalog-identity-provider.entity-DZfizo-n.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-security-management-client-contracts-entity-catalog-identity-provider.entity-D6g5wMQu.mjs.map → acorex-platform-module-security-management-client-contracts-entity-catalog-identity-provider.entity-DZfizo-n.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-security-management-client-contracts-entity-catalog-policy.entity-DI30j3q8.mjs → acorex-platform-module-security-management-client-contracts-entity-catalog-policy.entity-Dkl_6Iio.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-security-management-client-contracts-entity-catalog-policy.entity-DI30j3q8.mjs.map → acorex-platform-module-security-management-client-contracts-entity-catalog-policy.entity-Dkl_6Iio.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-security-management-client-contracts-entity-catalog-profile.entity-zl0xsn2K.mjs → acorex-platform-module-security-management-client-contracts-entity-catalog-profile.entity-Ddbd-rAG.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-security-management-client-contracts-entity-catalog-profile.entity-zl0xsn2K.mjs.map → acorex-platform-module-security-management-client-contracts-entity-catalog-profile.entity-Ddbd-rAG.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-security-management-client-contracts-entity-catalog-role-permission.entity-Dv93TmJN.mjs → acorex-platform-module-security-management-client-contracts-entity-catalog-role-permission.entity-WCgik8MV.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-security-management-client-contracts-entity-catalog-role-permission.entity-Dv93TmJN.mjs.map → acorex-platform-module-security-management-client-contracts-entity-catalog-role-permission.entity-WCgik8MV.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-security-management-client-contracts-entity-catalog-roles.entity-H53Y7i9P.mjs → acorex-platform-module-security-management-client-contracts-entity-catalog-roles.entity-CRZftClq.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-security-management-client-contracts-entity-catalog-roles.entity-H53Y7i9P.mjs.map → acorex-platform-module-security-management-client-contracts-entity-catalog-roles.entity-CRZftClq.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-security-management-client-contracts-entity-catalog-user-role.entity-i8zSXdbv.mjs → acorex-platform-module-security-management-client-contracts-entity-catalog-user-role.entity-9QpoRCOF.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-security-management-client-contracts-entity-catalog-user-role.entity-i8zSXdbv.mjs.map → acorex-platform-module-security-management-client-contracts-entity-catalog-user-role.entity-9QpoRCOF.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-security-management-client-contracts-entity-catalog-user-two-factor.entity-Bt710bWo.mjs → acorex-platform-module-security-management-client-contracts-entity-catalog-user-two-factor.entity-C34VzcYk.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-security-management-client-contracts-entity-catalog-user-two-factor.entity-Bt710bWo.mjs.map → acorex-platform-module-security-management-client-contracts-entity-catalog-user-two-factor.entity-C34VzcYk.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-security-management-client-contracts-entity-catalog-users.entity-LSatoTXa.mjs → acorex-platform-module-security-management-client-contracts-entity-catalog-users.entity-DuC5cfIb.mjs} +172 -41
- package/fesm2022/acorex-platform-module-security-management-client-contracts-entity-catalog-users.entity-DuC5cfIb.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 +339 -3
- package/fesm2022/acorex-platform-module-security-management-client-contracts.mjs.map +1 -1
- package/fesm2022/acorex-platform-module-security-management-client-create-user-in-tenant.command-BFnZRmh9.mjs +376 -0
- package/fesm2022/acorex-platform-module-security-management-client-create-user-in-tenant.command-BFnZRmh9.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-security-management-client-index-DpAVeAIc.mjs → acorex-platform-module-security-management-client-index-B6qo6qLT.mjs} +5 -156
- package/fesm2022/acorex-platform-module-security-management-client-index-B6qo6qLT.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-security-management-client-invite-user.command-ClQ6WxxN.mjs +370 -0
- package/fesm2022/acorex-platform-module-security-management-client-invite-user.command-ClQ6WxxN.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-security-management-client-reject-join-request.command-B3kiok6b.mjs +76 -0
- package/fesm2022/acorex-platform-module-security-management-client-reject-join-request.command-B3kiok6b.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-security-management-client-reset-two-factor.command-psTDKoNf.mjs → acorex-platform-module-security-management-client-reset-two-factor.command-C27mUZ1-.mjs} +7 -2
- package/fesm2022/acorex-platform-module-security-management-client-reset-two-factor.command-C27mUZ1-.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-security-management-client-send-password-reset-email.command-CoQgWdya.mjs → acorex-platform-module-security-management-client-send-password-reset-email.command-DFxm2T_x.mjs} +7 -2
- package/fesm2022/acorex-platform-module-security-management-client-send-password-reset-email.command-DFxm2T_x.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-security-management-client-settings.provider-CwDiU-C8.mjs +54 -0
- package/fesm2022/acorex-platform-module-security-management-client-settings.provider-CwDiU-C8.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-security-management-client-user-role-grant.service-6U17jzjq.mjs +231 -0
- package/fesm2022/acorex-platform-module-security-management-client-user-role-grant.service-6U17jzjq.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-security-management-client.mjs +1 -1
- package/i18n/en-AU/security-management.json +91 -4
- package/i18n/en-US/security-management.json +91 -4
- package/i18n/fa-IR/security-management.json +91 -4
- package/package.json +1 -1
- package/types/acorex-platform-module-security-management-client-contracts.d.ts +274 -7
- package/fesm2022/acorex-platform-module-security-management-client-acorex-platform-module-security-management-client-CNHPwr3d.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-security-management-client-contracts-entity-catalog-device-sessions.entity-DXhQ1_3K.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-security-management-client-contracts-entity-catalog-users.entity-LSatoTXa.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-security-management-client-create-user-in-tenant.command-CDtT9Ux_.mjs +0 -142
- package/fesm2022/acorex-platform-module-security-management-client-create-user-in-tenant.command-CDtT9Ux_.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-security-management-client-index-DpAVeAIc.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-security-management-client-invite-user.command-kFXjLdxy.mjs +0 -143
- package/fesm2022/acorex-platform-module-security-management-client-invite-user.command-kFXjLdxy.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-security-management-client-reset-two-factor.command-psTDKoNf.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-security-management-client-send-password-reset-email.command-CoQgWdya.mjs.map +0 -1
|
@@ -0,0 +1,322 @@
|
|
|
1
|
+
import { AXToastService } from '@acorex/components/toast';
|
|
2
|
+
import { AXTranslationService, resolveMultiLanguageString } from '@acorex/core/translation';
|
|
3
|
+
import { AXPSessionService } from '@acorex-platform/framework-client/auth';
|
|
4
|
+
import { AXPLayoutBuilderService, resolveLayoutBuilderDialogResult } from '@acorex-platform/framework-client/layout/builder';
|
|
5
|
+
import { AXPCommandService } from '@acorex-platform/framework-client/runtime';
|
|
6
|
+
import { AXPWidgetsList } from '@acorex-platform/framework-shared/core';
|
|
7
|
+
import { resolveEntityActionCommandInput } from '@acorex-platform/framework-shared/runtime';
|
|
8
|
+
import { AXMSecurityManagementServerCommands, AXM_JOIN_REQUEST_ERROR_CODES, normalizeInviteApplicationRoleAssignments, flattenInviteApplicationRoleAssignments } from '@acorex-platform/module-security-management-client/contracts';
|
|
9
|
+
export { AXM_USER_APPROVE_JOIN_REQUEST_COMMAND } from '@acorex-platform/module-security-management-client/contracts';
|
|
10
|
+
import * as i0 from '@angular/core';
|
|
11
|
+
import { inject, Injectable } from '@angular/core';
|
|
12
|
+
import { A as AXMUserRoleGrantService } from './acorex-platform-module-security-management-client-user-role-grant.service-6U17jzjq.mjs';
|
|
13
|
+
import { r as resolveInvitationCommandTargets } from './acorex-platform-module-security-management-client-invitation-target.util-BAXQZwLW.mjs';
|
|
14
|
+
|
|
15
|
+
/** TM edition feature — multi-app invite/approve (ADR-TEN-001 D-05). */
|
|
16
|
+
const INVITE_MULTI_APPLICATION_FEATURE = 'TenantManagement:Feature:InviteMultiApplication';
|
|
17
|
+
const TENANT_USER_ENTITY = 'TenantManagement.TenantUser';
|
|
18
|
+
const TENANT_USER_ENTITY_NAME = 'TenantUser';
|
|
19
|
+
//#endregion
|
|
20
|
+
//#region ---- AXPApproveJoinRequestCommand ----
|
|
21
|
+
class AXPApproveJoinRequestCommand {
|
|
22
|
+
constructor() {
|
|
23
|
+
this.layoutBuilder = inject(AXPLayoutBuilderService);
|
|
24
|
+
this.toastService = inject(AXToastService);
|
|
25
|
+
this.translationService = inject(AXTranslationService);
|
|
26
|
+
this.commandService = inject(AXPCommandService);
|
|
27
|
+
this.sessionService = inject(AXPSessionService);
|
|
28
|
+
this.userRoleGrantService = inject(AXMUserRoleGrantService);
|
|
29
|
+
}
|
|
30
|
+
async execute(input) {
|
|
31
|
+
const actionInput = resolveEntityActionCommandInput(input);
|
|
32
|
+
const data = (actionInput.data ?? {});
|
|
33
|
+
const { tenantUserId, userId } = resolveInvitationCommandTargets({
|
|
34
|
+
data,
|
|
35
|
+
tenantUserId: input?.tenantUserId,
|
|
36
|
+
userId: input?.userId,
|
|
37
|
+
});
|
|
38
|
+
if (!tenantUserId && !userId) {
|
|
39
|
+
return { success: false, message: { text: 'Tenant user id is required.' } };
|
|
40
|
+
}
|
|
41
|
+
const form = await this.openApproveDialog(actionInput);
|
|
42
|
+
if (!form) {
|
|
43
|
+
return { success: true, kind: 'object', data: { outcome: 'cancelled' } };
|
|
44
|
+
}
|
|
45
|
+
const tenantMembershipApprove = this.allowsMultiApplicationApprove(actionInput);
|
|
46
|
+
const remotePayload = this.toRemotePayload(form, tenantMembershipApprove, tenantUserId, userId);
|
|
47
|
+
const result = await this.commandService.executeRemote(AXMSecurityManagementServerCommands.ApproveJoinRequest, remotePayload);
|
|
48
|
+
if (result?.success) {
|
|
49
|
+
const [toastTitle, toastContent] = await Promise.all([
|
|
50
|
+
this.translationService
|
|
51
|
+
.translateAsync('@security-management:users.entities.user.actions.approve-join-request.success.title')
|
|
52
|
+
.catch(() => 'Approved'),
|
|
53
|
+
this.translationService
|
|
54
|
+
.translateAsync('@security-management:users.entities.user.actions.approve-join-request.success.description')
|
|
55
|
+
.catch(() => 'The membership request was approved.'),
|
|
56
|
+
]);
|
|
57
|
+
this.toastService.show({ color: 'success', title: toastTitle, content: toastContent, timeOut: 3000 });
|
|
58
|
+
return { success: true, kind: 'object', data: undefined };
|
|
59
|
+
}
|
|
60
|
+
const [toastTitle, fallback] = await Promise.all([
|
|
61
|
+
this.translationService
|
|
62
|
+
.translateAsync('@security-management:users.entities.user.actions.approve-join-request.error.title')
|
|
63
|
+
.catch(() => 'Approve Failed'),
|
|
64
|
+
this.translationService
|
|
65
|
+
.translateAsync('@security-management:users.entities.user.actions.approve-join-request.error.description')
|
|
66
|
+
.catch(() => 'Failed to approve the membership request.'),
|
|
67
|
+
]);
|
|
68
|
+
const code = typeof result?.message?.code === 'string' ? result.message.code : '';
|
|
69
|
+
const mapped = code === AXM_JOIN_REQUEST_ERROR_CODES.NotPending
|
|
70
|
+
? await this.translationService
|
|
71
|
+
.translateAsync('@security-management:users.entities.user.actions.approve-join-request.error.not-pending')
|
|
72
|
+
.catch(() => fallback)
|
|
73
|
+
: fallback;
|
|
74
|
+
this.toastService.show({ color: 'danger', title: toastTitle, content: mapped, timeOut: 4000 });
|
|
75
|
+
return { success: false };
|
|
76
|
+
}
|
|
77
|
+
allowsMultiApplicationApprove(actionInput) {
|
|
78
|
+
if (!this.sessionService.isFeatureEnabled(INVITE_MULTI_APPLICATION_FEATURE)) {
|
|
79
|
+
return false;
|
|
80
|
+
}
|
|
81
|
+
const entity = actionInput.entity ?? '';
|
|
82
|
+
const name = actionInput.entityInfo?.name ?? '';
|
|
83
|
+
return entity === TENANT_USER_ENTITY || name === TENANT_USER_ENTITY_NAME;
|
|
84
|
+
}
|
|
85
|
+
toRemotePayload(form, tenantMembershipApprove, tenantUserId, userId) {
|
|
86
|
+
const base = {
|
|
87
|
+
tenantUserId,
|
|
88
|
+
userId,
|
|
89
|
+
tenantMembershipApprove,
|
|
90
|
+
};
|
|
91
|
+
if (!tenantMembershipApprove) {
|
|
92
|
+
return {
|
|
93
|
+
...base,
|
|
94
|
+
roleIds: form.roleIds,
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
const assignments = normalizeInviteApplicationRoleAssignments(form.applicationRoleRows);
|
|
98
|
+
const flat = flattenInviteApplicationRoleAssignments(assignments);
|
|
99
|
+
return {
|
|
100
|
+
...base,
|
|
101
|
+
applicationIds: flat.applicationIds,
|
|
102
|
+
roleIds: flat.roleIds.length > 0 ? flat.roleIds : undefined,
|
|
103
|
+
applicationRoleAssignments: assignments,
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
async loadEntitledApplicationOptions() {
|
|
107
|
+
const result = await this.commandService.executeRemote(AXMSecurityManagementServerCommands.ListTenantEntitledApplications, {});
|
|
108
|
+
if (!result?.success) {
|
|
109
|
+
return [];
|
|
110
|
+
}
|
|
111
|
+
const payload = result?.data;
|
|
112
|
+
const items = Array.isArray(payload?.items) ? payload.items : [];
|
|
113
|
+
const locale = this.translationService.getActiveLang?.() ?? 'en-US';
|
|
114
|
+
return items
|
|
115
|
+
.map((item) => {
|
|
116
|
+
const id = String(item?.id ?? '').trim();
|
|
117
|
+
if (!id) {
|
|
118
|
+
return null;
|
|
119
|
+
}
|
|
120
|
+
const title = resolveMultiLanguageString(item.title, locale).trim() || id;
|
|
121
|
+
return { id, title };
|
|
122
|
+
})
|
|
123
|
+
.filter((row) => row != null);
|
|
124
|
+
}
|
|
125
|
+
async loadTenantUserInviteRoleOptions(applicationId) {
|
|
126
|
+
const result = await this.commandService.executeRemote(AXMSecurityManagementServerCommands.ListInviteAssignableRoles, applicationId ? { applicationId } : {});
|
|
127
|
+
if (!result?.success) {
|
|
128
|
+
return [];
|
|
129
|
+
}
|
|
130
|
+
const payload = result?.data;
|
|
131
|
+
const items = Array.isArray(payload?.items) ? payload.items : [];
|
|
132
|
+
const locale = this.translationService.getActiveLang?.() ?? 'en-US';
|
|
133
|
+
return items
|
|
134
|
+
.map((item) => {
|
|
135
|
+
const id = String(item?.id ?? '').trim();
|
|
136
|
+
const applicationId = String(item?.applicationId ?? '').trim();
|
|
137
|
+
if (!id || !applicationId) {
|
|
138
|
+
return null;
|
|
139
|
+
}
|
|
140
|
+
const title = resolveMultiLanguageString(item.title, locale).trim() || id;
|
|
141
|
+
return { id, title, applicationId };
|
|
142
|
+
})
|
|
143
|
+
.filter((row) => row != null);
|
|
144
|
+
}
|
|
145
|
+
buildApplicationRoleRepeaterChildren(entitledApps, roleOptions) {
|
|
146
|
+
return [
|
|
147
|
+
{
|
|
148
|
+
type: AXPWidgetsList.Layouts.FlexLayout,
|
|
149
|
+
mode: 'edit',
|
|
150
|
+
options: {
|
|
151
|
+
flexDirection: 'row',
|
|
152
|
+
gap: '12px',
|
|
153
|
+
alignItems: 'flex-end',
|
|
154
|
+
wrap: 'nowrap',
|
|
155
|
+
},
|
|
156
|
+
children: [
|
|
157
|
+
{
|
|
158
|
+
type: AXPWidgetsList.Layouts.FlexItemLayout,
|
|
159
|
+
mode: 'edit',
|
|
160
|
+
options: { grow: '1', shrink: '1', basis: '0' },
|
|
161
|
+
children: [
|
|
162
|
+
{
|
|
163
|
+
type: AXPWidgetsList.Layouts.FormField,
|
|
164
|
+
mode: 'edit',
|
|
165
|
+
options: {
|
|
166
|
+
label: '@security-management:users.entities.user.actions.approve-join-request.fields.application',
|
|
167
|
+
showLabel: true,
|
|
168
|
+
},
|
|
169
|
+
children: [
|
|
170
|
+
{
|
|
171
|
+
type: AXPWidgetsList.Editors.SelectBox,
|
|
172
|
+
mode: 'edit',
|
|
173
|
+
path: 'applicationId',
|
|
174
|
+
name: 'applicationId',
|
|
175
|
+
options: {
|
|
176
|
+
dataSource: entitledApps,
|
|
177
|
+
valueField: 'id',
|
|
178
|
+
textField: 'title',
|
|
179
|
+
allowSearch: true,
|
|
180
|
+
validations: [{ rule: 'required' }],
|
|
181
|
+
},
|
|
182
|
+
},
|
|
183
|
+
],
|
|
184
|
+
},
|
|
185
|
+
],
|
|
186
|
+
},
|
|
187
|
+
{
|
|
188
|
+
type: AXPWidgetsList.Layouts.FlexItemLayout,
|
|
189
|
+
mode: 'edit',
|
|
190
|
+
options: { grow: '1', shrink: '1', basis: '0' },
|
|
191
|
+
children: [
|
|
192
|
+
{
|
|
193
|
+
type: AXPWidgetsList.Layouts.FormField,
|
|
194
|
+
mode: 'edit',
|
|
195
|
+
options: {
|
|
196
|
+
label: '@security-management:users.entities.user.actions.approve-join-request.fields.roles',
|
|
197
|
+
showLabel: true,
|
|
198
|
+
},
|
|
199
|
+
children: [
|
|
200
|
+
{
|
|
201
|
+
type: AXPWidgetsList.Editors.SelectBox,
|
|
202
|
+
mode: 'edit',
|
|
203
|
+
path: 'roleIds',
|
|
204
|
+
name: 'roleIds',
|
|
205
|
+
options: {
|
|
206
|
+
dataSource: roleOptions,
|
|
207
|
+
valueField: 'id',
|
|
208
|
+
textField: 'title',
|
|
209
|
+
multiple: true,
|
|
210
|
+
allowSearch: true,
|
|
211
|
+
disabled: "{{ !context.eval('>applicationId') }}",
|
|
212
|
+
filter: {
|
|
213
|
+
field: 'applicationId',
|
|
214
|
+
operator: { type: 'equal' },
|
|
215
|
+
value: "{{ context.eval('>applicationId') }}",
|
|
216
|
+
},
|
|
217
|
+
},
|
|
218
|
+
triggers: [
|
|
219
|
+
{
|
|
220
|
+
event: "{{ events.context('>applicationId') }}",
|
|
221
|
+
action: '{{ widget.setValue([]); widget.refresh(); }}',
|
|
222
|
+
},
|
|
223
|
+
],
|
|
224
|
+
},
|
|
225
|
+
],
|
|
226
|
+
},
|
|
227
|
+
],
|
|
228
|
+
},
|
|
229
|
+
],
|
|
230
|
+
},
|
|
231
|
+
];
|
|
232
|
+
}
|
|
233
|
+
async openApproveDialog(actionInput) {
|
|
234
|
+
const multiApp = this.allowsMultiApplicationApprove(actionInput);
|
|
235
|
+
const [entitledApps, inviteRoleOptions, roleOptions] = await Promise.all([
|
|
236
|
+
multiApp ? this.loadEntitledApplicationOptions() : Promise.resolve([]),
|
|
237
|
+
multiApp ? this.loadTenantUserInviteRoleOptions() : Promise.resolve([]),
|
|
238
|
+
multiApp
|
|
239
|
+
? Promise.resolve([])
|
|
240
|
+
: this.userRoleGrantService.listInviteRoleOptions('application'),
|
|
241
|
+
]);
|
|
242
|
+
const appsWithRoles = new Set(inviteRoleOptions.map((row) => row.applicationId));
|
|
243
|
+
const selectableApps = appsWithRoles.size > 0
|
|
244
|
+
? entitledApps.filter((app) => appsWithRoles.has(app.id))
|
|
245
|
+
: entitledApps;
|
|
246
|
+
const result = await this.layoutBuilder
|
|
247
|
+
.create()
|
|
248
|
+
.dialog((dialog) => {
|
|
249
|
+
dialog
|
|
250
|
+
.setTitle('@security-management:users.entities.user.actions.approve-join-request.dialog.title')
|
|
251
|
+
.setSize(multiApp ? 'lg' : 'md')
|
|
252
|
+
.setCloseButton(true)
|
|
253
|
+
.setContext(multiApp
|
|
254
|
+
? { applicationRoleRows: [{ applicationId: '', roleIds: [] }] }
|
|
255
|
+
: { roleIds: [] })
|
|
256
|
+
.content((flex) => {
|
|
257
|
+
flex.setDirection('column').setGap('12px');
|
|
258
|
+
if (multiApp) {
|
|
259
|
+
flex.formField('@security-management:users.entities.user.actions.approve-join-request.fields.application-roles', (field) => {
|
|
260
|
+
field.path('applicationRoleRows');
|
|
261
|
+
field.setShowLabel(true);
|
|
262
|
+
field.customWidget(AXPWidgetsList.Layouts.RepeaterLayout, {
|
|
263
|
+
hasControls: true,
|
|
264
|
+
inlineAddControl: true,
|
|
265
|
+
defaultItem: { applicationId: '', roleIds: [] },
|
|
266
|
+
children: this.buildApplicationRoleRepeaterChildren(selectableApps, inviteRoleOptions),
|
|
267
|
+
});
|
|
268
|
+
});
|
|
269
|
+
}
|
|
270
|
+
else {
|
|
271
|
+
flex.formField('@security-management:users.entities.user.actions.approve-join-request.fields.roles', (field) => {
|
|
272
|
+
field.path('roleIds');
|
|
273
|
+
field.selectBox({
|
|
274
|
+
dataSource: roleOptions,
|
|
275
|
+
valueField: 'id',
|
|
276
|
+
textField: 'title',
|
|
277
|
+
multiple: true,
|
|
278
|
+
});
|
|
279
|
+
});
|
|
280
|
+
}
|
|
281
|
+
})
|
|
282
|
+
.setActions((actions) => {
|
|
283
|
+
actions.cancel('@general:actions.cancel.title');
|
|
284
|
+
actions.submit('@security-management:users.entities.user.actions.approve-join-request.dialog.submit');
|
|
285
|
+
})
|
|
286
|
+
.onAction(async (dialogRef) => {
|
|
287
|
+
if (dialogRef.action() === 'cancel') {
|
|
288
|
+
return null;
|
|
289
|
+
}
|
|
290
|
+
const ctx = dialogRef.context();
|
|
291
|
+
if (multiApp) {
|
|
292
|
+
const assignments = normalizeInviteApplicationRoleAssignments(ctx.applicationRoleRows);
|
|
293
|
+
if (assignments.length === 0) {
|
|
294
|
+
throw new Error('@security-management:users.entities.user.actions.approve-join-request.errors.application-required');
|
|
295
|
+
}
|
|
296
|
+
if (assignments.some((row) => row.roleIds.length === 0)) {
|
|
297
|
+
throw new Error('@security-management:users.entities.user.actions.approve-join-request.errors.roles-required');
|
|
298
|
+
}
|
|
299
|
+
return { applicationRoleRows: assignments };
|
|
300
|
+
}
|
|
301
|
+
const roleIds = Array.isArray(ctx.roleIds)
|
|
302
|
+
? [...new Set(ctx.roleIds.map((id) => String(id).trim()).filter(Boolean))]
|
|
303
|
+
: [];
|
|
304
|
+
if (roleIds.length === 0) {
|
|
305
|
+
throw new Error('@security-management:users.entities.user.actions.approve-join-request.errors.roles-required');
|
|
306
|
+
}
|
|
307
|
+
return { roleIds };
|
|
308
|
+
});
|
|
309
|
+
})
|
|
310
|
+
.show();
|
|
311
|
+
return resolveLayoutBuilderDialogResult(result);
|
|
312
|
+
}
|
|
313
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPApproveJoinRequestCommand, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
314
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPApproveJoinRequestCommand, providedIn: 'root' }); }
|
|
315
|
+
}
|
|
316
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPApproveJoinRequestCommand, decorators: [{
|
|
317
|
+
type: Injectable,
|
|
318
|
+
args: [{ providedIn: 'root' }]
|
|
319
|
+
}] });
|
|
320
|
+
|
|
321
|
+
export { AXPApproveJoinRequestCommand };
|
|
322
|
+
//# sourceMappingURL=acorex-platform-module-security-management-client-approve-join-request.command-BSvK59LV.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"acorex-platform-module-security-management-client-approve-join-request.command-BSvK59LV.mjs","sources":["../../../../libs/modules/security-management/client/src/lib/commands/approve-join-request.command.ts"],"sourcesContent":["import { AXToastService } from '@acorex/components/toast';\nimport { AXTranslationService, resolveMultiLanguageString } from '@acorex/core/translation';\nimport { AXPSessionService } from '@acorex-platform/framework-client/auth';\nimport {\n AXPLayoutBuilderService,\n resolveLayoutBuilderDialogResult,\n} from '@acorex-platform/framework-client/layout/builder';\nimport { AXPCommandService } from '@acorex-platform/framework-client/runtime';\nimport { AXPWidgetsList } from '@acorex-platform/framework-shared/core';\nimport type {\n AXPCommand,\n AXPCommandExecuteResultPromise,\n AXPEntityActionCommandInput,\n} from '@acorex-platform/framework-shared/runtime';\nimport { resolveEntityActionCommandInput } from '@acorex-platform/framework-shared/runtime';\nimport {\n AXM_JOIN_REQUEST_ERROR_CODES,\n AXM_USER_APPROVE_JOIN_REQUEST_COMMAND,\n AXMSecurityManagementServerCommands,\n flattenInviteApplicationRoleAssignments,\n normalizeInviteApplicationRoleAssignments,\n type AXMListInviteAssignableRolesResult,\n type AXMListTenantEntitledApplicationsResult,\n} from '@acorex-platform/module-security-management-client/contracts';\nimport { inject, Injectable } from '@angular/core';\nimport { AXMUserRoleGrantService } from '../features/user-roles/user-role-grant.service';\nimport type { UserRoleOption } from '../features/user-roles/user-role-grant.types';\nimport {\n resolveInvitationCommandTargets,\n type AXPInvitationTargetCommandInput,\n} from './invitation-target.util';\n\nexport { AXM_USER_APPROVE_JOIN_REQUEST_COMMAND };\n\n//#region ----- Types -----\n\ninterface ApproveApplicationRoleRow {\n id?: string;\n applicationId?: string;\n roleIds?: string[];\n}\n\ninterface ApproveFormResult {\n applicationIds?: string[];\n roleIds?: string[];\n applicationRoleRows?: ApproveApplicationRoleRow[];\n}\n\ninterface EntitledApplicationOption {\n id: string;\n title: string;\n}\n\ninterface ApproveRoleOption {\n id: string;\n title: string;\n applicationId: string;\n}\n\n/** TM edition feature — multi-app invite/approve (ADR-TEN-001 D-05). */\nconst INVITE_MULTI_APPLICATION_FEATURE = 'TenantManagement:Feature:InviteMultiApplication';\n\nconst TENANT_USER_ENTITY = 'TenantManagement.TenantUser';\nconst TENANT_USER_ENTITY_NAME = 'TenantUser';\n\n//#endregion\n\n//#region ---- AXPApproveJoinRequestCommand ----\n\n@Injectable({ providedIn: 'root' })\nexport class AXPApproveJoinRequestCommand implements AXPCommand {\n private readonly layoutBuilder = inject(AXPLayoutBuilderService);\n private readonly toastService = inject(AXToastService);\n private readonly translationService = inject(AXTranslationService);\n private readonly commandService = inject(AXPCommandService);\n private readonly sessionService = inject(AXPSessionService);\n private readonly userRoleGrantService = inject(AXMUserRoleGrantService);\n\n async execute(input?: unknown): AXPCommandExecuteResultPromise {\n const actionInput = resolveEntityActionCommandInput(input);\n const data = (actionInput.data ?? {}) as AXPInvitationTargetCommandInput['data'];\n const { tenantUserId, userId } = resolveInvitationCommandTargets({\n data,\n tenantUserId: (input as AXPInvitationTargetCommandInput | undefined)?.tenantUserId,\n userId: (input as AXPInvitationTargetCommandInput | undefined)?.userId,\n });\n if (!tenantUserId && !userId) {\n return { success: false, message: { text: 'Tenant user id is required.' } };\n }\n\n const form = await this.openApproveDialog(actionInput);\n if (!form) {\n return { success: true, kind: 'object', data: { outcome: 'cancelled' } };\n }\n\n const tenantMembershipApprove = this.allowsMultiApplicationApprove(actionInput);\n const remotePayload = this.toRemotePayload(form, tenantMembershipApprove, tenantUserId, userId);\n\n const result = await this.commandService.executeRemote(\n AXMSecurityManagementServerCommands.ApproveJoinRequest,\n remotePayload,\n );\n\n if (result?.success) {\n const [toastTitle, toastContent] = await Promise.all([\n this.translationService\n .translateAsync('@security-management:users.entities.user.actions.approve-join-request.success.title')\n .catch(() => 'Approved'),\n this.translationService\n .translateAsync(\n '@security-management:users.entities.user.actions.approve-join-request.success.description',\n )\n .catch(() => 'The membership request was approved.'),\n ]);\n this.toastService.show({ color: 'success', title: toastTitle, content: toastContent, timeOut: 3000 });\n return { success: true, kind: 'object', data: undefined };\n }\n\n const [toastTitle, fallback] = await Promise.all([\n this.translationService\n .translateAsync('@security-management:users.entities.user.actions.approve-join-request.error.title')\n .catch(() => 'Approve Failed'),\n this.translationService\n .translateAsync(\n '@security-management:users.entities.user.actions.approve-join-request.error.description',\n )\n .catch(() => 'Failed to approve the membership request.'),\n ]);\n const code = typeof result?.message?.code === 'string' ? result.message.code : '';\n const mapped =\n code === AXM_JOIN_REQUEST_ERROR_CODES.NotPending\n ? await this.translationService\n .translateAsync(\n '@security-management:users.entities.user.actions.approve-join-request.error.not-pending',\n )\n .catch(() => fallback)\n : fallback;\n this.toastService.show({ color: 'danger', title: toastTitle, content: mapped, timeOut: 4000 });\n return { success: false };\n }\n\n private allowsMultiApplicationApprove(actionInput: AXPEntityActionCommandInput): boolean {\n if (!this.sessionService.isFeatureEnabled(INVITE_MULTI_APPLICATION_FEATURE)) {\n return false;\n }\n const entity = actionInput.entity ?? '';\n const name = actionInput.entityInfo?.name ?? '';\n return entity === TENANT_USER_ENTITY || name === TENANT_USER_ENTITY_NAME;\n }\n\n private toRemotePayload(\n form: ApproveFormResult,\n tenantMembershipApprove: boolean,\n tenantUserId: string | undefined,\n userId: string | undefined,\n ): Record<string, unknown> {\n const base = {\n tenantUserId,\n userId,\n tenantMembershipApprove,\n };\n\n if (!tenantMembershipApprove) {\n return {\n ...base,\n roleIds: form.roleIds,\n };\n }\n\n const assignments = normalizeInviteApplicationRoleAssignments(form.applicationRoleRows);\n const flat = flattenInviteApplicationRoleAssignments(assignments);\n return {\n ...base,\n applicationIds: flat.applicationIds,\n roleIds: flat.roleIds.length > 0 ? flat.roleIds : undefined,\n applicationRoleAssignments: assignments,\n };\n }\n\n private async loadEntitledApplicationOptions(): Promise<EntitledApplicationOption[]> {\n const result = await this.commandService.executeRemote(\n AXMSecurityManagementServerCommands.ListTenantEntitledApplications,\n {},\n );\n if (!result?.success) {\n return [];\n }\n const payload = (result as { data?: AXMListTenantEntitledApplicationsResult })?.data;\n const items = Array.isArray(payload?.items) ? payload.items : [];\n const locale = this.translationService.getActiveLang?.() ?? 'en-US';\n return items\n .map((item) => {\n const id = String(item?.id ?? '').trim();\n if (!id) {\n return null;\n }\n const title = resolveMultiLanguageString(item.title as never, locale).trim() || id;\n return { id, title };\n })\n .filter((row): row is EntitledApplicationOption => row != null);\n }\n\n private async loadTenantUserInviteRoleOptions(applicationId?: string): Promise<ApproveRoleOption[]> {\n const result = await this.commandService.executeRemote(\n AXMSecurityManagementServerCommands.ListInviteAssignableRoles,\n applicationId ? { applicationId } : {},\n );\n if (!result?.success) {\n return [];\n }\n const payload = (result as { data?: AXMListInviteAssignableRolesResult })?.data;\n const items = Array.isArray(payload?.items) ? payload.items : [];\n const locale = this.translationService.getActiveLang?.() ?? 'en-US';\n return items\n .map((item) => {\n const id = String(item?.id ?? '').trim();\n const applicationId = String(item?.applicationId ?? '').trim();\n if (!id || !applicationId) {\n return null;\n }\n const title = resolveMultiLanguageString(item.title as never, locale).trim() || id;\n return { id, title, applicationId };\n })\n .filter((row): row is ApproveRoleOption => row != null);\n }\n\n private buildApplicationRoleRepeaterChildren(\n entitledApps: EntitledApplicationOption[],\n roleOptions: ApproveRoleOption[],\n ): Record<string, unknown>[] {\n return [\n {\n type: AXPWidgetsList.Layouts.FlexLayout,\n mode: 'edit' as const,\n options: {\n flexDirection: 'row',\n gap: '12px',\n alignItems: 'flex-end',\n wrap: 'nowrap',\n },\n children: [\n {\n type: AXPWidgetsList.Layouts.FlexItemLayout,\n mode: 'edit' as const,\n options: { grow: '1', shrink: '1', basis: '0' },\n children: [\n {\n type: AXPWidgetsList.Layouts.FormField,\n mode: 'edit' as const,\n options: {\n label:\n '@security-management:users.entities.user.actions.approve-join-request.fields.application',\n showLabel: true,\n },\n children: [\n {\n type: AXPWidgetsList.Editors.SelectBox,\n mode: 'edit' as const,\n path: 'applicationId',\n name: 'applicationId',\n options: {\n dataSource: entitledApps,\n valueField: 'id',\n textField: 'title',\n allowSearch: true,\n validations: [{ rule: 'required' }],\n },\n },\n ],\n },\n ],\n },\n {\n type: AXPWidgetsList.Layouts.FlexItemLayout,\n mode: 'edit' as const,\n options: { grow: '1', shrink: '1', basis: '0' },\n children: [\n {\n type: AXPWidgetsList.Layouts.FormField,\n mode: 'edit' as const,\n options: {\n label:\n '@security-management:users.entities.user.actions.approve-join-request.fields.roles',\n showLabel: true,\n },\n children: [\n {\n type: AXPWidgetsList.Editors.SelectBox,\n mode: 'edit' as const,\n path: 'roleIds',\n name: 'roleIds',\n options: {\n dataSource: roleOptions,\n valueField: 'id',\n textField: 'title',\n multiple: true,\n allowSearch: true,\n disabled: \"{{ !context.eval('>applicationId') }}\",\n filter: {\n field: 'applicationId',\n operator: { type: 'equal' },\n value: \"{{ context.eval('>applicationId') }}\",\n },\n },\n triggers: [\n {\n event: \"{{ events.context('>applicationId') }}\",\n action: '{{ widget.setValue([]); widget.refresh(); }}',\n },\n ],\n },\n ],\n },\n ],\n },\n ],\n },\n ];\n }\n\n private async openApproveDialog(\n actionInput: AXPEntityActionCommandInput,\n ): Promise<ApproveFormResult | null> {\n const multiApp = this.allowsMultiApplicationApprove(actionInput);\n const [entitledApps, inviteRoleOptions, roleOptions] = await Promise.all([\n multiApp ? this.loadEntitledApplicationOptions() : Promise.resolve([] as EntitledApplicationOption[]),\n multiApp ? this.loadTenantUserInviteRoleOptions() : Promise.resolve([] as ApproveRoleOption[]),\n multiApp\n ? Promise.resolve([] as UserRoleOption[])\n : this.userRoleGrantService.listInviteRoleOptions('application'),\n ]);\n const appsWithRoles = new Set(inviteRoleOptions.map((row) => row.applicationId));\n const selectableApps =\n appsWithRoles.size > 0\n ? entitledApps.filter((app) => appsWithRoles.has(app.id))\n : entitledApps;\n\n const result = await this.layoutBuilder\n .create()\n .dialog<ApproveFormResult | null>((dialog) => {\n dialog\n .setTitle('@security-management:users.entities.user.actions.approve-join-request.dialog.title')\n .setSize(multiApp ? 'lg' : 'md')\n .setCloseButton(true)\n .setContext(\n multiApp\n ? { applicationRoleRows: [{ applicationId: '', roleIds: [] }] }\n : { roleIds: [] },\n )\n .content((flex) => {\n flex.setDirection('column').setGap('12px');\n\n if (multiApp) {\n flex.formField(\n '@security-management:users.entities.user.actions.approve-join-request.fields.application-roles',\n (field) => {\n field.path('applicationRoleRows');\n field.setShowLabel(true);\n field.customWidget(AXPWidgetsList.Layouts.RepeaterLayout, {\n hasControls: true,\n inlineAddControl: true,\n defaultItem: { applicationId: '', roleIds: [] },\n children: this.buildApplicationRoleRepeaterChildren(selectableApps, inviteRoleOptions),\n });\n },\n );\n } else {\n flex.formField(\n '@security-management:users.entities.user.actions.approve-join-request.fields.roles',\n (field) => {\n field.path('roleIds');\n field.selectBox({\n dataSource: roleOptions as UserRoleOption[],\n valueField: 'id',\n textField: 'title',\n multiple: true,\n });\n },\n );\n }\n })\n .setActions((actions) => {\n actions.cancel('@general:actions.cancel.title');\n actions.submit(\n '@security-management:users.entities.user.actions.approve-join-request.dialog.submit',\n );\n })\n .onAction(async (dialogRef) => {\n if (dialogRef.action() === 'cancel') {\n return null;\n }\n const ctx = dialogRef.context() as ApproveFormResult;\n\n if (multiApp) {\n const assignments = normalizeInviteApplicationRoleAssignments(ctx.applicationRoleRows);\n if (assignments.length === 0) {\n throw new Error(\n '@security-management:users.entities.user.actions.approve-join-request.errors.application-required',\n );\n }\n if (assignments.some((row) => row.roleIds.length === 0)) {\n throw new Error(\n '@security-management:users.entities.user.actions.approve-join-request.errors.roles-required',\n );\n }\n return { applicationRoleRows: assignments };\n }\n\n const roleIds = Array.isArray(ctx.roleIds)\n ? [...new Set(ctx.roleIds.map((id) => String(id).trim()).filter(Boolean))]\n : [];\n if (roleIds.length === 0) {\n throw new Error(\n '@security-management:users.entities.user.actions.approve-join-request.errors.roles-required',\n );\n }\n return { roleIds };\n });\n })\n .show();\n\n return resolveLayoutBuilderDialogResult<ApproveFormResult>(result);\n }\n}\n\n//#endregion\n"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
import { AXPWidgetsCatalog } from '@acorex-platform/framework-shared/core';
|
|
2
|
-
import { createAllQueryView, AXPEntityCommandScope, entityMasterCrudActions } from '@acorex-platform/framework-shared/entity';
|
|
2
|
+
import { createAllQueryView, createQueryView, AXPEntityCommandScope, entityMasterCrudActions } from '@acorex-platform/framework-shared/entity';
|
|
3
|
+
|
|
4
|
+
//#region ----- Device session admin scope (operation-owned) -----
|
|
5
|
+
/** Query `params` key and HTTP header value for admin scope. */
|
|
6
|
+
const AXP_DEVICE_SESSION_ADMIN_SCOPE_PARAM = 'deviceSessionAdminScope';
|
|
7
|
+
/** HTTP header (lowercase) carrying the same scope for getOne/update/delete. */
|
|
8
|
+
const AXP_DEVICE_SESSION_ADMIN_SCOPE_HEADER = 'x-axp-device-session-admin-scope';
|
|
9
|
+
/** Entity list view name for TM → Tenant Sessions. */
|
|
10
|
+
const AXP_DEVICE_SESSION_TENANT_SESSIONS_VIEW = 'tenant-sessions';
|
|
11
|
+
function normalizeDeviceSessionAdminScope(value) {
|
|
12
|
+
return value === 'tenant' ? 'tenant' : 'application';
|
|
13
|
+
}
|
|
14
|
+
//#endregion
|
|
3
15
|
|
|
4
16
|
const config = {
|
|
5
17
|
i18n: 'security-management',
|
|
@@ -585,7 +597,14 @@ async function deviceSessionsFactory() {
|
|
|
585
597
|
scope: AXPEntityCommandScope.Individual,
|
|
586
598
|
},
|
|
587
599
|
],
|
|
588
|
-
views: [
|
|
600
|
+
views: [
|
|
601
|
+
createAllQueryView({ sorts: [{ name: 'title', dir: 'asc' }] }),
|
|
602
|
+
{
|
|
603
|
+
...createQueryView(AXP_DEVICE_SESSION_TENANT_SESSIONS_VIEW, `@${i18n}:sessions.views.tenant-sessions.title`, true, { sorts: [{ name: 'title', dir: 'asc' }] }),
|
|
604
|
+
// Activated via TM menu `?view=tenant-sessions` — not a free switcher option.
|
|
605
|
+
visible: false,
|
|
606
|
+
},
|
|
607
|
+
],
|
|
589
608
|
},
|
|
590
609
|
},
|
|
591
610
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-platform-module-security-management-client-contracts-entities-device-sessions.mjs","sources":["../../../../libs/modules/security-management/contracts/src/root-config.ts","../../../../libs/modules/security-management/contracts/src/entities/device-sessions/device-sessions.entity.ts","../../../../libs/modules/security-management/contracts/src/acorex-platform-module-security-management-client-contracts-entities-device-sessions.ts"],"sourcesContent":["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 userTwoFactor: {\n name: 'UserTwoFactor',\n title: `@${config.i18n}:user-two-factor.entities.user-two-factor.title`,\n titlePlural: `@${config.i18n}:user-two-factor.entities.user-two-factor.plural`,\n icon: 'fa-light fa-shield-keyhole',\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 } from '@acorex-platform/framework-shared/core';\nimport { AXPEntity, AXPEntityCommandScope, createAllQueryView, entityMasterCrudActions } from '@acorex-platform/framework-shared/entity';\nimport { RootConfig } from '../../root-config';\n\nexport async function deviceSessionsFactory(): Promise<AXPEntity | null> {\n const i18n = RootConfig.config.i18n;\n\n const entityDef: AXPEntity = {\n module: RootConfig.module.name,\n name: RootConfig.entities.deviceSessions.name,\n title: RootConfig.entities.deviceSessions.title,\n icon: RootConfig.entities.deviceSessions.icon,\n searchTags: [\n 'device-session',\n 'device-sessions',\n 'login-session',\n 'active-login',\n 'sign-in',\n 'ip-address',\n 'operating-system',\n 'logout',\n 'نشست',\n 'نشستها',\n 'نشست دستگاه',\n 'ورود',\n 'دستگاه',\n 'آدرس IP',\n ],\n formats: {\n individual: RootConfig.entities.deviceSessions.title,\n plural: RootConfig.entities.deviceSessions.titlePlural,\n searchResult: {\n title: '{{ title }}',\n description: RootConfig.module.title,\n },\n },\n plugins: [{ name: 'compare' }],\n groups: [\n {\n id: 'basic-info',\n title: `@general:terms.interface.basic-info`,\n },\n {\n id: 'device',\n title: `@${i18n}:sessions.entities.session.groups.device`,\n },\n {\n id: 'session',\n title: `@${i18n}:sessions.entities.session.groups.session`,\n },\n ],\n properties: [\n {\n name: 'tenant.name',\n title: '@security-management:sessions.entities.session.fields.tenant.title',\n groupId: 'basic-info',\n options: {\n sort: {\n enabled: true,\n },\n filter: {\n inline: {\n enabled: true,\n },\n advance: {\n enabled: true,\n },\n },\n },\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsCatalog.text,\n },\n },\n validations: [\n {\n rule: 'required',\n },\n ],\n },\n {\n name: 'user.name',\n title: '@security-management:sessions.entities.session.fields.user.title',\n groupId: 'basic-info',\n options: {\n sort: {\n enabled: true,\n },\n filter: {\n inline: {\n enabled: true,\n },\n advance: {\n enabled: true,\n },\n },\n },\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsCatalog.text,\n },\n },\n validations: [\n {\n rule: 'required',\n },\n ],\n },\n {\n name: 'application.name',\n title: '@security-management:sessions.entities.session.fields.application.title',\n groupId: 'basic-info',\n options: {\n sort: {\n enabled: true,\n },\n filter: {\n inline: {\n enabled: true,\n },\n advance: {\n enabled: true,\n },\n },\n },\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsCatalog.text,\n },\n },\n validations: [\n {\n rule: 'required',\n },\n ],\n },\n {\n name: 'clientName',\n title: '@security-management:sessions.entities.session.fields.client-name.title',\n groupId: 'basic-info',\n options: {\n sort: {\n enabled: true,\n },\n filter: {\n inline: {\n enabled: true,\n },\n advance: {\n enabled: true,\n },\n },\n },\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsCatalog.text,\n },\n },\n validations: [\n {\n rule: 'required',\n },\n ],\n },\n {\n name: 'location',\n title: '@security-management:sessions.entities.session.fields.location.title',\n groupId: 'device',\n options: {\n sort: {\n enabled: true,\n },\n filter: {\n inline: {\n enabled: true,\n },\n advance: {\n enabled: true,\n },\n },\n },\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsCatalog.text,\n },\n },\n validations: [\n {\n rule: 'required',\n },\n ],\n },\n {\n name: 'ipAddress',\n title: '@security-management:sessions.entities.session.fields.ip-address.title',\n groupId: 'device',\n options: {\n sort: {\n enabled: true,\n },\n filter: {\n inline: {\n enabled: true,\n },\n advance: {\n enabled: true,\n },\n },\n },\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsCatalog.text,\n },\n },\n validations: [\n {\n rule: 'required',\n },\n ],\n },\n {\n name: 'lastLoginDate',\n title: '@security-management:sessions.entities.session.fields.last-login-date.title',\n groupId: 'session',\n options: {\n sort: {\n enabled: true,\n },\n filter: {\n inline: {\n enabled: true,\n },\n advance: {\n enabled: true,\n },\n },\n },\n schema: {\n dataType: 'dateTime',\n interface: {\n type: AXPWidgetsCatalog.dateTime,\n options: {\n format: 'MM/DD/YYYY hh:mm a',\n },\n },\n },\n validations: [\n {\n rule: 'required',\n },\n ],\n },\n {\n name: 'loggedOutAt',\n title: '@security-management:sessions.entities.session.fields.logged-out-at.title',\n groupId: 'session',\n options: {\n sort: {\n enabled: true,\n },\n filter: {\n inline: {\n enabled: true,\n },\n advance: {\n enabled: true,\n },\n },\n },\n schema: {\n dataType: 'dateTime',\n interface: {\n type: AXPWidgetsCatalog.dateTime,\n options: {\n format: 'MM/DD/YYYY hh:mm a',\n },\n },\n },\n },\n {\n name: 'operatingSystem',\n title: '@security-management:sessions.entities.session.fields.operating-system.title',\n groupId: 'device',\n options: {\n sort: {\n enabled: true,\n },\n filter: {\n inline: {\n enabled: true,\n },\n advance: {\n enabled: true,\n },\n },\n },\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsCatalog.text,\n },\n },\n validations: [\n {\n rule: 'required',\n },\n ],\n },\n {\n name: 'deviceName',\n title: '@security-management:sessions.entities.session.fields.device-name.title',\n groupId: 'device',\n options: {\n sort: {\n enabled: true,\n },\n filter: {\n inline: {\n enabled: true,\n },\n advance: {\n enabled: true,\n },\n },\n },\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsCatalog.text,\n },\n },\n validations: [\n {\n rule: 'required',\n },\n ],\n },\n ],\n columns: [\n { name: 'tenant.name' },\n { name: 'user.name' },\n { name: 'application.name' },\n { name: 'clientName' },\n { name: 'location' },\n { name: 'deviceName' },\n { name: 'lastLoginDate' },\n { name: 'operatingSystem' },\n ],\n interfaces: {\n master: {\n single: {\n title: '{{user.name}}',\n sections: [\n {\n id: 'session',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n },\n },\n },\n },\n {\n id: 'section',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n },\n },\n },\n },\n {\n id: 'device',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n },\n },\n },\n },\n ],\n properties: [\n {\n name: 'tenant.name',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n },\n },\n },\n },\n {\n name: 'user.name',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n },\n },\n },\n },\n {\n name: 'application.name',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n },\n },\n },\n },\n {\n name: 'clientName',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n },\n },\n },\n },\n {\n name: 'location',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n },\n },\n },\n },\n {\n name: 'ipAddress',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n },\n },\n },\n },\n {\n name: 'lastLoginDate',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n },\n },\n },\n },\n {\n name: 'operatingSystem',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n },\n },\n },\n },\n {\n name: 'deviceName',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n },\n },\n },\n },\n ],\n actions: [\n {\n title: '@security-management:sessions.permissions.device-sessions.actions.terminate.title',\n command: 'Session:Terminate',\n priority: 'primary',\n type: 'delete',\n scope: AXPEntityCommandScope.Individual,\n },\n ],\n },\n list: {\n actions: [\n ...entityMasterCrudActions({ create: false, delete: false }),\n {\n title: '@security-management:sessions.permissions.device-sessions.actions.terminate.title',\n command: 'Session:Terminate',\n priority: 'primary',\n type: 'delete',\n scope: AXPEntityCommandScope.Selected,\n },\n {\n title: '@security-management:sessions.permissions.device-sessions.actions.terminate.title',\n command: 'Session:Terminate',\n priority: 'secondary',\n type: 'delete',\n scope: AXPEntityCommandScope.Individual,\n },\n ],\n views: [createAllQueryView({ sorts: [{ name: 'title', dir: 'asc' }] })],\n },\n },\n },\n };\n\n return entityDef;\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './entity-entry.device-sessions';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"acorex-platform-module-security-management-client-contracts-entities-device-sessions.mjs","sources":["../../../../libs/modules/security-management/contracts/src/device-session-admin-scope.ts","../../../../libs/modules/security-management/contracts/src/root-config.ts","../../../../libs/modules/security-management/contracts/src/entities/device-sessions/device-sessions.entity.ts","../../../../libs/modules/security-management/contracts/src/acorex-platform-module-security-management-client-contracts-entities-device-sessions.ts"],"sourcesContent":["//#region ----- Device session admin scope (operation-owned) -----\r\r\n\r\r\n/**\r\r\n * Explicit DeviceSessions admin operation scope (ADR-TEN-001 D-07).\r\r\n * Selected by the calling surface (menu/view), not by Application.code / TM ids.\r\r\n */\r\r\nexport type AXPDeviceSessionAdminScope = 'tenant' | 'application';\r\r\n\r\r\n/** Query `params` key and HTTP header value for admin scope. */\r\r\nexport const AXP_DEVICE_SESSION_ADMIN_SCOPE_PARAM = 'deviceSessionAdminScope';\r\r\n\r\r\n/** HTTP header (lowercase) carrying the same scope for getOne/update/delete. */\r\r\nexport const AXP_DEVICE_SESSION_ADMIN_SCOPE_HEADER = 'x-axp-device-session-admin-scope';\r\r\n\r\r\n/** Entity list view name for TM → Tenant Sessions. */\r\r\nexport const AXP_DEVICE_SESSION_TENANT_SESSIONS_VIEW = 'tenant-sessions';\r\r\n\r\r\nexport function normalizeDeviceSessionAdminScope(\r\r\n value: unknown,\r\r\n): AXPDeviceSessionAdminScope {\r\r\n return value === 'tenant' ? 'tenant' : 'application';\r\r\n}\r\r\n\r\r\n//#endregion\r\r\n\r","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 userTwoFactor: {\n name: 'UserTwoFactor',\n title: `@${config.i18n}:user-two-factor.entities.user-two-factor.title`,\n titlePlural: `@${config.i18n}:user-two-factor.entities.user-two-factor.plural`,\n icon: 'fa-light fa-shield-keyhole',\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 } from '@acorex-platform/framework-shared/core';\nimport {\n AXPEntity,\n AXPEntityCommandScope,\n createAllQueryView,\n createQueryView,\n entityMasterCrudActions,\n} from '@acorex-platform/framework-shared/entity';\nimport { AXP_DEVICE_SESSION_TENANT_SESSIONS_VIEW } from '../../device-session-admin-scope';\nimport { RootConfig } from '../../root-config';\n\nexport async function deviceSessionsFactory(): Promise<AXPEntity | null> {\n const i18n = RootConfig.config.i18n;\n\n const entityDef: AXPEntity = {\n module: RootConfig.module.name,\n name: RootConfig.entities.deviceSessions.name,\n title: RootConfig.entities.deviceSessions.title,\n icon: RootConfig.entities.deviceSessions.icon,\n searchTags: [\n 'device-session',\n 'device-sessions',\n 'login-session',\n 'active-login',\n 'sign-in',\n 'ip-address',\n 'operating-system',\n 'logout',\n 'نشست',\n 'نشستها',\n 'نشست دستگاه',\n 'ورود',\n 'دستگاه',\n 'آدرس IP',\n ],\n formats: {\n individual: RootConfig.entities.deviceSessions.title,\n plural: RootConfig.entities.deviceSessions.titlePlural,\n searchResult: {\n title: '{{ title }}',\n description: RootConfig.module.title,\n },\n },\n plugins: [{ name: 'compare' }],\n groups: [\n {\n id: 'basic-info',\n title: `@general:terms.interface.basic-info`,\n },\n {\n id: 'device',\n title: `@${i18n}:sessions.entities.session.groups.device`,\n },\n {\n id: 'session',\n title: `@${i18n}:sessions.entities.session.groups.session`,\n },\n ],\n properties: [\n {\n name: 'tenant.name',\n title: '@security-management:sessions.entities.session.fields.tenant.title',\n groupId: 'basic-info',\n options: {\n sort: {\n enabled: true,\n },\n filter: {\n inline: {\n enabled: true,\n },\n advance: {\n enabled: true,\n },\n },\n },\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsCatalog.text,\n },\n },\n validations: [\n {\n rule: 'required',\n },\n ],\n },\n {\n name: 'user.name',\n title: '@security-management:sessions.entities.session.fields.user.title',\n groupId: 'basic-info',\n options: {\n sort: {\n enabled: true,\n },\n filter: {\n inline: {\n enabled: true,\n },\n advance: {\n enabled: true,\n },\n },\n },\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsCatalog.text,\n },\n },\n validations: [\n {\n rule: 'required',\n },\n ],\n },\n {\n name: 'application.name',\n title: '@security-management:sessions.entities.session.fields.application.title',\n groupId: 'basic-info',\n options: {\n sort: {\n enabled: true,\n },\n filter: {\n inline: {\n enabled: true,\n },\n advance: {\n enabled: true,\n },\n },\n },\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsCatalog.text,\n },\n },\n validations: [\n {\n rule: 'required',\n },\n ],\n },\n {\n name: 'clientName',\n title: '@security-management:sessions.entities.session.fields.client-name.title',\n groupId: 'basic-info',\n options: {\n sort: {\n enabled: true,\n },\n filter: {\n inline: {\n enabled: true,\n },\n advance: {\n enabled: true,\n },\n },\n },\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsCatalog.text,\n },\n },\n validations: [\n {\n rule: 'required',\n },\n ],\n },\n {\n name: 'location',\n title: '@security-management:sessions.entities.session.fields.location.title',\n groupId: 'device',\n options: {\n sort: {\n enabled: true,\n },\n filter: {\n inline: {\n enabled: true,\n },\n advance: {\n enabled: true,\n },\n },\n },\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsCatalog.text,\n },\n },\n validations: [\n {\n rule: 'required',\n },\n ],\n },\n {\n name: 'ipAddress',\n title: '@security-management:sessions.entities.session.fields.ip-address.title',\n groupId: 'device',\n options: {\n sort: {\n enabled: true,\n },\n filter: {\n inline: {\n enabled: true,\n },\n advance: {\n enabled: true,\n },\n },\n },\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsCatalog.text,\n },\n },\n validations: [\n {\n rule: 'required',\n },\n ],\n },\n {\n name: 'lastLoginDate',\n title: '@security-management:sessions.entities.session.fields.last-login-date.title',\n groupId: 'session',\n options: {\n sort: {\n enabled: true,\n },\n filter: {\n inline: {\n enabled: true,\n },\n advance: {\n enabled: true,\n },\n },\n },\n schema: {\n dataType: 'dateTime',\n interface: {\n type: AXPWidgetsCatalog.dateTime,\n options: {\n format: 'MM/DD/YYYY hh:mm a',\n },\n },\n },\n validations: [\n {\n rule: 'required',\n },\n ],\n },\n {\n name: 'loggedOutAt',\n title: '@security-management:sessions.entities.session.fields.logged-out-at.title',\n groupId: 'session',\n options: {\n sort: {\n enabled: true,\n },\n filter: {\n inline: {\n enabled: true,\n },\n advance: {\n enabled: true,\n },\n },\n },\n schema: {\n dataType: 'dateTime',\n interface: {\n type: AXPWidgetsCatalog.dateTime,\n options: {\n format: 'MM/DD/YYYY hh:mm a',\n },\n },\n },\n },\n {\n name: 'operatingSystem',\n title: '@security-management:sessions.entities.session.fields.operating-system.title',\n groupId: 'device',\n options: {\n sort: {\n enabled: true,\n },\n filter: {\n inline: {\n enabled: true,\n },\n advance: {\n enabled: true,\n },\n },\n },\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsCatalog.text,\n },\n },\n validations: [\n {\n rule: 'required',\n },\n ],\n },\n {\n name: 'deviceName',\n title: '@security-management:sessions.entities.session.fields.device-name.title',\n groupId: 'device',\n options: {\n sort: {\n enabled: true,\n },\n filter: {\n inline: {\n enabled: true,\n },\n advance: {\n enabled: true,\n },\n },\n },\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsCatalog.text,\n },\n },\n validations: [\n {\n rule: 'required',\n },\n ],\n },\n ],\n columns: [\n { name: 'tenant.name' },\n { name: 'user.name' },\n { name: 'application.name' },\n { name: 'clientName' },\n { name: 'location' },\n { name: 'deviceName' },\n { name: 'lastLoginDate' },\n { name: 'operatingSystem' },\n ],\n interfaces: {\n master: {\n single: {\n title: '{{user.name}}',\n sections: [\n {\n id: 'session',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n },\n },\n },\n },\n {\n id: 'section',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n },\n },\n },\n },\n {\n id: 'device',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n },\n },\n },\n },\n ],\n properties: [\n {\n name: 'tenant.name',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n },\n },\n },\n },\n {\n name: 'user.name',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n },\n },\n },\n },\n {\n name: 'application.name',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n },\n },\n },\n },\n {\n name: 'clientName',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n },\n },\n },\n },\n {\n name: 'location',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n },\n },\n },\n },\n {\n name: 'ipAddress',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n },\n },\n },\n },\n {\n name: 'lastLoginDate',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n },\n },\n },\n },\n {\n name: 'operatingSystem',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n },\n },\n },\n },\n {\n name: 'deviceName',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n },\n },\n },\n },\n ],\n actions: [\n {\n title: '@security-management:sessions.permissions.device-sessions.actions.terminate.title',\n command: 'Session:Terminate',\n priority: 'primary',\n type: 'delete',\n scope: AXPEntityCommandScope.Individual,\n },\n ],\n },\n list: {\n actions: [\n ...entityMasterCrudActions({ create: false, delete: false }),\n {\n title: '@security-management:sessions.permissions.device-sessions.actions.terminate.title',\n command: 'Session:Terminate',\n priority: 'primary',\n type: 'delete',\n scope: AXPEntityCommandScope.Selected,\n },\n {\n title: '@security-management:sessions.permissions.device-sessions.actions.terminate.title',\n command: 'Session:Terminate',\n priority: 'secondary',\n type: 'delete',\n scope: AXPEntityCommandScope.Individual,\n },\n ],\n views: [\n createAllQueryView({ sorts: [{ name: 'title', dir: 'asc' }] }),\n {\n ...createQueryView(\n AXP_DEVICE_SESSION_TENANT_SESSIONS_VIEW,\n `@${i18n}:sessions.views.tenant-sessions.title`,\n true,\n { sorts: [{ name: 'title', dir: 'asc' }] },\n ),\n // Activated via TM menu `?view=tenant-sessions` — not a free switcher option.\n visible: false,\n },\n ],\n },\n },\n },\n };\n\n return entityDef;\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './entity-entry.device-sessions';\n"],"names":[],"mappings":"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"}
|