@objectstack/platform-objects 6.5.1 → 6.7.0
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/dist/apps/index.d.mts +18 -189
- package/dist/apps/index.d.ts +18 -189
- package/dist/apps/index.js +71 -270
- package/dist/apps/index.js.map +1 -1
- package/dist/apps/index.mjs +72 -270
- package/dist/apps/index.mjs.map +1 -1
- package/dist/identity/index.d.mts +110 -1
- package/dist/identity/index.d.ts +110 -1
- package/dist/identity/index.js +120 -1
- package/dist/identity/index.js.map +1 -1
- package/dist/identity/index.mjs +120 -1
- package/dist/identity/index.mjs.map +1 -1
- package/dist/index.d.mts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +326 -271
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +327 -271
- package/dist/index.mjs.map +1 -1
- package/dist/security/index.d.mts +150 -0
- package/dist/security/index.d.ts +150 -0
- package/dist/security/index.js +135 -0
- package/dist/security/index.js.map +1 -1
- package/dist/security/index.mjs +135 -0
- package/dist/security/index.mjs.map +1 -1
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -425,6 +425,30 @@ var SysAccount = data.ObjectSchema.create({
|
|
|
425
425
|
description: "OAuth and authentication provider accounts",
|
|
426
426
|
titleFormat: "{provider_id} - {account_id}",
|
|
427
427
|
compactLayout: ["provider_id", "user_id", "account_id"],
|
|
428
|
+
// Custom actions — sysadmins routinely need to revoke a user's OAuth
|
|
429
|
+
// link (e.g. when an SSO provider is decommissioned or the user
|
|
430
|
+
// requests it). Better-auth exposes `/unlink-account { providerId,
|
|
431
|
+
// accountId }` for this. The form is locked to the row's values so
|
|
432
|
+
// it acts as a one-click confirmation rather than a free-form edit.
|
|
433
|
+
actions: [
|
|
434
|
+
{
|
|
435
|
+
name: "unlink_account",
|
|
436
|
+
label: "Unlink Account",
|
|
437
|
+
icon: "unlink",
|
|
438
|
+
variant: "danger",
|
|
439
|
+
mode: "delete",
|
|
440
|
+
locations: ["list_item", "record_header"],
|
|
441
|
+
type: "api",
|
|
442
|
+
target: "/api/v1/auth/unlink-account",
|
|
443
|
+
confirmText: "Unlink this identity link? The user will no longer be able to sign in with this provider until they re-link it from their account settings.",
|
|
444
|
+
successMessage: "Identity link removed",
|
|
445
|
+
refreshAfter: true,
|
|
446
|
+
params: [
|
|
447
|
+
{ name: "providerId", field: "provider_id", defaultFromRow: true, required: true },
|
|
448
|
+
{ name: "accountId", field: "account_id", defaultFromRow: true, required: true }
|
|
449
|
+
]
|
|
450
|
+
}
|
|
451
|
+
],
|
|
428
452
|
listViews: {
|
|
429
453
|
mine: {
|
|
430
454
|
type: "grid",
|
|
@@ -1979,6 +2003,96 @@ var SysOauthApplication = data.ObjectSchema.create({
|
|
|
1979
2003
|
displayNameField: "name",
|
|
1980
2004
|
titleFormat: "{name}",
|
|
1981
2005
|
compactLayout: ["name", "client_id", "type", "disabled"],
|
|
2006
|
+
// Custom actions — all OAuth-application mutations are routed through
|
|
2007
|
+
// better-auth's `@better-auth/oauth-provider` endpoints (and a thin
|
|
2008
|
+
// ObjectStack-added auth route for the enable/disable toggle) rather
|
|
2009
|
+
// than the generic data layer, so server-side validation, secret
|
|
2010
|
+
// hashing, and audit hooks all run. The generic `delete` API method
|
|
2011
|
+
// is intentionally dropped from `apiMethods` below so the only delete
|
|
2012
|
+
// path is the better-auth wrapper.
|
|
2013
|
+
//
|
|
2014
|
+
// Upstream gap (better-auth 1.6.11): the stock `/admin/oauth2/update-client`
|
|
2015
|
+
// endpoint's Zod body schema does NOT accept the `disabled` flag, even
|
|
2016
|
+
// though the column exists and the runtime honours it. We bridge the
|
|
2017
|
+
// gap with `POST /api/v1/auth/admin/oauth2/toggle-disabled`, registered
|
|
2018
|
+
// by plugin-auth, which writes through better-auth's own adapter under
|
|
2019
|
+
// the auth namespace (no generic data-layer bypass). When upstream
|
|
2020
|
+
// ships `disabled` support, retarget the enable/disable actions and
|
|
2021
|
+
// delete the bridge route.
|
|
2022
|
+
actions: [
|
|
2023
|
+
{
|
|
2024
|
+
name: "disable_oauth_application",
|
|
2025
|
+
label: "Disable OAuth Application",
|
|
2026
|
+
icon: "pause-circle",
|
|
2027
|
+
variant: "secondary",
|
|
2028
|
+
mode: "custom",
|
|
2029
|
+
locations: ["list_item", "record_header"],
|
|
2030
|
+
type: "api",
|
|
2031
|
+
method: "POST",
|
|
2032
|
+
target: "/api/v1/auth/admin/oauth2/toggle-disabled",
|
|
2033
|
+
confirmText: "Disable this OAuth application? Active access/refresh tokens issued to it will continue to be rejected at the token, authorize, and introspect endpoints. Existing integrations will stop working immediately.",
|
|
2034
|
+
successMessage: "OAuth application disabled",
|
|
2035
|
+
refreshAfter: true,
|
|
2036
|
+
visible: "!record.disabled",
|
|
2037
|
+
bodyExtra: { disabled: true },
|
|
2038
|
+
params: [
|
|
2039
|
+
{ name: "client_id", field: "client_id", defaultFromRow: true, required: true }
|
|
2040
|
+
]
|
|
2041
|
+
},
|
|
2042
|
+
{
|
|
2043
|
+
name: "enable_oauth_application",
|
|
2044
|
+
label: "Enable OAuth Application",
|
|
2045
|
+
icon: "play-circle",
|
|
2046
|
+
variant: "primary",
|
|
2047
|
+
mode: "custom",
|
|
2048
|
+
locations: ["list_item", "record_header"],
|
|
2049
|
+
type: "api",
|
|
2050
|
+
method: "POST",
|
|
2051
|
+
target: "/api/v1/auth/admin/oauth2/toggle-disabled",
|
|
2052
|
+
confirmText: "Re-enable this OAuth application? Token issuance, authorization, and introspection will resume immediately.",
|
|
2053
|
+
successMessage: "OAuth application enabled",
|
|
2054
|
+
refreshAfter: true,
|
|
2055
|
+
visible: "record.disabled",
|
|
2056
|
+
bodyExtra: { disabled: false },
|
|
2057
|
+
params: [
|
|
2058
|
+
{ name: "client_id", field: "client_id", defaultFromRow: true, required: true }
|
|
2059
|
+
]
|
|
2060
|
+
},
|
|
2061
|
+
{
|
|
2062
|
+
name: "rotate_client_secret",
|
|
2063
|
+
label: "Rotate Client Secret",
|
|
2064
|
+
icon: "refresh-cw",
|
|
2065
|
+
variant: "secondary",
|
|
2066
|
+
mode: "custom",
|
|
2067
|
+
locations: ["list_item", "record_header"],
|
|
2068
|
+
type: "api",
|
|
2069
|
+
method: "POST",
|
|
2070
|
+
target: "/api/v1/auth/oauth2/client/rotate-secret",
|
|
2071
|
+
confirmText: "Rotate this OAuth client's secret? The previous secret will stop working immediately and any integrations using it will break until they are updated with the new secret. The new secret is shown only once.",
|
|
2072
|
+
successMessage: "Client secret rotated \u2014 copy the new value from the response now.",
|
|
2073
|
+
refreshAfter: true,
|
|
2074
|
+
params: [
|
|
2075
|
+
{ name: "client_id", field: "client_id", defaultFromRow: true, required: true }
|
|
2076
|
+
]
|
|
2077
|
+
},
|
|
2078
|
+
{
|
|
2079
|
+
name: "delete_oauth_application",
|
|
2080
|
+
label: "Delete OAuth Application",
|
|
2081
|
+
icon: "trash-2",
|
|
2082
|
+
variant: "danger",
|
|
2083
|
+
mode: "delete",
|
|
2084
|
+
locations: ["list_item", "record_header"],
|
|
2085
|
+
type: "api",
|
|
2086
|
+
method: "POST",
|
|
2087
|
+
target: "/api/v1/auth/oauth2/delete-client",
|
|
2088
|
+
confirmText: "Permanently delete this OAuth application? All issued tokens and consents will be invalidated and integrations using this client_id will stop working immediately. This cannot be undone.",
|
|
2089
|
+
successMessage: "OAuth application deleted",
|
|
2090
|
+
refreshAfter: true,
|
|
2091
|
+
params: [
|
|
2092
|
+
{ name: "client_id", field: "client_id", defaultFromRow: true, required: true }
|
|
2093
|
+
]
|
|
2094
|
+
}
|
|
2095
|
+
],
|
|
1982
2096
|
listViews: {
|
|
1983
2097
|
active: {
|
|
1984
2098
|
type: "grid",
|
|
@@ -2210,7 +2324,12 @@ var SysOauthApplication = data.ObjectSchema.create({
|
|
|
2210
2324
|
trackHistory: true,
|
|
2211
2325
|
searchable: true,
|
|
2212
2326
|
apiEnabled: true,
|
|
2213
|
-
|
|
2327
|
+
// All mutations (create/update/delete) must go through better-auth's
|
|
2328
|
+
// oauth-provider endpoints under /api/v1/auth/{admin/,}oauth2/* — the
|
|
2329
|
+
// generic data layer is read-only for this object so sysadmins cannot
|
|
2330
|
+
// bypass server-side OAuth validation. The Delete row action above is
|
|
2331
|
+
// wired to /api/v1/auth/oauth2/delete-client.
|
|
2332
|
+
apiMethods: ["get", "list"],
|
|
2214
2333
|
trash: false,
|
|
2215
2334
|
mru: false
|
|
2216
2335
|
}
|
|
@@ -2493,6 +2612,83 @@ var SysRole = data.ObjectSchema.create({
|
|
|
2493
2612
|
displayNameField: "label",
|
|
2494
2613
|
titleFormat: "{label}",
|
|
2495
2614
|
compactLayout: ["label", "name", "active", "is_default"],
|
|
2615
|
+
// Custom actions — system roles drive RBAC and are edited rarely but
|
|
2616
|
+
// require the four high-frequency sysadmin affordances every IdP
|
|
2617
|
+
// (Salesforce, ServiceNow, Okta) ships: activate/deactivate (lifecycle
|
|
2618
|
+
// without losing assignments), mark default (auto-assign to new users),
|
|
2619
|
+
// and clone (template for new roles). All operations hit the generic
|
|
2620
|
+
// data CRUD endpoint exposed by `apiEnabled` — no custom server route
|
|
2621
|
+
// required because `managedBy: 'config'` allows direct mutation.
|
|
2622
|
+
actions: [
|
|
2623
|
+
{
|
|
2624
|
+
name: "activate_role",
|
|
2625
|
+
label: "Activate Role",
|
|
2626
|
+
icon: "circle-check",
|
|
2627
|
+
variant: "secondary",
|
|
2628
|
+
mode: "custom",
|
|
2629
|
+
locations: ["list_item", "record_header"],
|
|
2630
|
+
type: "api",
|
|
2631
|
+
method: "PATCH",
|
|
2632
|
+
target: "/api/v1/data/sys_role/{id}",
|
|
2633
|
+
bodyExtra: { active: true },
|
|
2634
|
+
successMessage: "Role activated",
|
|
2635
|
+
refreshAfter: true
|
|
2636
|
+
},
|
|
2637
|
+
{
|
|
2638
|
+
name: "deactivate_role",
|
|
2639
|
+
label: "Deactivate Role",
|
|
2640
|
+
icon: "circle-off",
|
|
2641
|
+
variant: "danger",
|
|
2642
|
+
mode: "custom",
|
|
2643
|
+
locations: ["list_item", "record_header"],
|
|
2644
|
+
type: "api",
|
|
2645
|
+
method: "PATCH",
|
|
2646
|
+
target: "/api/v1/data/sys_role/{id}",
|
|
2647
|
+
bodyExtra: { active: false },
|
|
2648
|
+
confirmText: "Deactivate this role? Users with the role keep their assignment but the role stops granting permissions until re-activated.",
|
|
2649
|
+
successMessage: "Role deactivated",
|
|
2650
|
+
refreshAfter: true
|
|
2651
|
+
},
|
|
2652
|
+
{
|
|
2653
|
+
name: "set_default_role",
|
|
2654
|
+
label: "Set as Default",
|
|
2655
|
+
icon: "star",
|
|
2656
|
+
variant: "secondary",
|
|
2657
|
+
mode: "custom",
|
|
2658
|
+
locations: ["list_item", "record_header"],
|
|
2659
|
+
type: "api",
|
|
2660
|
+
method: "PATCH",
|
|
2661
|
+
target: "/api/v1/data/sys_role/{id}",
|
|
2662
|
+
bodyExtra: { is_default: true },
|
|
2663
|
+
confirmText: "Make this the default role for new users? Existing users are unaffected.",
|
|
2664
|
+
successMessage: "Default role updated",
|
|
2665
|
+
refreshAfter: true
|
|
2666
|
+
},
|
|
2667
|
+
{
|
|
2668
|
+
// Clone — POST a new sys_role row pre-filled from the source. The
|
|
2669
|
+
// dialog asks only for the new API name / label so the operator
|
|
2670
|
+
// can rename atomically; permissions JSON is copied wholesale via
|
|
2671
|
+
// defaultFromRow.
|
|
2672
|
+
name: "clone_role",
|
|
2673
|
+
label: "Clone Role",
|
|
2674
|
+
icon: "copy",
|
|
2675
|
+
variant: "secondary",
|
|
2676
|
+
mode: "custom",
|
|
2677
|
+
locations: ["list_item", "record_header"],
|
|
2678
|
+
type: "api",
|
|
2679
|
+
method: "POST",
|
|
2680
|
+
target: "/api/v1/data/sys_role",
|
|
2681
|
+
bodyExtra: { is_default: false, active: true },
|
|
2682
|
+
successMessage: "Role cloned",
|
|
2683
|
+
refreshAfter: true,
|
|
2684
|
+
params: [
|
|
2685
|
+
{ name: "label", label: "New Display Name", type: "text", required: true },
|
|
2686
|
+
{ name: "name", label: "New API Name", type: "text", required: true, helpText: "Unique snake_case machine name" },
|
|
2687
|
+
{ field: "description", defaultFromRow: true },
|
|
2688
|
+
{ field: "permissions", defaultFromRow: true }
|
|
2689
|
+
]
|
|
2690
|
+
}
|
|
2691
|
+
],
|
|
2496
2692
|
listViews: {
|
|
2497
2693
|
active: {
|
|
2498
2694
|
type: "grid",
|
|
@@ -2619,6 +2815,64 @@ var SysPermissionSet = data.ObjectSchema.create({
|
|
|
2619
2815
|
displayNameField: "label",
|
|
2620
2816
|
titleFormat: "{label}",
|
|
2621
2817
|
compactLayout: ["label", "name", "active"],
|
|
2818
|
+
// Custom actions — permission sets are templates assigned to roles or
|
|
2819
|
+
// users (via sys_role_permission_set / sys_user_permission_set). The
|
|
2820
|
+
// sysadmin operations that don't live on the parent-detail tabs are
|
|
2821
|
+
// lifecycle (activate/deactivate without losing assignments) and
|
|
2822
|
+
// clone (build a new permset by tweaking an existing one). Both hit
|
|
2823
|
+
// the generic data CRUD endpoint — managedBy: 'config' permits it.
|
|
2824
|
+
actions: [
|
|
2825
|
+
{
|
|
2826
|
+
name: "activate_permission_set",
|
|
2827
|
+
label: "Activate",
|
|
2828
|
+
icon: "circle-check",
|
|
2829
|
+
variant: "secondary",
|
|
2830
|
+
mode: "custom",
|
|
2831
|
+
locations: ["list_item", "record_header"],
|
|
2832
|
+
type: "api",
|
|
2833
|
+
method: "PATCH",
|
|
2834
|
+
target: "/api/v1/data/sys_permission_set/{id}",
|
|
2835
|
+
bodyExtra: { active: true },
|
|
2836
|
+
successMessage: "Permission set activated",
|
|
2837
|
+
refreshAfter: true
|
|
2838
|
+
},
|
|
2839
|
+
{
|
|
2840
|
+
name: "deactivate_permission_set",
|
|
2841
|
+
label: "Deactivate",
|
|
2842
|
+
icon: "circle-off",
|
|
2843
|
+
variant: "danger",
|
|
2844
|
+
mode: "custom",
|
|
2845
|
+
locations: ["list_item", "record_header"],
|
|
2846
|
+
type: "api",
|
|
2847
|
+
method: "PATCH",
|
|
2848
|
+
target: "/api/v1/data/sys_permission_set/{id}",
|
|
2849
|
+
bodyExtra: { active: false },
|
|
2850
|
+
confirmText: "Deactivate this permission set? Existing assignments stay in place but stop granting access until re-activated.",
|
|
2851
|
+
successMessage: "Permission set deactivated",
|
|
2852
|
+
refreshAfter: true
|
|
2853
|
+
},
|
|
2854
|
+
{
|
|
2855
|
+
name: "clone_permission_set",
|
|
2856
|
+
label: "Clone",
|
|
2857
|
+
icon: "copy",
|
|
2858
|
+
variant: "secondary",
|
|
2859
|
+
mode: "custom",
|
|
2860
|
+
locations: ["list_item", "record_header"],
|
|
2861
|
+
type: "api",
|
|
2862
|
+
method: "POST",
|
|
2863
|
+
target: "/api/v1/data/sys_permission_set",
|
|
2864
|
+
bodyExtra: { active: true },
|
|
2865
|
+
successMessage: "Permission set cloned",
|
|
2866
|
+
refreshAfter: true,
|
|
2867
|
+
params: [
|
|
2868
|
+
{ name: "label", label: "New Display Name", type: "text", required: true },
|
|
2869
|
+
{ name: "name", label: "New API Name", type: "text", required: true, helpText: "Unique snake_case machine name" },
|
|
2870
|
+
{ field: "description", defaultFromRow: true },
|
|
2871
|
+
{ field: "object_permissions", defaultFromRow: true },
|
|
2872
|
+
{ field: "field_permissions", defaultFromRow: true }
|
|
2873
|
+
]
|
|
2874
|
+
}
|
|
2875
|
+
],
|
|
2622
2876
|
listViews: {
|
|
2623
2877
|
active: {
|
|
2624
2878
|
type: "grid",
|
|
@@ -6254,8 +6508,7 @@ var SETUP_APP = {
|
|
|
6254
6508
|
label: "Overview",
|
|
6255
6509
|
icon: "layout-dashboard",
|
|
6256
6510
|
children: [
|
|
6257
|
-
{ id: "nav_system_overview", type: "dashboard", label: "System Overview", dashboardName: "system_overview", icon: "activity" }
|
|
6258
|
-
{ id: "nav_security_overview", type: "dashboard", label: "Security Overview", dashboardName: "security_overview", icon: "shield" }
|
|
6511
|
+
{ id: "nav_system_overview", type: "dashboard", label: "System Overview", dashboardName: "system_overview", icon: "activity" }
|
|
6259
6512
|
]
|
|
6260
6513
|
},
|
|
6261
6514
|
{
|
|
@@ -6317,9 +6570,17 @@ var SETUP_APP = {
|
|
|
6317
6570
|
// is used (not `object`) because settings are stored in a generic
|
|
6318
6571
|
// K/V table (`sys_setting`) rather than per-namespace objects, and
|
|
6319
6572
|
// the renderer is a dedicated <SettingsView> page in objectui.
|
|
6573
|
+
//
|
|
6574
|
+
// Order mirrors `builtinSettingsManifests` so left-nav order matches
|
|
6575
|
+
// the All-Settings index. AI groups chat + embedder under one entry
|
|
6576
|
+
// because operators reason about them together; Knowledge is its
|
|
6577
|
+
// own entry because the adapter selection is independent.
|
|
6320
6578
|
{ id: "nav_settings_hub", type: "url", label: "All Settings", url: "/apps/setup/system/settings", icon: "settings-2" },
|
|
6321
|
-
{ id: "nav_settings_mail", type: "url", label: "Email", url: "/apps/setup/system/settings/mail", icon: "mail" },
|
|
6322
6579
|
{ id: "nav_settings_branding", type: "url", label: "Branding", url: "/apps/setup/system/settings/branding", icon: "palette" },
|
|
6580
|
+
{ id: "nav_settings_mail", type: "url", label: "Email", url: "/apps/setup/system/settings/mail", icon: "mail" },
|
|
6581
|
+
{ id: "nav_settings_storage", type: "url", label: "File Storage", url: "/apps/setup/system/settings/storage", icon: "hard-drive" },
|
|
6582
|
+
{ id: "nav_settings_ai", type: "url", label: "AI & Embedder", url: "/apps/setup/system/settings/ai", icon: "sparkles" },
|
|
6583
|
+
{ id: "nav_settings_knowledge", type: "url", label: "Knowledge", url: "/apps/setup/system/settings/knowledge", icon: "book-open" },
|
|
6323
6584
|
{ id: "nav_settings_feature_flags", type: "url", label: "Feature Flags", url: "/apps/setup/system/settings/feature_flags", icon: "flag" }
|
|
6324
6585
|
]
|
|
6325
6586
|
},
|
|
@@ -6398,63 +6659,42 @@ var SETUP_APP = {
|
|
|
6398
6659
|
var SystemOverviewDashboard = ui.Dashboard.create({
|
|
6399
6660
|
name: "system_overview",
|
|
6400
6661
|
label: "System Overview",
|
|
6401
|
-
description: "Platform health,
|
|
6402
|
-
// 12-column grid matches the widget `w` values below
|
|
6403
|
-
// this, the renderer falls back to a 4-column grid and `w: 3` becomes 75%
|
|
6404
|
-
// width per metric — so KPI cards stack vertically instead of forming a
|
|
6405
|
-
// 4-up row.
|
|
6662
|
+
description: "Platform health, security activity, and recent audit events",
|
|
6663
|
+
// 12-column grid matches the widget `w` values below.
|
|
6406
6664
|
columns: 12,
|
|
6407
6665
|
gap: 4,
|
|
6408
6666
|
widgets: [
|
|
6409
|
-
// ──
|
|
6410
|
-
{
|
|
6411
|
-
id: "widget_active_sessions",
|
|
6412
|
-
title: "Active Sessions",
|
|
6413
|
-
type: "metric",
|
|
6414
|
-
object: "sys_session",
|
|
6415
|
-
layout: {
|
|
6416
|
-
x: 0,
|
|
6417
|
-
y: 0,
|
|
6418
|
-
w: 3,
|
|
6419
|
-
h: 2
|
|
6420
|
-
},
|
|
6421
|
-
aggregate: "count",
|
|
6422
|
-
colorVariant: "blue",
|
|
6423
|
-
description: "Number of currently active user sessions"
|
|
6424
|
-
},
|
|
6425
|
-
// ── Total Users Widget ──────────────────────────────────────────
|
|
6667
|
+
// ── Row 1: Platform KPIs ────────────────────────────────────────
|
|
6426
6668
|
{
|
|
6427
6669
|
id: "widget_total_users",
|
|
6428
6670
|
title: "Total Users",
|
|
6429
6671
|
type: "metric",
|
|
6430
6672
|
object: "sys_user",
|
|
6431
|
-
layout: {
|
|
6432
|
-
x: 3,
|
|
6433
|
-
y: 0,
|
|
6434
|
-
w: 3,
|
|
6435
|
-
h: 2
|
|
6436
|
-
},
|
|
6673
|
+
layout: { x: 0, y: 0, w: 3, h: 2 },
|
|
6437
6674
|
aggregate: "count",
|
|
6438
6675
|
colorVariant: "teal",
|
|
6439
6676
|
description: "Total registered users in the system"
|
|
6440
6677
|
},
|
|
6441
|
-
// ── Organizations Widget ────────────────────────────────────────
|
|
6442
6678
|
{
|
|
6443
6679
|
id: "widget_organizations",
|
|
6444
6680
|
title: "Organizations",
|
|
6445
6681
|
type: "metric",
|
|
6446
6682
|
object: "sys_organization",
|
|
6447
|
-
layout: {
|
|
6448
|
-
x: 6,
|
|
6449
|
-
y: 0,
|
|
6450
|
-
w: 3,
|
|
6451
|
-
h: 2
|
|
6452
|
-
},
|
|
6683
|
+
layout: { x: 3, y: 0, w: 3, h: 2 },
|
|
6453
6684
|
aggregate: "count",
|
|
6454
6685
|
colorVariant: "orange",
|
|
6455
6686
|
description: "Total organizations on the platform"
|
|
6456
6687
|
},
|
|
6457
|
-
|
|
6688
|
+
{
|
|
6689
|
+
id: "widget_active_sessions",
|
|
6690
|
+
title: "Active Sessions",
|
|
6691
|
+
type: "metric",
|
|
6692
|
+
object: "sys_session",
|
|
6693
|
+
layout: { x: 6, y: 0, w: 3, h: 2 },
|
|
6694
|
+
aggregate: "count",
|
|
6695
|
+
colorVariant: "blue",
|
|
6696
|
+
description: "Number of currently active user sessions"
|
|
6697
|
+
},
|
|
6458
6698
|
{
|
|
6459
6699
|
id: "widget_packages_installed",
|
|
6460
6700
|
title: "Packages Installed",
|
|
@@ -6463,97 +6703,13 @@ var SystemOverviewDashboard = ui.Dashboard.create({
|
|
|
6463
6703
|
// Cloud-only object — only registered when service-tenant is loaded.
|
|
6464
6704
|
// Hide this widget gracefully in single-environment runtimes.
|
|
6465
6705
|
requiresObject: "sys_package_installation",
|
|
6466
|
-
layout: {
|
|
6467
|
-
x: 9,
|
|
6468
|
-
y: 0,
|
|
6469
|
-
w: 3,
|
|
6470
|
-
h: 2
|
|
6471
|
-
},
|
|
6706
|
+
layout: { x: 9, y: 0, w: 3, h: 2 },
|
|
6472
6707
|
filter: { status: "installed" },
|
|
6473
6708
|
aggregate: "count",
|
|
6474
6709
|
colorVariant: "success",
|
|
6475
6710
|
description: "Active package installations across projects"
|
|
6476
6711
|
},
|
|
6477
|
-
// ──
|
|
6478
|
-
// Note: relative date filters like `NOW() - INTERVAL 7 DAY` are not
|
|
6479
|
-
// currently substituted by the analytics layer (see
|
|
6480
|
-
// service-analytics/strategies/filter-normalizer.ts). The dashboard's
|
|
6481
|
-
// `globalFilters` date-range bar at the bottom is the supported way
|
|
6482
|
-
// to scope this widget.
|
|
6483
|
-
{
|
|
6484
|
-
id: "widget_audit_actions",
|
|
6485
|
-
title: "Audit Actions",
|
|
6486
|
-
description: "Distribution of audit events by action type",
|
|
6487
|
-
type: "pie",
|
|
6488
|
-
object: "sys_audit_log",
|
|
6489
|
-
layout: {
|
|
6490
|
-
x: 0,
|
|
6491
|
-
y: 2,
|
|
6492
|
-
w: 6,
|
|
6493
|
-
h: 4
|
|
6494
|
-
},
|
|
6495
|
-
categoryField: "action",
|
|
6496
|
-
aggregate: "count"
|
|
6497
|
-
},
|
|
6498
|
-
// ── Session Status Overview ─────────────────────────────────────
|
|
6499
|
-
{
|
|
6500
|
-
id: "widget_active_orgs",
|
|
6501
|
-
title: "Sessions by Organization",
|
|
6502
|
-
description: "Active sessions grouped by organization",
|
|
6503
|
-
type: "bar",
|
|
6504
|
-
object: "sys_session",
|
|
6505
|
-
layout: {
|
|
6506
|
-
x: 6,
|
|
6507
|
-
y: 2,
|
|
6508
|
-
w: 6,
|
|
6509
|
-
h: 4
|
|
6510
|
-
},
|
|
6511
|
-
categoryField: "active_organization_id",
|
|
6512
|
-
aggregate: "count"
|
|
6513
|
-
},
|
|
6514
|
-
// ── Recent Audit Log (Table) ────────────────────────────────────
|
|
6515
|
-
// `type: 'table'` renders the underlying rows directly, so this
|
|
6516
|
-
// panel actually shows the latest events instead of just repeating
|
|
6517
|
-
// the total-count metric. `valueField`/`aggregate` are intentionally
|
|
6518
|
-
// omitted — table widgets pull raw records.
|
|
6519
|
-
{
|
|
6520
|
-
id: "widget_recent_events",
|
|
6521
|
-
title: "Recent Audit Events",
|
|
6522
|
-
description: "Latest platform events",
|
|
6523
|
-
type: "table",
|
|
6524
|
-
object: "sys_audit_log",
|
|
6525
|
-
layout: {
|
|
6526
|
-
x: 0,
|
|
6527
|
-
y: 6,
|
|
6528
|
-
w: 12,
|
|
6529
|
-
h: 4
|
|
6530
|
-
},
|
|
6531
|
-
options: {
|
|
6532
|
-
columns: ["created_at", "user_id", "action", "object_name", "record_id"],
|
|
6533
|
-
sort: [{ field: "created_at", order: "desc" }],
|
|
6534
|
-
pageSize: 20
|
|
6535
|
-
}
|
|
6536
|
-
}
|
|
6537
|
-
],
|
|
6538
|
-
globalFilters: [
|
|
6539
|
-
{
|
|
6540
|
-
field: "created_at",
|
|
6541
|
-
type: "date",
|
|
6542
|
-
label: "Date Range",
|
|
6543
|
-
scope: "dashboard",
|
|
6544
|
-
defaultValue: "last_7_days"
|
|
6545
|
-
}
|
|
6546
|
-
]
|
|
6547
|
-
});
|
|
6548
|
-
var SecurityOverviewDashboard = ui.Dashboard.create({
|
|
6549
|
-
name: "security_overview",
|
|
6550
|
-
label: "Security Overview",
|
|
6551
|
-
description: "Security events, authentication, and audit trails",
|
|
6552
|
-
// 12-column grid matches the widget `w` values below.
|
|
6553
|
-
columns: 12,
|
|
6554
|
-
gap: 4,
|
|
6555
|
-
widgets: [
|
|
6556
|
-
// ── Login Events Widget ─────────────────────────────────────────
|
|
6712
|
+
// ── Row 2: Security KPIs ────────────────────────────────────────
|
|
6557
6713
|
// The `sys_audit_log.action` enum doesn't distinguish failed vs
|
|
6558
6714
|
// successful logins (both fold into `action='login'`). Surfacing a
|
|
6559
6715
|
// total Login Events count is honest; a "Failed Logins" widget will
|
|
@@ -6563,116 +6719,72 @@ var SecurityOverviewDashboard = ui.Dashboard.create({
|
|
|
6563
6719
|
title: "Login Events",
|
|
6564
6720
|
type: "metric",
|
|
6565
6721
|
object: "sys_audit_log",
|
|
6566
|
-
layout: {
|
|
6567
|
-
x: 0,
|
|
6568
|
-
y: 0,
|
|
6569
|
-
w: 3,
|
|
6570
|
-
h: 2
|
|
6571
|
-
},
|
|
6722
|
+
layout: { x: 0, y: 2, w: 4, h: 2 },
|
|
6572
6723
|
filter: { action: "login" },
|
|
6573
6724
|
aggregate: "count",
|
|
6574
6725
|
colorVariant: "blue",
|
|
6575
6726
|
description: "Authentication events recorded by the audit log"
|
|
6576
6727
|
},
|
|
6577
|
-
// ── Permission Changes Widget ───────────────────────────────────
|
|
6578
6728
|
{
|
|
6579
6729
|
id: "widget_permission_changes",
|
|
6580
6730
|
title: "Permission Changes",
|
|
6581
6731
|
type: "metric",
|
|
6582
6732
|
object: "sys_audit_log",
|
|
6583
|
-
layout: {
|
|
6584
|
-
x: 3,
|
|
6585
|
-
y: 0,
|
|
6586
|
-
w: 3,
|
|
6587
|
-
h: 2
|
|
6588
|
-
},
|
|
6733
|
+
layout: { x: 4, y: 2, w: 4, h: 2 },
|
|
6589
6734
|
filter: { action: "permission_change" },
|
|
6590
6735
|
aggregate: "count",
|
|
6591
6736
|
colorVariant: "warning",
|
|
6592
6737
|
description: "Recent permission and role modifications"
|
|
6593
6738
|
},
|
|
6594
|
-
// ── System Config Changes Widget ────────────────────────────────
|
|
6595
6739
|
{
|
|
6596
6740
|
id: "widget_config_changes",
|
|
6597
6741
|
title: "Config Changes",
|
|
6598
6742
|
type: "metric",
|
|
6599
6743
|
object: "sys_audit_log",
|
|
6600
|
-
layout: {
|
|
6601
|
-
x: 6,
|
|
6602
|
-
y: 0,
|
|
6603
|
-
w: 3,
|
|
6604
|
-
h: 2
|
|
6605
|
-
},
|
|
6744
|
+
layout: { x: 8, y: 2, w: 4, h: 2 },
|
|
6606
6745
|
filter: { action: "config_change" },
|
|
6607
6746
|
aggregate: "count",
|
|
6608
6747
|
colorVariant: "blue",
|
|
6609
6748
|
description: "System configuration modifications"
|
|
6610
6749
|
},
|
|
6611
|
-
// ──
|
|
6612
|
-
|
|
6613
|
-
|
|
6614
|
-
|
|
6615
|
-
|
|
6616
|
-
|
|
6617
|
-
layout: {
|
|
6618
|
-
x: 9,
|
|
6619
|
-
y: 0,
|
|
6620
|
-
w: 3,
|
|
6621
|
-
h: 2
|
|
6622
|
-
},
|
|
6623
|
-
aggregate: "count",
|
|
6624
|
-
colorVariant: "success",
|
|
6625
|
-
description: "Currently active user sessions"
|
|
6626
|
-
},
|
|
6627
|
-
// ── Audit Events by Type ────────────────────────────────────────
|
|
6750
|
+
// ── Row 3: Distribution charts ──────────────────────────────────
|
|
6751
|
+
// Note: relative date filters like `NOW() - INTERVAL 7 DAY` are not
|
|
6752
|
+
// currently substituted by the analytics layer (see
|
|
6753
|
+
// service-analytics/strategies/filter-normalizer.ts). The dashboard's
|
|
6754
|
+
// `globalFilters` date-range bar at the bottom is the supported way
|
|
6755
|
+
// to scope these widgets.
|
|
6628
6756
|
{
|
|
6629
6757
|
id: "widget_events_by_type",
|
|
6630
|
-
title: "Audit Events by
|
|
6631
|
-
description: "Distribution of
|
|
6758
|
+
title: "Audit Events by Action",
|
|
6759
|
+
description: "Distribution of audit events by action type",
|
|
6632
6760
|
type: "pie",
|
|
6633
6761
|
object: "sys_audit_log",
|
|
6634
|
-
layout: {
|
|
6635
|
-
x: 0,
|
|
6636
|
-
y: 2,
|
|
6637
|
-
w: 6,
|
|
6638
|
-
h: 4
|
|
6639
|
-
},
|
|
6762
|
+
layout: { x: 0, y: 4, w: 6, h: 4 },
|
|
6640
6763
|
categoryField: "action",
|
|
6641
6764
|
aggregate: "count"
|
|
6642
6765
|
},
|
|
6643
|
-
// ── Audit Events by User ────────────────────────────────────────
|
|
6644
6766
|
{
|
|
6645
6767
|
id: "widget_events_by_user",
|
|
6646
6768
|
title: "Events by User",
|
|
6647
6769
|
description: "Activity distribution across users",
|
|
6648
6770
|
type: "bar",
|
|
6649
6771
|
object: "sys_audit_log",
|
|
6650
|
-
layout: {
|
|
6651
|
-
x: 6,
|
|
6652
|
-
y: 2,
|
|
6653
|
-
w: 6,
|
|
6654
|
-
h: 4
|
|
6655
|
-
},
|
|
6772
|
+
layout: { x: 6, y: 4, w: 6, h: 4 },
|
|
6656
6773
|
categoryField: "user_id",
|
|
6657
6774
|
aggregate: "count"
|
|
6658
6775
|
},
|
|
6659
|
-
// ── Recent
|
|
6660
|
-
//
|
|
6776
|
+
// ── Row 4: Recent audit events table ────────────────────────────
|
|
6777
|
+
// `type: 'table'` renders the underlying rows directly, so this
|
|
6778
|
+
// panel actually shows the latest events instead of just repeating
|
|
6779
|
+
// the total-count metric. `valueField`/`aggregate` are intentionally
|
|
6780
|
+
// omitted — table widgets pull raw records.
|
|
6661
6781
|
{
|
|
6662
|
-
id: "
|
|
6663
|
-
title: "Recent
|
|
6664
|
-
description: "Latest permission
|
|
6782
|
+
id: "widget_recent_events",
|
|
6783
|
+
title: "Recent Audit Events",
|
|
6784
|
+
description: "Latest platform events (login, permission, config, \u2026)",
|
|
6665
6785
|
type: "table",
|
|
6666
6786
|
object: "sys_audit_log",
|
|
6667
|
-
layout: {
|
|
6668
|
-
x: 0,
|
|
6669
|
-
y: 6,
|
|
6670
|
-
w: 12,
|
|
6671
|
-
h: 4
|
|
6672
|
-
},
|
|
6673
|
-
filter: {
|
|
6674
|
-
action: { $in: ["login", "logout", "permission_change", "config_change"] }
|
|
6675
|
-
},
|
|
6787
|
+
layout: { x: 0, y: 8, w: 12, h: 4 },
|
|
6676
6788
|
options: {
|
|
6677
6789
|
columns: ["created_at", "user_id", "action", "object_name", "record_id"],
|
|
6678
6790
|
sort: [{ field: "created_at", order: "desc" }],
|
|
@@ -9616,7 +9728,6 @@ var en = {
|
|
|
9616
9728
|
group_advanced: { label: "Advanced" },
|
|
9617
9729
|
// Overview
|
|
9618
9730
|
nav_system_overview: { label: "System Overview" },
|
|
9619
|
-
nav_security_overview: { label: "Security Overview" },
|
|
9620
9731
|
// People & Organization
|
|
9621
9732
|
nav_users: { label: "Users" },
|
|
9622
9733
|
nav_departments: { label: "Departments" },
|
|
@@ -9657,12 +9768,8 @@ var en = {
|
|
|
9657
9768
|
dashboards: {
|
|
9658
9769
|
system_overview: {
|
|
9659
9770
|
label: "System Overview",
|
|
9660
|
-
description: "Platform health,
|
|
9771
|
+
description: "Platform health, security activity, and recent audit events",
|
|
9661
9772
|
widgets: {
|
|
9662
|
-
widget_active_sessions: {
|
|
9663
|
-
title: "Active Sessions",
|
|
9664
|
-
description: "Number of currently active user sessions"
|
|
9665
|
-
},
|
|
9666
9773
|
widget_total_users: {
|
|
9667
9774
|
title: "Total Users",
|
|
9668
9775
|
description: "Total registered users in the system"
|
|
@@ -9671,28 +9778,14 @@ var en = {
|
|
|
9671
9778
|
title: "Organizations",
|
|
9672
9779
|
description: "Total organizations on the platform"
|
|
9673
9780
|
},
|
|
9781
|
+
widget_active_sessions: {
|
|
9782
|
+
title: "Active Sessions",
|
|
9783
|
+
description: "Number of currently active user sessions"
|
|
9784
|
+
},
|
|
9674
9785
|
widget_packages_installed: {
|
|
9675
9786
|
title: "Packages Installed",
|
|
9676
9787
|
description: "Active package installations across projects"
|
|
9677
9788
|
},
|
|
9678
|
-
widget_audit_actions: {
|
|
9679
|
-
title: "Audit Actions",
|
|
9680
|
-
description: "Distribution of audit events by action type"
|
|
9681
|
-
},
|
|
9682
|
-
widget_active_orgs: {
|
|
9683
|
-
title: "Sessions by Organization",
|
|
9684
|
-
description: "Active sessions grouped by organization"
|
|
9685
|
-
},
|
|
9686
|
-
widget_recent_events: {
|
|
9687
|
-
title: "Recent Audit Events",
|
|
9688
|
-
description: "Latest platform events"
|
|
9689
|
-
}
|
|
9690
|
-
}
|
|
9691
|
-
},
|
|
9692
|
-
security_overview: {
|
|
9693
|
-
label: "Security Overview",
|
|
9694
|
-
description: "Security events, authentication, and audit trails",
|
|
9695
|
-
widgets: {
|
|
9696
9789
|
widget_login_events: {
|
|
9697
9790
|
title: "Login Events",
|
|
9698
9791
|
description: "Authentication events recorded by the audit log"
|
|
@@ -9705,21 +9798,17 @@ var en = {
|
|
|
9705
9798
|
title: "Config Changes",
|
|
9706
9799
|
description: "System configuration modifications"
|
|
9707
9800
|
},
|
|
9708
|
-
widget_active_sessions: {
|
|
9709
|
-
title: "Active Sessions",
|
|
9710
|
-
description: "Currently active user sessions"
|
|
9711
|
-
},
|
|
9712
9801
|
widget_events_by_type: {
|
|
9713
|
-
title: "Audit Events by
|
|
9714
|
-
description: "Distribution of
|
|
9802
|
+
title: "Audit Events by Action",
|
|
9803
|
+
description: "Distribution of audit events by action type"
|
|
9715
9804
|
},
|
|
9716
9805
|
widget_events_by_user: {
|
|
9717
9806
|
title: "Events by User",
|
|
9718
9807
|
description: "Activity distribution across users"
|
|
9719
9808
|
},
|
|
9720
|
-
|
|
9721
|
-
title: "Recent
|
|
9722
|
-
description: "Latest permission
|
|
9809
|
+
widget_recent_events: {
|
|
9810
|
+
title: "Recent Audit Events",
|
|
9811
|
+
description: "Latest platform events (login, permission, config, \u2026)"
|
|
9723
9812
|
}
|
|
9724
9813
|
}
|
|
9725
9814
|
}
|
|
@@ -12653,7 +12742,6 @@ var zhCN = {
|
|
|
12653
12742
|
group_diagnostics: { label: "\u8BCA\u65AD" },
|
|
12654
12743
|
group_advanced: { label: "\u9AD8\u7EA7" },
|
|
12655
12744
|
nav_system_overview: { label: "\u7CFB\u7EDF\u6982\u89C8" },
|
|
12656
|
-
nav_security_overview: { label: "\u5B89\u5168\u6982\u89C8" },
|
|
12657
12745
|
nav_users: { label: "\u7528\u6237" },
|
|
12658
12746
|
nav_departments: { label: "\u90E8\u95E8" },
|
|
12659
12747
|
nav_teams: { label: "\u56E2\u961F" },
|
|
@@ -12688,28 +12776,18 @@ var zhCN = {
|
|
|
12688
12776
|
dashboards: {
|
|
12689
12777
|
system_overview: {
|
|
12690
12778
|
label: "\u7CFB\u7EDF\u6982\u89C8",
|
|
12691
|
-
description: "\u5E73\u53F0\u8FD0\u884C\u72B6\u51B5\u3001\
|
|
12779
|
+
description: "\u5E73\u53F0\u8FD0\u884C\u72B6\u51B5\u3001\u5B89\u5168\u6D3B\u52A8\u4E0E\u6700\u8FD1\u5BA1\u8BA1\u4E8B\u4EF6",
|
|
12692
12780
|
widgets: {
|
|
12693
|
-
widget_active_sessions: { title: "\u6D3B\u8DC3\u4F1A\u8BDD", description: "\u5F53\u524D\u6D3B\u8DC3\u7528\u6237\u4F1A\u8BDD\u6570\u91CF" },
|
|
12694
12781
|
widget_total_users: { title: "\u7528\u6237\u603B\u6570", description: "\u7CFB\u7EDF\u4E2D\u5DF2\u6CE8\u518C\u7684\u7528\u6237\u603B\u6570" },
|
|
12695
12782
|
widget_organizations: { title: "\u7EC4\u7EC7\u6570", description: "\u5E73\u53F0\u4E0A\u7684\u7EC4\u7EC7\u603B\u6570" },
|
|
12783
|
+
widget_active_sessions: { title: "\u6D3B\u8DC3\u4F1A\u8BDD", description: "\u5F53\u524D\u6D3B\u8DC3\u7528\u6237\u4F1A\u8BDD\u6570\u91CF" },
|
|
12696
12784
|
widget_packages_installed: { title: "\u5DF2\u5B89\u88C5\u5305", description: "\u9879\u76EE\u4E2D\u5DF2\u6FC0\u6D3B\u7684\u5B89\u88C5\u5305\u6570" },
|
|
12697
|
-
widget_audit_actions: { title: "\u5BA1\u8BA1\u64CD\u4F5C", description: "\u6309\u64CD\u4F5C\u7C7B\u578B\u5206\u5E03\u7684\u5BA1\u8BA1\u4E8B\u4EF6" },
|
|
12698
|
-
widget_active_orgs: { title: "\u6309\u7EC4\u7EC7\u5212\u5206\u4F1A\u8BDD", description: "\u6309\u7EC4\u7EC7\u5206\u7EC4\u7684\u6D3B\u8DC3\u4F1A\u8BDD" },
|
|
12699
|
-
widget_recent_events: { title: "\u6700\u8FD1\u5BA1\u8BA1\u4E8B\u4EF6", description: "\u6700\u65B0\u7684\u5E73\u53F0\u4E8B\u4EF6" }
|
|
12700
|
-
}
|
|
12701
|
-
},
|
|
12702
|
-
security_overview: {
|
|
12703
|
-
label: "\u5B89\u5168\u6982\u89C8",
|
|
12704
|
-
description: "\u5B89\u5168\u4E8B\u4EF6\u3001\u8EAB\u4EFD\u8BA4\u8BC1\u4E0E\u5BA1\u8BA1\u8FFD\u8E2A",
|
|
12705
|
-
widgets: {
|
|
12706
12785
|
widget_login_events: { title: "\u767B\u5F55\u4E8B\u4EF6", description: "\u5BA1\u8BA1\u65E5\u5FD7\u4E2D\u8BB0\u5F55\u7684\u8BA4\u8BC1\u4E8B\u4EF6" },
|
|
12707
12786
|
widget_permission_changes: { title: "\u6743\u9650\u53D8\u66F4", description: "\u6700\u8FD1\u7684\u6743\u9650\u548C\u89D2\u8272\u4FEE\u6539" },
|
|
12708
12787
|
widget_config_changes: { title: "\u914D\u7F6E\u53D8\u66F4", description: "\u7CFB\u7EDF\u914D\u7F6E\u4FEE\u6539" },
|
|
12709
|
-
|
|
12710
|
-
widget_events_by_type: { title: "\u6309\u7C7B\u578B\u5206\u5E03\u7684\u5BA1\u8BA1\u4E8B\u4EF6", description: "\u5B89\u5168\u4E0E\u5BA1\u8BA1\u4E8B\u4EF6\u5206\u5E03" },
|
|
12788
|
+
widget_events_by_type: { title: "\u6309\u64CD\u4F5C\u5206\u5E03\u7684\u5BA1\u8BA1\u4E8B\u4EF6", description: "\u5BA1\u8BA1\u4E8B\u4EF6\u6309\u64CD\u4F5C\u7C7B\u578B\u5206\u5E03" },
|
|
12711
12789
|
widget_events_by_user: { title: "\u6309\u7528\u6237\u5206\u5E03\u7684\u4E8B\u4EF6", description: "\u7528\u6237\u6D3B\u52A8\u5206\u5E03" },
|
|
12712
|
-
|
|
12790
|
+
widget_recent_events: { title: "\u6700\u8FD1\u5BA1\u8BA1\u4E8B\u4EF6", description: "\u6700\u65B0\u7684\u5E73\u53F0\u4E8B\u4EF6\uFF08\u767B\u5F55\u3001\u6743\u9650\u3001\u914D\u7F6E\u7B49\uFF09" }
|
|
12713
12791
|
}
|
|
12714
12792
|
}
|
|
12715
12793
|
}
|
|
@@ -15638,7 +15716,6 @@ var jaJP = {
|
|
|
15638
15716
|
group_diagnostics: { label: "\u8A3A\u65AD" },
|
|
15639
15717
|
group_advanced: { label: "\u8A73\u7D30" },
|
|
15640
15718
|
nav_system_overview: { label: "\u30B7\u30B9\u30C6\u30E0\u6982\u8981" },
|
|
15641
|
-
nav_security_overview: { label: "\u30BB\u30AD\u30E5\u30EA\u30C6\u30A3\u6982\u8981" },
|
|
15642
15719
|
nav_users: { label: "\u30E6\u30FC\u30B6\u30FC" },
|
|
15643
15720
|
nav_departments: { label: "\u90E8\u7F72" },
|
|
15644
15721
|
nav_teams: { label: "\u30C1\u30FC\u30E0" },
|
|
@@ -15673,28 +15750,18 @@ var jaJP = {
|
|
|
15673
15750
|
dashboards: {
|
|
15674
15751
|
system_overview: {
|
|
15675
15752
|
label: "\u30B7\u30B9\u30C6\u30E0\u6982\u8981",
|
|
15676
|
-
description: "\u30D7\u30E9\u30C3\u30C8\u30D5\u30A9\u30FC\u30E0\u306E\u5065\u5168\u6027\u3001\u30BB\
|
|
15753
|
+
description: "\u30D7\u30E9\u30C3\u30C8\u30D5\u30A9\u30FC\u30E0\u306E\u5065\u5168\u6027\u3001\u30BB\u30AD\u30E5\u30EA\u30C6\u30A3\u6D3B\u52D5\u3001\u6700\u8FD1\u306E\u76E3\u67FB\u30A4\u30D9\u30F3\u30C8",
|
|
15677
15754
|
widgets: {
|
|
15678
|
-
widget_active_sessions: { title: "\u30A2\u30AF\u30C6\u30A3\u30D6\u30BB\u30C3\u30B7\u30E7\u30F3", description: "\u73FE\u5728\u30A2\u30AF\u30C6\u30A3\u30D6\u306A\u30E6\u30FC\u30B6\u30FC\u30BB\u30C3\u30B7\u30E7\u30F3\u6570" },
|
|
15679
15755
|
widget_total_users: { title: "\u30E6\u30FC\u30B6\u30FC\u7DCF\u6570", description: "\u30B7\u30B9\u30C6\u30E0\u306B\u767B\u9332\u3055\u308C\u305F\u30E6\u30FC\u30B6\u30FC\u306E\u7DCF\u6570" },
|
|
15680
15756
|
widget_organizations: { title: "\u7D44\u7E54", description: "\u30D7\u30E9\u30C3\u30C8\u30D5\u30A9\u30FC\u30E0\u4E0A\u306E\u7D44\u7E54\u7DCF\u6570" },
|
|
15757
|
+
widget_active_sessions: { title: "\u30A2\u30AF\u30C6\u30A3\u30D6\u30BB\u30C3\u30B7\u30E7\u30F3", description: "\u73FE\u5728\u30A2\u30AF\u30C6\u30A3\u30D6\u306A\u30E6\u30FC\u30B6\u30FC\u30BB\u30C3\u30B7\u30E7\u30F3\u6570" },
|
|
15681
15758
|
widget_packages_installed: { title: "\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u6E08\u307F\u30D1\u30C3\u30B1\u30FC\u30B8", description: "\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u3067\u30A2\u30AF\u30C6\u30A3\u30D6\u306A\u30D1\u30C3\u30B1\u30FC\u30B8\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u6570" },
|
|
15682
|
-
widget_audit_actions: { title: "\u76E3\u67FB\u30A2\u30AF\u30B7\u30E7\u30F3", description: "\u30A2\u30AF\u30B7\u30E7\u30F3\u30BF\u30A4\u30D7\u5225\u306E\u76E3\u67FB\u30A4\u30D9\u30F3\u30C8\u5206\u5E03" },
|
|
15683
|
-
widget_active_orgs: { title: "\u7D44\u7E54\u5225\u30BB\u30C3\u30B7\u30E7\u30F3", description: "\u7D44\u7E54\u5225\u306B\u30B0\u30EB\u30FC\u30D7\u5316\u3055\u308C\u305F\u30A2\u30AF\u30C6\u30A3\u30D6\u30BB\u30C3\u30B7\u30E7\u30F3" },
|
|
15684
|
-
widget_recent_events: { title: "\u6700\u8FD1\u306E\u76E3\u67FB\u30A4\u30D9\u30F3\u30C8", description: "\u6700\u65B0\u306E\u30D7\u30E9\u30C3\u30C8\u30D5\u30A9\u30FC\u30E0\u30A4\u30D9\u30F3\u30C8" }
|
|
15685
|
-
}
|
|
15686
|
-
},
|
|
15687
|
-
security_overview: {
|
|
15688
|
-
label: "\u30BB\u30AD\u30E5\u30EA\u30C6\u30A3\u6982\u8981",
|
|
15689
|
-
description: "\u30BB\u30AD\u30E5\u30EA\u30C6\u30A3\u30A4\u30D9\u30F3\u30C8\u3001\u8A8D\u8A3C\u3001\u76E3\u67FB\u8A3C\u8DE1",
|
|
15690
|
-
widgets: {
|
|
15691
15759
|
widget_login_events: { title: "\u30ED\u30B0\u30A4\u30F3\u30A4\u30D9\u30F3\u30C8", description: "\u76E3\u67FB\u30ED\u30B0\u306B\u8A18\u9332\u3055\u308C\u305F\u8A8D\u8A3C\u30A4\u30D9\u30F3\u30C8" },
|
|
15692
15760
|
widget_permission_changes: { title: "\u6A29\u9650\u5909\u66F4", description: "\u6700\u8FD1\u306E\u6A29\u9650\u3068\u30ED\u30FC\u30EB\u306E\u5909\u66F4" },
|
|
15693
15761
|
widget_config_changes: { title: "\u69CB\u6210\u5909\u66F4", description: "\u30B7\u30B9\u30C6\u30E0\u69CB\u6210\u306E\u5909\u66F4" },
|
|
15694
|
-
|
|
15695
|
-
widget_events_by_type: { title: "\u30BF\u30A4\u30D7\u5225\u76E3\u67FB\u30A4\u30D9\u30F3\u30C8", description: "\u30BB\u30AD\u30E5\u30EA\u30C6\u30A3\u3068\u76E3\u67FB\u30A4\u30D9\u30F3\u30C8\u306E\u5206\u5E03" },
|
|
15762
|
+
widget_events_by_type: { title: "\u30A2\u30AF\u30B7\u30E7\u30F3\u5225\u76E3\u67FB\u30A4\u30D9\u30F3\u30C8", description: "\u30A2\u30AF\u30B7\u30E7\u30F3\u30BF\u30A4\u30D7\u5225\u306E\u76E3\u67FB\u30A4\u30D9\u30F3\u30C8\u5206\u5E03" },
|
|
15696
15763
|
widget_events_by_user: { title: "\u30E6\u30FC\u30B6\u30FC\u5225\u30A4\u30D9\u30F3\u30C8", description: "\u30E6\u30FC\u30B6\u30FC\u5225\u30A2\u30AF\u30C6\u30A3\u30D3\u30C6\u30A3\u5206\u5E03" },
|
|
15697
|
-
|
|
15764
|
+
widget_recent_events: { title: "\u6700\u8FD1\u306E\u76E3\u67FB\u30A4\u30D9\u30F3\u30C8", description: "\u6700\u65B0\u306E\u30D7\u30E9\u30C3\u30C8\u30D5\u30A9\u30FC\u30E0\u30A4\u30D9\u30F3\u30C8\uFF08\u30ED\u30B0\u30A4\u30F3\u3001\u6A29\u9650\u3001\u69CB\u6210\u306A\u3069\uFF09" }
|
|
15698
15765
|
}
|
|
15699
15766
|
}
|
|
15700
15767
|
}
|
|
@@ -18623,7 +18690,6 @@ var esES = {
|
|
|
18623
18690
|
group_diagnostics: { label: "Diagn\xF3stico" },
|
|
18624
18691
|
group_advanced: { label: "Avanzado" },
|
|
18625
18692
|
nav_system_overview: { label: "Resumen del Sistema" },
|
|
18626
|
-
nav_security_overview: { label: "Resumen de Seguridad" },
|
|
18627
18693
|
nav_users: { label: "Usuarios" },
|
|
18628
18694
|
nav_departments: { label: "Departamentos" },
|
|
18629
18695
|
nav_teams: { label: "Equipos" },
|
|
@@ -18658,28 +18724,18 @@ var esES = {
|
|
|
18658
18724
|
dashboards: {
|
|
18659
18725
|
system_overview: {
|
|
18660
18726
|
label: "Resumen del Sistema",
|
|
18661
|
-
description: "Estado de la plataforma,
|
|
18727
|
+
description: "Estado de la plataforma, actividad de seguridad y eventos de auditor\xEDa recientes",
|
|
18662
18728
|
widgets: {
|
|
18663
|
-
widget_active_sessions: { title: "Sesiones Activas", description: "N\xFAmero de sesiones de usuario activas en este momento" },
|
|
18664
18729
|
widget_total_users: { title: "Usuarios Totales", description: "Total de usuarios registrados en el sistema" },
|
|
18665
18730
|
widget_organizations: { title: "Organizaciones", description: "Total de organizaciones en la plataforma" },
|
|
18731
|
+
widget_active_sessions: { title: "Sesiones Activas", description: "N\xFAmero de sesiones de usuario activas en este momento" },
|
|
18666
18732
|
widget_packages_installed: { title: "Paquetes Instalados", description: "Instalaciones de paquetes activas en los proyectos" },
|
|
18667
|
-
widget_audit_actions: { title: "Acciones de Auditor\xEDa", description: "Distribuci\xF3n de eventos de auditor\xEDa por tipo de acci\xF3n" },
|
|
18668
|
-
widget_active_orgs: { title: "Sesiones por Organizaci\xF3n", description: "Sesiones activas agrupadas por organizaci\xF3n" },
|
|
18669
|
-
widget_recent_events: { title: "Eventos de Auditor\xEDa Recientes", description: "\xDAltimos eventos de la plataforma" }
|
|
18670
|
-
}
|
|
18671
|
-
},
|
|
18672
|
-
security_overview: {
|
|
18673
|
-
label: "Resumen de Seguridad",
|
|
18674
|
-
description: "Eventos de seguridad, autenticaci\xF3n y registros de auditor\xEDa",
|
|
18675
|
-
widgets: {
|
|
18676
18733
|
widget_login_events: { title: "Eventos de Inicio de Sesi\xF3n", description: "Eventos de autenticaci\xF3n registrados por el log de auditor\xEDa" },
|
|
18677
18734
|
widget_permission_changes: { title: "Cambios de Permisos", description: "Modificaciones recientes de permisos y roles" },
|
|
18678
18735
|
widget_config_changes: { title: "Cambios de Configuraci\xF3n", description: "Modificaciones de configuraci\xF3n del sistema" },
|
|
18679
|
-
|
|
18680
|
-
widget_events_by_type: { title: "Eventos de Auditor\xEDa por Tipo", description: "Distribuci\xF3n de eventos de seguridad y auditor\xEDa" },
|
|
18736
|
+
widget_events_by_type: { title: "Eventos de Auditor\xEDa por Acci\xF3n", description: "Distribuci\xF3n de eventos de auditor\xEDa por tipo de acci\xF3n" },
|
|
18681
18737
|
widget_events_by_user: { title: "Eventos por Usuario", description: "Distribuci\xF3n de actividad entre usuarios" },
|
|
18682
|
-
|
|
18738
|
+
widget_recent_events: { title: "Eventos de Auditor\xEDa Recientes", description: "\xDAltimos eventos de la plataforma (inicio de sesi\xF3n, permisos, configuraci\xF3n, \u2026)" }
|
|
18683
18739
|
}
|
|
18684
18740
|
}
|
|
18685
18741
|
}
|
|
@@ -18694,7 +18750,6 @@ var SetupAppTranslations = {
|
|
|
18694
18750
|
};
|
|
18695
18751
|
|
|
18696
18752
|
exports.SETUP_APP = SETUP_APP;
|
|
18697
|
-
exports.SecurityOverviewDashboard = SecurityOverviewDashboard;
|
|
18698
18753
|
exports.SetupAppTranslations = SetupAppTranslations;
|
|
18699
18754
|
exports.SysAccount = SysAccount;
|
|
18700
18755
|
exports.SysActivity = SysActivity;
|