@@ -9,78 +9,59 @@ import type { Doc } from '@objectstack/spec/system';
99 * Authored inline rather than as a flat `src/docs/*.md` file because this is a
1010 * TS-first code package built by tsup, not a user app built by `os build` —
1111 * `defineStack({ docs })` / manifest `docs[]` is the supported path for those
12- * (see `DocSchema` in `@objectstack/spec/system`). The `content` below is plain
13- * CommonMark + GFM with no images/MDX, per ADR-0046 §3.4.
12+ * (see `DocSchema` in `@objectstack/spec/system`). Plain CommonMark + GFM, no
13+ * images/MDX, per ADR-0046 §3.4.
1414 *
15- * Principle (from the HotCRM reference docs): document the *invisible* concepts,
16- * not what the Setup UI already shows on screen.
15+ * Principle (from the HotCRM reference docs): document only the *invisible*
16+ * rules, not what the Setup UI already shows. Deliberately three short bullets —
17+ * the Users/Roles/Permission-set screens cover the rest; this page exists for
18+ * the handful of behaviours those screens don't reveal.
1719 *
1820 * `translations` carries per-locale variants (ADR-0046 i18n); the REST layer
1921 * collapses the doc to the request's `Accept-Language` and serves one body.
2022 */
2123export const SETUP_OVERVIEW_DOC : Doc = {
2224 name : 'setup_overview' ,
2325 label : 'Setup overview' ,
24- description : 'Orientation for administrators: users, roles & permissions, and record visibility.' ,
26+ description : 'The non-obvious rules behind Setup: identity vs access, additive permissions, and record visibility.' ,
2527 content : `# Setup overview
2628
27- Setup is the administrator app for the platform. Its screens are mostly
28- self-explanatory — this page covers the concepts behind them that the UI does
29- not make obvious. For the full reference, see <https://docs.objectstack.ai>.
30-
31- ## Users & authentication
32-
33- Every person who signs in is a \`sys_user\` record. Authentication (passwords,
34- SSO, API keys, sessions) is handled by the platform's auth layer, so creating a
35- user here grants *identity*, not access — what they can do is decided entirely
36- by the roles and permissions assigned to them. Deactivating a user revokes
37- sign-in without deleting their records, preserving ownership and history.
38-
39- ## Roles & permissions
40-
41- Permission sets define *what* a user can do (which objects and fields they can
42- read or write, which apps they can open); roles place a user in the
43- organization hierarchy and drive *which records* they can reach. A user's
44- effective access is the union of all permission sets granted to them — access is
45- additive, so you grant capability rather than taking it away.
46-
47- ## Record visibility (sharing)
48-
49- Object-level permissions decide whether a user can touch a *kind* of record;
50- sharing decides *which* rows of that kind they actually see. Visibility starts
51- from an org-wide default (private or public) and is then widened by the role
52- hierarchy and explicit sharing rules — it is never silently narrowed. When a
53- user "can't see a record they should," the cause is almost always sharing, not
54- object permissions.
29+ Setup is the administrator app. Its screens are mostly self-explanatory — these
30+ are the few rules behind them that the UI does not show. For everything else,
31+ see <https://docs.objectstack.ai>.
32+
33+ - **A user is identity, not access.** Creating a \`sys_user\` lets someone sign
34+ in; *what* they can do comes entirely from the roles and permission sets you
35+ then assign. Deactivating a user revokes sign-in without deleting their
36+ records, so ownership and history survive.
37+ - **Access is additive.** A user's effective permissions are the *union* of
38+ every permission set granted to them — you grant capability, you never
39+ subtract it.
40+ - **"Can't see a record" is almost always sharing, not permissions.**
41+ Object-level permissions decide which *kinds* of records a user can touch;
42+ sharing decides *which rows*. Visibility starts from the org-wide default and
43+ is only ever widened by the role hierarchy and sharing rules — never silently
44+ narrowed.
5545
5646See <https://docs.objectstack.ai> for the full security model.
5747` ,
5848 translations : {
5949 zh : {
6050 label : 'Setup 概览' ,
61- description : '管理员入门:用户、角色与权限 、记录可见性。' ,
51+ description : 'Setup 背后看不见的几条规则:身份≠权限、权限叠加 、记录可见性。' ,
6252 content : `# Setup 概览
6353
64- Setup 是平台的管理员应用。它的界面大多一目了然——本页讲的是界面背后、UI 没有
65- 明说的概念。完整参考见 <https://docs.objectstack.ai>。
66-
67- ## 用户与认证
68-
69- 每个登录的人都是一条 \`sys_user\` 记录。认证(密码、SSO、API Key、会话)由平台
70- 的认证层负责,所以在这里创建用户给的是*身份*,不是权限——他能做什么,完全由分配
71- 给他的角色和权限决定。停用用户会收回登录权,但不删除其记录,从而保留归属与历史。
72-
73- ## 角色与权限
74-
75- 权限集定义用户*能做什么*(可读写哪些对象和字段、能打开哪些应用);角色把用户放进
76- 组织层级,决定他*能触及哪些记录*。用户的最终访问权是其所有权限集的并集——权限是
77- 叠加的,你是在授予能力,而不是在收回能力。
78-
79- ## 记录可见性(共享)
80-
81- 对象级权限决定用户能否操作某*类*记录;共享决定他实际能看到该类记录中的*哪些行*。
82- 可见性从组织级默认(私有或公开)出发,再由角色层级和显式共享规则*放宽*——绝不会被
83- 悄悄收窄。当用户"看不到本该看到的记录"时,原因几乎总是共享,而不是对象权限。
54+ Setup 是管理员应用。它的界面大多一目了然——下面这几条是界面背后、UI 没有明说的
55+ 规则。其余内容见 <https://docs.objectstack.ai>。
56+
57+ - **用户是身份,不是权限。** 创建一条 \`sys_user\` 只是让人能登录;他*能做什么*
58+ 完全由你随后分配的角色和权限集决定。停用用户会收回登录权,但不删除其记录,
59+ 归属与历史因此得以保留。
60+ - **权限是叠加的。** 用户的最终权限是其所有权限集的*并集*——你是在授予能力,
61+ 从不做减法。
62+ - **"看不到某条记录"几乎总是共享问题,不是权限问题。** 对象级权限决定用户能碰
63+ *哪类*记录;共享决定*哪些行*。可见性从组织级默认出发,只会被角色层级和共享规则
64+ *放宽*,绝不会被悄悄收窄。
8465
8566完整安全模型见 <https://docs.objectstack.ai>。
8667` ,
0 commit comments