@objectstack/platform-objects 13.0.0 → 14.3.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/index.mjs CHANGED
@@ -103,6 +103,62 @@ var SysUser = ObjectSchema.create({
103
103
  successMessage: "Account unlocked",
104
104
  refreshAfter: true
105
105
  },
106
+ {
107
+ // #2766 V1 — a platform admin can add a login-capable teammate without
108
+ // the email-dependent invite flow. Hits the plugin-auth wrapper route
109
+ // (NOT better-auth's stock /admin/create-user): the wrapper runs the
110
+ // ADR-0068 admin gate, drives the better-auth pipeline (scrypt hash +
111
+ // credential sys_account), stamps must_change_password, and — when
112
+ // "Generate temporary password" is picked — returns the password ONCE
113
+ // in the response for the result dialog. It is never persisted or logged.
114
+ name: "create_user",
115
+ label: "Create User",
116
+ icon: "user-plus",
117
+ variant: "secondary",
118
+ locations: ["list_toolbar"],
119
+ type: "api",
120
+ target: "/api/v1/auth/admin/create-user",
121
+ visible: "features.admin == true",
122
+ successMessage: "User created",
123
+ refreshAfter: true,
124
+ params: [
125
+ // The endpoint requires email OR phone (phone-only users get a
126
+ // placeholder address; requires auth.plugins.phoneNumber).
127
+ { field: "email", required: false },
128
+ {
129
+ name: "phoneNumber",
130
+ label: "Phone Number",
131
+ type: "text",
132
+ required: false,
133
+ helpText: "Sign-in phone number (E.164, e.g. +8613800000000). Required when no email is given."
134
+ },
135
+ { field: "name", required: false },
136
+ {
137
+ name: "generatePassword",
138
+ label: "Generate Temporary Password",
139
+ type: "boolean",
140
+ required: false,
141
+ defaultValue: true
142
+ },
143
+ { name: "password", label: "Password (leave empty to generate)", type: "text", required: false },
144
+ {
145
+ name: "mustChangePassword",
146
+ label: "Require Password Change On First Login",
147
+ type: "boolean",
148
+ required: false,
149
+ defaultValue: true
150
+ }
151
+ ],
152
+ resultDialog: {
153
+ title: "User Created",
154
+ description: "Copy the temporary password now \u2014 it is shown only once and never stored.",
155
+ acknowledge: "I have saved this password",
156
+ fields: [
157
+ { path: "user.email", label: "Email", format: "text" },
158
+ { path: "temporaryPassword", label: "Temporary Password", format: "secret" }
159
+ ]
160
+ }
161
+ },
106
162
  {
107
163
  name: "set_user_password",
108
164
  label: "Set Password",
@@ -110,13 +166,40 @@ var SysUser = ObjectSchema.create({
110
166
  variant: "secondary",
111
167
  locations: ["list_item"],
112
168
  type: "api",
169
+ // #2766 V1 — same path as better-auth's stock route, but served by the
170
+ // plugin-auth wrapper registered ahead of the catch-all: it accepts the
171
+ // ADR-0068 platform-admin signals (the stock handler only honors the
172
+ // legacy role scalar), can mint a temporary password, and stamps
173
+ // must_change_password.
113
174
  target: "/api/v1/auth/admin/set-user-password",
114
175
  recordIdParam: "userId",
115
176
  successMessage: "Password updated",
116
177
  refreshAfter: false,
117
178
  params: [
118
- { name: "newPassword", label: "New Password", type: "text", required: true }
119
- ]
179
+ {
180
+ name: "generatePassword",
181
+ label: "Generate Temporary Password",
182
+ type: "boolean",
183
+ required: false,
184
+ defaultValue: false
185
+ },
186
+ { name: "newPassword", label: "New Password (leave empty to generate)", type: "text", required: false },
187
+ {
188
+ name: "mustChangePassword",
189
+ label: "Require Password Change On Next Login",
190
+ type: "boolean",
191
+ required: false,
192
+ defaultValue: true
193
+ }
194
+ ],
195
+ resultDialog: {
196
+ title: "Password Updated",
197
+ description: "If a temporary password was generated, copy it now \u2014 it is shown only once and never stored.",
198
+ acknowledge: "Done",
199
+ fields: [
200
+ { path: "temporaryPassword", label: "Temporary Password", format: "secret" }
201
+ ]
202
+ }
120
203
  },
121
204
  {
122
205
  name: "set_user_role",
@@ -435,6 +518,37 @@ var SysUser = ObjectSchema.create({
435
518
  group: "Admin",
436
519
  description: "Timestamp of the last password change. Backs password_expiry_days; system-managed."
437
520
  }),
521
+ // #2766 V1.5 — phone-number sign-in identifier (better-auth phoneNumber
522
+ // plugin, mapped via buildPhoneNumberPluginSchema). Unique when present;
523
+ // null for email-only accounts. Written through better-auth, not CRUD.
524
+ phone_number: Field.text({
525
+ label: "Phone Number",
526
+ required: false,
527
+ readonly: true,
528
+ searchable: true,
529
+ maxLength: 32,
530
+ group: "Account",
531
+ description: "Sign-in phone number (E.164 recommended). Unique per user; managed by better-auth when the phoneNumber plugin is enabled."
532
+ }),
533
+ phone_number_verified: Field.boolean({
534
+ label: "Phone Verified",
535
+ defaultValue: false,
536
+ readonly: true,
537
+ group: "Account",
538
+ description: "Whether the phone number has been verified (OTP verification requires SMS infrastructure; false until that ships). System-managed."
539
+ }),
540
+ // #2766 V1 — admin-issued "must change password on next sign-in" flag.
541
+ // Set by the /admin/create-user and /admin/set-user-password routes when
542
+ // a temporary password is issued; enforced through the ADR-0069 authGate
543
+ // (surfaces as PASSWORD_EXPIRED); cleared by stampPasswordChangedAt once
544
+ // the user completes a password change.
545
+ must_change_password: Field.boolean({
546
+ label: "Must Change Password",
547
+ defaultValue: false,
548
+ readonly: true,
549
+ group: "Admin",
550
+ description: "When true, the user is blocked (403 PASSWORD_EXPIRED) until they change their password. Stamped by the admin user-management routes; system-managed."
551
+ }),
438
552
  // ADR-0069 D3 — when enforced MFA first applied to this user; starts the
439
553
  // grace clock. Stamped lazily at session validation; system-managed.
440
554
  mfa_required_at: Field.datetime({
@@ -532,7 +646,10 @@ var SysUser = ObjectSchema.create({
532
646
  },
533
647
  indexes: [
534
648
  { fields: ["email"], unique: true },
535
- { fields: ["created_at"], unique: false }
649
+ { fields: ["created_at"], unique: false },
650
+ // #2766 V1.5 — phone sign-in identifier; unique when present (null for
651
+ // email-only accounts), also the upsert match key for identity import.
652
+ { fields: ["phone_number"], unique: true }
536
653
  ],
537
654
  enable: {
538
655
  trackHistory: true,
@@ -5348,12 +5465,12 @@ var SETUP_NAV_CONTRIBUTIONS = [
5348
5465
  {
5349
5466
  app: "setup",
5350
5467
  group: "group_access_control",
5351
- // Priority 300 keeps API Keys after plugin-security's Roles / Permission
5468
+ // Priority 300 keeps API Keys after plugin-security's Positions / Permission
5352
5469
  // Sets (100) and plugin-sharing's Sharing Rules / Record Shares (200),
5353
5470
  // preserving the original menu order.
5354
5471
  priority: 300,
5355
5472
  items: [
5356
- // Roles / Permission Sets are contributed by @objectstack/plugin-security
5473
+ // Positions / Permission Sets are contributed by @objectstack/plugin-security
5357
5474
  // and Sharing Rules / Record Shares by @objectstack/plugin-sharing
5358
5475
  // (ADR-0029 K2). Only API Keys (sys_api_key, an identity object owned by
5359
5476
  // plugin-auth) remains a platform-objects base entry here.
@@ -8706,7 +8823,7 @@ var en = {
8706
8823
  nav_organizations: { label: "Organizations" },
8707
8824
  nav_invitations: { label: "Invitations" },
8708
8825
  // Access Control
8709
- nav_roles: { label: "Roles" },
8826
+ nav_positions: { label: "Positions" },
8710
8827
  nav_permission_sets: { label: "Permission Sets" },
8711
8828
  nav_sharing_rules: { label: "Sharing Rules" },
8712
8829
  nav_record_shares: { label: "Record Shares" },
@@ -11449,12 +11566,13 @@ var zhCN = {
11449
11566
  nav_teams: { label: "\u56E2\u961F" },
11450
11567
  nav_organizations: { label: "\u7EC4\u7EC7" },
11451
11568
  nav_invitations: { label: "\u9080\u8BF7" },
11452
- nav_roles: { label: "\u89D2\u8272" },
11569
+ nav_positions: { label: "\u5C97\u4F4D" },
11453
11570
  nav_capabilities: { label: "\u80FD\u529B" },
11454
11571
  nav_permission_sets: { label: "\u6743\u9650\u96C6" },
11455
11572
  nav_sharing_rules: { label: "\u5171\u4EAB\u89C4\u5219" },
11456
11573
  nav_record_shares: { label: "\u8BB0\u5F55\u5171\u4EAB" },
11457
11574
  nav_api_keys: { label: "API \u5BC6\u94A5" },
11575
+ nav_connect_agent: { label: "\u8FDE\u63A5\u667A\u80FD\u4F53" },
11458
11576
  nav_approval_processes: { label: "\u5BA1\u6279\u6D41\u7A0B" },
11459
11577
  nav_approval_requests: { label: "\u5BA1\u6279\u7533\u8BF7" },
11460
11578
  nav_approval_actions: { label: "\u5BA1\u6279\u5386\u53F2" },
@@ -14158,7 +14276,7 @@ var jaJP = {
14158
14276
  nav_teams: { label: "\u30C1\u30FC\u30E0" },
14159
14277
  nav_organizations: { label: "\u7D44\u7E54" },
14160
14278
  nav_invitations: { label: "\u62DB\u5F85" },
14161
- nav_roles: { label: "\u30ED\u30FC\u30EB" },
14279
+ nav_positions: { label: "\u30DD\u30B8\u30B7\u30E7\u30F3" },
14162
14280
  nav_permission_sets: { label: "\u6A29\u9650\u30BB\u30C3\u30C8" },
14163
14281
  nav_sharing_rules: { label: "\u5171\u6709\u30EB\u30FC\u30EB" },
14164
14282
  nav_record_shares: { label: "\u30EC\u30B3\u30FC\u30C9\u5171\u6709" },
@@ -16865,7 +16983,7 @@ var esES = {
16865
16983
  nav_teams: { label: "Equipos" },
16866
16984
  nav_organizations: { label: "Organizaciones" },
16867
16985
  nav_invitations: { label: "Invitaciones" },
16868
- nav_roles: { label: "Roles" },
16986
+ nav_positions: { label: "Posiciones" },
16869
16987
  nav_permission_sets: { label: "Conjuntos de Permisos" },
16870
16988
  nav_sharing_rules: { label: "Reglas de Compartici\xF3n" },
16871
16989
  nav_record_shares: { label: "Registros Compartidos" },
@@ -17119,6 +17237,38 @@ var SysUserDetailPage = {
17119
17237
  type: "line",
17120
17238
  position: "top",
17121
17239
  items: [
17240
+ {
17241
+ label: "Positions",
17242
+ icon: "shield-check",
17243
+ children: [
17244
+ {
17245
+ // [ADR-0090 D3] Position assignments (岗位分派) — pure SDUI:
17246
+ // the Add picker creates sys_user_position rows storing the
17247
+ // position's MACHINE NAME (valueField: 'name'), and every
17248
+ // server-side rule (the D12 delegated-admin gate, audience-
17249
+ // anchor rejection) surfaces its error in the dialog.
17250
+ type: "record:related_list",
17251
+ properties: {
17252
+ objectName: "sys_user_position",
17253
+ relationshipField: "user_id",
17254
+ columns: ["position", "business_unit_id", "granted_by", "created_at"],
17255
+ sort: [{ field: "created_at", order: "desc" }],
17256
+ limit: 25,
17257
+ showViewAll: true,
17258
+ title: "Positions",
17259
+ add: {
17260
+ picker: {
17261
+ object: "sys_position",
17262
+ valueField: "name",
17263
+ labelField: "label"
17264
+ },
17265
+ linkField: "position",
17266
+ label: "Assign position"
17267
+ }
17268
+ }
17269
+ }
17270
+ ]
17271
+ },
17122
17272
  {
17123
17273
  label: "Sessions",
17124
17274
  icon: "monitor",
@@ -17325,6 +17475,84 @@ var SysUserDetailPage = {
17325
17475
  }
17326
17476
  };
17327
17477
 
17478
+ // src/pages/sys-position.page.ts
17479
+ var SysPositionDetailPage = {
17480
+ name: "sys_position_detail",
17481
+ label: "Position",
17482
+ type: "record",
17483
+ object: "sys_position",
17484
+ template: "default",
17485
+ kind: "slotted",
17486
+ isDefault: true,
17487
+ regions: [],
17488
+ slots: {
17489
+ tabs: {
17490
+ type: "page:tabs",
17491
+ properties: {
17492
+ type: "line",
17493
+ position: "top",
17494
+ items: [
17495
+ {
17496
+ label: "Holders",
17497
+ icon: "users",
17498
+ children: [
17499
+ {
17500
+ type: "record:related_list",
17501
+ properties: {
17502
+ objectName: "sys_user_position",
17503
+ relationshipField: "position",
17504
+ relationshipValueField: "name",
17505
+ columns: ["user_id", "business_unit_id", "granted_by", "created_at"],
17506
+ sort: [{ field: "created_at", order: "desc" }],
17507
+ limit: 25,
17508
+ showViewAll: true,
17509
+ title: "Holders",
17510
+ add: {
17511
+ picker: {
17512
+ object: "sys_user",
17513
+ labelField: "name"
17514
+ },
17515
+ linkField: "user_id",
17516
+ label: "Assign user"
17517
+ }
17518
+ }
17519
+ }
17520
+ ]
17521
+ },
17522
+ {
17523
+ label: "Permission Sets",
17524
+ icon: "lock",
17525
+ children: [
17526
+ {
17527
+ type: "record:related_list",
17528
+ properties: {
17529
+ objectName: "sys_position_permission_set",
17530
+ relationshipField: "position_id",
17531
+ columns: ["permission_set_id", "created_at"],
17532
+ sort: [{ field: "created_at", order: "desc" }],
17533
+ limit: 25,
17534
+ showViewAll: true,
17535
+ title: "Permission Sets",
17536
+ add: {
17537
+ picker: {
17538
+ object: "sys_permission_set",
17539
+ labelField: "label"
17540
+ },
17541
+ linkField: "permission_set_id",
17542
+ label: "Bind permission set"
17543
+ }
17544
+ }
17545
+ }
17546
+ ]
17547
+ }
17548
+ ]
17549
+ }
17550
+ },
17551
+ // No Chatter feed on an RBAC primitive.
17552
+ discussion: []
17553
+ }
17554
+ };
17555
+
17328
17556
  // src/apps/translations/en.metadata-forms.generated.ts
17329
17557
  var enMetadataForms = {
17330
17558
  object: {
@@ -18656,67 +18884,12 @@ var enMetadataForms = {
18656
18884
  }
18657
18885
  }
18658
18886
  },
18659
- profile: {
18660
- label: "Profile",
18887
+ position: {
18888
+ label: "Position",
18661
18889
  sections: {
18662
- identity: {
18663
- label: "Identity",
18664
- description: "Permission Sets stack on top of a Profile to grant additional access. Profiles are the base set assigned 1:1 to each user."
18665
- },
18666
- system_permissions: {
18667
- label: "System Permissions",
18668
- description: "High-level capabilities not tied to a specific object \u2014 e.g. manage_users, view_audit_logs."
18669
- },
18670
- object_and_field_permissions: {
18671
- label: "Object & Field Permissions",
18672
- description: "Per-object CRUD + per-field FLS. Edit via the matrix editor or paste JSON here."
18673
- },
18674
- tab_and_row_level_security: {
18675
- label: "Tab & Row-Level Security",
18676
- description: "Tab visibility, RLS policies, and custom context variables for predicate evaluation."
18677
- }
18678
- },
18679
- fields: {
18680
- name: {
18681
- label: "Name",
18682
- helpText: "Machine name (snake_case)"
18683
- },
18684
- label: {
18685
- label: "Label",
18686
- helpText: "Display label for admins"
18687
- },
18688
- systemPermissions: {
18689
- label: "System Permissions",
18690
- helpText: "List of system capability keys"
18691
- },
18692
- objects: {
18693
- label: "Objects",
18694
- helpText: '{ "account": { allowRead: true, allowEdit: true, ... } }'
18695
- },
18696
- fields: {
18697
- label: "Fields",
18698
- helpText: '{ "account.amount": { readable: true, editable: false } }'
18699
- },
18700
- tabPermissions: {
18701
- label: "Tab Permissions",
18702
- helpText: '{ "app_crm": "visible", "app_admin": "hidden" }'
18703
- },
18704
- rowLevelSecurity: {
18705
- label: "Row Level Security",
18706
- helpText: "Array of RLS policies (see rls.zod.ts)"
18707
- },
18708
- contextVariables: {
18709
- label: "Context Variables",
18710
- helpText: "Custom variables referenced in RLS predicates"
18711
- }
18712
- }
18713
- },
18714
- role: {
18715
- label: "Role",
18716
- sections: {
18717
- role: {
18718
- label: "Role",
18719
- description: "Roles compose a hierarchy used for record sharing (sales VP \u2192 sales mgr \u2192 sales rep). Permissions themselves live on Permission Sets and Profiles."
18890
+ position: {
18891
+ label: "Position",
18892
+ description: "A position is a flat, assignable bundle of permission sets (e.g. sales_rep, sales_manager). Capability lives on permission sets; visibility depth lives on the business-unit tree."
18720
18893
  }
18721
18894
  },
18722
18895
  fields: {
@@ -18727,10 +18900,6 @@ var enMetadataForms = {
18727
18900
  label: {
18728
18901
  label: "Label"
18729
18902
  },
18730
- parent: {
18731
- label: "Parent",
18732
- helpText: "Parent role machine name (Reports To)"
18733
- },
18734
18903
  description: {
18735
18904
  label: "Description"
18736
18905
  }
@@ -20286,67 +20455,12 @@ var zhCNMetadataForms = {
20286
20455
  }
20287
20456
  }
20288
20457
  },
20289
- profile: {
20290
- label: "\u914D\u7F6E\u6587\u4EF6",
20458
+ position: {
20459
+ label: "\u5C97\u4F4D",
20291
20460
  sections: {
20292
- identity: {
20293
- label: "\u6807\u8BC6",
20294
- description: "\u6743\u9650\u96C6\u53E0\u52A0\u5728\u914D\u7F6E\u6587\u4EF6\u4E4B\u4E0A\u4EE5\u6388\u4E88\u989D\u5916\u7684\u8BBF\u95EE\u6743\u9650\u3002\u914D\u7F6E\u6587\u4EF6\u662F\u6309 1:1 \u5206\u914D\u7ED9\u6BCF\u4E2A\u7528\u6237\u7684\u57FA\u7840\u96C6\u5408\u3002"
20295
- },
20296
- system_permissions: {
20297
- label: "\u7CFB\u7EDF\u6743\u9650",
20298
- description: "\u4E0E\u7279\u5B9A\u5BF9\u8C61\u65E0\u5173\u7684\u9AD8\u7EA7\u80FD\u529B\u2014\u2014\u4F8B\u5982 manage_users\u3001view_audit_logs\u3002"
20299
- },
20300
- object_and_field_permissions: {
20301
- label: "\u5BF9\u8C61\u4E0E\u5B57\u6BB5\u6743\u9650",
20302
- description: "\u6309\u5BF9\u8C61\u7684\u589E\u5220\u6539\u67E5 + \u6309\u5B57\u6BB5\u7684\u5B57\u6BB5\u7EA7\u5B89\u5168\uFF08FLS\uFF09\u3002\u53EF\u901A\u8FC7\u77E9\u9635\u7F16\u8F91\u5668\u7F16\u8F91\uFF0C\u6216\u5728\u6B64\u5904\u7C98\u8D34 JSON\u3002"
20303
- },
20304
- tab_and_row_level_security: {
20305
- label: "\u6807\u7B7E\u9875\u4E0E\u884C\u7EA7\u5B89\u5168",
20306
- description: "\u6807\u7B7E\u9875\u53EF\u89C1\u6027\u3001RLS \u7B56\u7565\uFF0C\u4EE5\u53CA\u7528\u4E8E\u8C13\u8BCD\u6C42\u503C\u7684\u81EA\u5B9A\u4E49\u4E0A\u4E0B\u6587\u53D8\u91CF\u3002"
20307
- }
20308
- },
20309
- fields: {
20310
- name: {
20311
- label: "\u540D\u79F0",
20312
- helpText: "\u673A\u5668\u540D\uFF08snake_case\uFF09"
20313
- },
20314
- label: {
20315
- label: "\u663E\u793A\u540D\u79F0",
20316
- helpText: "\u9762\u5411\u7BA1\u7406\u5458\u663E\u793A\u7684\u6807\u7B7E"
20317
- },
20318
- systemPermissions: {
20319
- label: "\u7CFB\u7EDF\u6743\u9650",
20320
- helpText: "\u7CFB\u7EDF\u80FD\u529B\u952E\u5217\u8868"
20321
- },
20322
- objects: {
20323
- label: "\u5BF9\u8C61\u6743\u9650",
20324
- helpText: '\u793A\u4F8B\uFF1A{ "account": { allowRead: true, allowEdit: true, ... } }'
20325
- },
20326
- fields: {
20327
- label: "\u5B57\u6BB5",
20328
- helpText: '\u793A\u4F8B\uFF1A{ "account.amount": { readable: true, editable: false } }'
20329
- },
20330
- tabPermissions: {
20331
- label: "\u6807\u7B7E\u9875\u6743\u9650",
20332
- helpText: '\u793A\u4F8B\uFF1A{ "app_crm": "visible", "app_admin": "hidden" }'
20333
- },
20334
- rowLevelSecurity: {
20335
- label: "\u884C\u7EA7\u5B89\u5168",
20336
- helpText: "RLS \u7B56\u7565\u6570\u7EC4\uFF08\u53C2\u89C1 rls.zod.ts\uFF09"
20337
- },
20338
- contextVariables: {
20339
- label: "\u4E0A\u4E0B\u6587\u53D8\u91CF",
20340
- helpText: "RLS \u8C13\u8BCD\u4E2D\u5F15\u7528\u7684\u81EA\u5B9A\u4E49\u53D8\u91CF"
20341
- }
20342
- }
20343
- },
20344
- role: {
20345
- label: "\u89D2\u8272",
20346
- sections: {
20347
- role: {
20348
- label: "\u89D2\u8272\u5B9A\u4E49",
20349
- description: "\u89D2\u8272\u540D\u79F0\u4E0E\u7EE7\u627F\u5173\u7CFB"
20461
+ position: {
20462
+ label: "\u5C97\u4F4D",
20463
+ description: "\u5C97\u4F4D\u662F\u6241\u5E73\u7684\u3001\u53EF\u5206\u914D\u7684\u6743\u9650\u96C6\u7EC4\u5408(\u5982 sales_rep\u3001sales_manager)\u3002\u80FD\u529B\u5728\u6743\u9650\u96C6\u4E0A;\u53EF\u89C1\u8303\u56F4\u6DF1\u5EA6\u5728\u4E1A\u52A1\u5355\u5143\u6811\u4E0A\u3002"
20350
20464
  }
20351
20465
  },
20352
20466
  fields: {
@@ -20357,10 +20471,6 @@ var zhCNMetadataForms = {
20357
20471
  label: {
20358
20472
  label: "\u663E\u793A\u540D\u79F0"
20359
20473
  },
20360
- parent: {
20361
- label: "\u7236\u7EA7",
20362
- helpText: "\u7EE7\u627F\u7236\u89D2\u8272\u7684\u6743\u9650"
20363
- },
20364
20474
  description: {
20365
20475
  label: "\u63CF\u8FF0"
20366
20476
  }
@@ -21916,67 +22026,12 @@ var jaJPMetadataForms = {
21916
22026
  }
21917
22027
  }
21918
22028
  },
21919
- profile: {
21920
- label: "\u30D7\u30ED\u30D5\u30A1\u30A4\u30EB",
21921
- sections: {
21922
- identity: {
21923
- label: "ID",
21924
- description: "\u6A29\u9650\u30BB\u30C3\u30C8\u306F\u30D7\u30ED\u30D5\u30A1\u30A4\u30EB\u306B\u8FFD\u52A0\u30A2\u30AF\u30BB\u30B9\u6A29\u3092\u91CD\u306D\u308B\u3002\u30D7\u30ED\u30D5\u30A1\u30A4\u30EB\u306F\u5404\u30E6\u30FC\u30B6\u30FC\u306B 1:1 \u3067\u5272\u308A\u5F53\u3066\u308B\u57FA\u672C\u30BB\u30C3\u30C8\u3002"
21925
- },
21926
- system_permissions: {
21927
- label: "\u30B7\u30B9\u30C6\u30E0\u6A29\u9650",
21928
- description: "\u7279\u5B9A\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u306B\u7D10\u3065\u304B\u306A\u3044\u9AD8\u30EC\u30D9\u30EB\u6A5F\u80FD \u2014 \u4F8B: manage_users, view_audit_logs\u3002"
21929
- },
21930
- object_and_field_permissions: {
21931
- label: "\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u3068\u30D5\u30A3\u30FC\u30EB\u30C9\u6A29\u9650",
21932
- description: "\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u5358\u4F4D\u306E CRUD + \u30D5\u30A3\u30FC\u30EB\u30C9\u5358\u4F4D\u306E FLS\u3002\u30DE\u30C8\u30EA\u30C3\u30AF\u30B9\u30A8\u30C7\u30A3\u30BF\u30FC\u3067\u7DE8\u96C6\u3001\u307E\u305F\u306F\u3053\u3053\u306B JSON \u3092\u8CBC\u308A\u4ED8\u3051\u3002"
21933
- },
21934
- tab_and_row_level_security: {
21935
- label: "\u30BF\u30D6\u3068\u884C\u30EC\u30D9\u30EB\u30BB\u30AD\u30E5\u30EA\u30C6\u30A3",
21936
- description: "\u30BF\u30D6\u8868\u793A\u3001RLS \u30DD\u30EA\u30B7\u30FC\u3001\u8FF0\u8A9E\u8A55\u4FA1\u7528\u30AB\u30B9\u30BF\u30E0\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8\u5909\u6570\u3002"
21937
- }
21938
- },
21939
- fields: {
21940
- name: {
21941
- label: "\u540D\u524D",
21942
- helpText: "\u30DE\u30B7\u30F3\u540D\uFF08snake_case\uFF09"
21943
- },
21944
- label: {
21945
- label: "\u8868\u793A\u540D",
21946
- helpText: "\u7BA1\u7406\u8005\u5411\u3051\u8868\u793A\u30E9\u30D9\u30EB"
21947
- },
21948
- systemPermissions: {
21949
- label: "\u30B7\u30B9\u30C6\u30E0\u6A29\u9650",
21950
- helpText: "\u30B7\u30B9\u30C6\u30E0\u6A5F\u80FD\u30AD\u30FC\u306E\u30EA\u30B9\u30C8"
21951
- },
21952
- objects: {
21953
- label: "\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u6A29\u9650",
21954
- helpText: '\u4F8B: { "account": { allowRead: true, allowEdit: true, ... } }'
21955
- },
21956
- fields: {
21957
- label: "\u30D5\u30A3\u30FC\u30EB\u30C9",
21958
- helpText: '\u4F8B: { "account.amount": { readable: true, editable: false } }'
21959
- },
21960
- tabPermissions: {
21961
- label: "\u30BF\u30D6\u6A29\u9650",
21962
- helpText: '\u4F8B: { "app_crm": "visible", "app_admin": "hidden" }'
21963
- },
21964
- rowLevelSecurity: {
21965
- label: "\u884C\u30EC\u30D9\u30EB\u30BB\u30AD\u30E5\u30EA\u30C6\u30A3",
21966
- helpText: "RLS \u30DD\u30EA\u30B7\u30FC\u306E\u914D\u5217\uFF08rls.zod.ts \u53C2\u7167\uFF09"
21967
- },
21968
- contextVariables: {
21969
- label: "\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8\u5909\u6570",
21970
- helpText: "RLS \u8FF0\u8A9E\u3067\u53C2\u7167\u3059\u308B\u30AB\u30B9\u30BF\u30E0\u5909\u6570"
21971
- }
21972
- }
21973
- },
21974
- role: {
21975
- label: "\u30ED\u30FC\u30EB",
22029
+ position: {
22030
+ label: "\u30DD\u30B8\u30B7\u30E7\u30F3",
21976
22031
  sections: {
21977
- role: {
21978
- label: "\u30ED\u30FC\u30EB",
21979
- description: "\u30ED\u30FC\u30EB\u306F\u30EC\u30B3\u30FC\u30C9\u5171\u6709\u306B\u4F7F\u3046\u968E\u5C64\u3092\u69CB\u6210\uFF08sales VP \u2192 sales mgr \u2192 sales rep\uFF09\u3002\u6A29\u9650\u81EA\u4F53\u306F Permission Sets \u3068 Profiles \u306B\u5B58\u5728\u3002"
22032
+ position: {
22033
+ label: "\u30DD\u30B8\u30B7\u30E7\u30F3",
22034
+ description: "\u30DD\u30B8\u30B7\u30E7\u30F3\u306F\u6A29\u9650\u30BB\u30C3\u30C8\u3092\u307E\u3068\u3081\u3066\u5272\u308A\u5F53\u3066\u308B\u30D5\u30E9\u30C3\u30C8\u306A\u5358\u4F4D(\u4F8B: sales_rep\u3001sales_manager)\u3002\u80FD\u529B\u306F\u6A29\u9650\u30BB\u30C3\u30C8\u306B\u3001\u53EF\u8996\u7BC4\u56F2\u306E\u6DF1\u3055\u306F\u30D3\u30B8\u30CD\u30B9\u30E6\u30CB\u30C3\u30C8\u30C4\u30EA\u30FC\u306B\u3042\u308A\u307E\u3059\u3002"
21980
22035
  }
21981
22036
  },
21982
22037
  fields: {
@@ -21987,10 +22042,6 @@ var jaJPMetadataForms = {
21987
22042
  label: {
21988
22043
  label: "\u8868\u793A\u540D"
21989
22044
  },
21990
- parent: {
21991
- label: "\u89AA",
21992
- helpText: "\u89AA\u30ED\u30FC\u30EB\u306E\u30DE\u30B7\u30F3\u540D\uFF08Reports To\uFF09"
21993
- },
21994
22045
  description: {
21995
22046
  label: "\u8AAC\u660E"
21996
22047
  }
@@ -23546,67 +23597,12 @@ var esESMetadataForms = {
23546
23597
  }
23547
23598
  }
23548
23599
  },
23549
- profile: {
23550
- label: "Perfil",
23600
+ position: {
23601
+ label: "Posici\xF3n",
23551
23602
  sections: {
23552
- identity: {
23553
- label: "Identidad",
23554
- description: "Los conjuntos de permisos se apilan sobre un perfil para conceder acceso adicional. Los perfiles son el conjunto base asignado 1:1 a cada usuario."
23555
- },
23556
- system_permissions: {
23557
- label: "Permisos del sistema",
23558
- description: "Capacidades de alto nivel no vinculadas a un objeto espec\xEDfico \u2014 p. ej. manage_users, view_audit_logs."
23559
- },
23560
- object_and_field_permissions: {
23561
- label: "Permisos de objeto y campo",
23562
- description: "CRUD por objeto + FLS por campo. Edita mediante el editor matricial o pega JSON aqu\xED."
23563
- },
23564
- tab_and_row_level_security: {
23565
- label: "Pesta\xF1a y seguridad a nivel de fila",
23566
- description: "Visibilidad de pesta\xF1as, pol\xEDticas RLS y variables de contexto personalizadas para evaluar predicados."
23567
- }
23568
- },
23569
- fields: {
23570
- name: {
23571
- label: "Nombre",
23572
- helpText: "Nombre de m\xE1quina (snake_case)"
23573
- },
23574
- label: {
23575
- label: "Etiqueta",
23576
- helpText: "Etiqueta mostrada para administradores"
23577
- },
23578
- systemPermissions: {
23579
- label: "Permisos del sistema",
23580
- helpText: "Lista de claves de capacidades del sistema"
23581
- },
23582
- objects: {
23583
- label: "Permisos de objeto",
23584
- helpText: 'Ejemplo: { "account": { allowRead: true, allowEdit: true, ... } }'
23585
- },
23586
- fields: {
23587
- label: "Campos",
23588
- helpText: 'Ejemplo: { "account.amount": { readable: true, editable: false } }'
23589
- },
23590
- tabPermissions: {
23591
- label: "Permisos de pesta\xF1a",
23592
- helpText: 'Ejemplo: { "app_crm": "visible", "app_admin": "hidden" }'
23593
- },
23594
- rowLevelSecurity: {
23595
- label: "Seguridad a nivel de fila",
23596
- helpText: "Array de pol\xEDticas RLS (ver rls.zod.ts)"
23597
- },
23598
- contextVariables: {
23599
- label: "Variables de contexto",
23600
- helpText: "Variables personalizadas referenciadas en predicados RLS"
23601
- }
23602
- }
23603
- },
23604
- role: {
23605
- label: "Rol",
23606
- sections: {
23607
- role: {
23608
- label: "Rol",
23609
- description: "Los roles componen una jerarqu\xEDa usada para compartir registros (sales VP \u2192 sales mgr \u2192 sales rep). Los permisos en s\xED residen en Permission Sets y Profiles."
23603
+ position: {
23604
+ label: "Posici\xF3n",
23605
+ description: "Una posici\xF3n es un conjunto plano y asignable de permission sets (p. ej. sales_rep, sales_manager). La capacidad reside en los permission sets; la profundidad de visibilidad en el \xE1rbol de unidades de negocio."
23610
23606
  }
23611
23607
  },
23612
23608
  fields: {
@@ -23617,10 +23613,6 @@ var esESMetadataForms = {
23617
23613
  label: {
23618
23614
  label: "Etiqueta"
23619
23615
  },
23620
- parent: {
23621
- label: "Padre",
23622
- helpText: "Nombre de m\xE1quina del rol padre (Reports To)"
23623
- },
23624
23616
  description: {
23625
23617
  label: "Descripci\xF3n"
23626
23618
  }
@@ -23902,6 +23894,6 @@ function createPlatformObjectsPlugin() {
23902
23894
  return new PlatformObjectsPlugin();
23903
23895
  }
23904
23896
 
23905
- export { ACCOUNT_APP, MetadataFormsTranslations, PlatformObjectsPlugin, SETUP_APP, SETUP_NAV_CONTRIBUTIONS, STUDIO_APP, SetupAppTranslations, SysAccount, SysApiKey, SysAttachment, SysBusinessUnit, SysBusinessUnitMember, SysDeviceCode, SysEmail, SysEmailTemplate, SysImportJob, SysInvitation, SysJob, SysJobQueue, SysJobRun, SysJwks, SysMember, SysNotification, SysOauthAccessToken, SysOauthApplication, SysOauthConsent, SysOauthRefreshToken, SysOrganization, SysOrganizationDetailPage, SysReportSchedule, SysSavedReport, SysScimProvider, SysSecret, SysSession, SysSetting, SysSettingAudit, SysSsoProvider, SysTeam, SysTeamMember, SysTwoFactor, SysUser, SysUserDetailPage, SysUserPreference, SysVerification, SystemOverviewDashboard, SystemOverviewDatasets, createPlatformObjectsPlugin, en, esES, jaJP, zhCN };
23897
+ export { ACCOUNT_APP, MetadataFormsTranslations, PlatformObjectsPlugin, SETUP_APP, SETUP_NAV_CONTRIBUTIONS, STUDIO_APP, SetupAppTranslations, SysAccount, SysApiKey, SysAttachment, SysBusinessUnit, SysBusinessUnitMember, SysDeviceCode, SysEmail, SysEmailTemplate, SysImportJob, SysInvitation, SysJob, SysJobQueue, SysJobRun, SysJwks, SysMember, SysNotification, SysOauthAccessToken, SysOauthApplication, SysOauthConsent, SysOauthRefreshToken, SysOrganization, SysOrganizationDetailPage, SysPositionDetailPage, SysReportSchedule, SysSavedReport, SysScimProvider, SysSecret, SysSession, SysSetting, SysSettingAudit, SysSsoProvider, SysTeam, SysTeamMember, SysTwoFactor, SysUser, SysUserDetailPage, SysUserPreference, SysVerification, SystemOverviewDashboard, SystemOverviewDatasets, createPlatformObjectsPlugin, en, esES, jaJP, zhCN };
23906
23898
  //# sourceMappingURL=index.mjs.map
23907
23899
  //# sourceMappingURL=index.mjs.map