跳到主要内容

Web Device layout component · ARC 2.0.0-beta.35

`access-gate`

Web Device layout component `access-gate`:用途、边界、作者入口、证据与 sample 诚实边界。

这是 Web Device layout component,不是 AUP primitive,不是 AUP Web-only widget,也不是 Markdown 指令。

Default theme 包:providers/runtime/web-device/themes/default/components/access-gate/(manifest.json + render.js + style.css)。经 layout 组件解析链(runtime surface → theme → 可选 site override)。SiteServer 在被拒绝的详情里把它挂到正文槽;不要自己写进 layout.aup。

用途

第一屏试读下方的截止(preview: false 时单独出现)。标题留在 post-hero。这个组件是那条线、那句说明,以及登录动作。

边界

  • 不要把它写成 AUP primitive,也不要放在 docs/aup/primitives/ 下。
  • 不要在本页混写其它 layout component 的合同。
  • 作者可见合同以 manifest props 为准;发明的 props 不可移植。
  • 组件不会收到受保护正文。excerpt 只是已声明的公开字段。
  • manifest 上的 seoStrategy 是 none。受限页的 noindex 由 SiteServer 强制,不在这里。

作者入口

不是手写的 layout.aup section。运行时在 decideWebAccess 返回 preview-shell 或 promo-shell 之后解析 access-gate。

常见 props(来自 manifest):kind、requiredRole、excerpt、loginHref、signInLabel、message、signedIn。

Prop取值 / 默认
kindpreview-shell 或 promo-shell
requiredRole调用方缺少的角色
excerpt声明的 excerpt。页面上已有试读时为空
loginHref默认 /.well-known/service/login。现场页会带当前路径的 return_to 与 cancel_to
signInLabel默认 Sign in(locale 文案由 SiteServer 提供)
message默认:preview → The rest of this piece is for {role}.;promo → This piece is for {role}. 具名角色 member / admin / owner 变成 members / admins / owners。其它字符串原样显示;缺角色 → signed-in readers
signedIntrue 时去掉登录按钮

若主题包缺失,packages/core/src/blocklet/web-access-gate.ts 里的 renderAccessGateMarkup 输出同一套 markup。

表面

被拒绝的内容详情的 layout 正文槽。不是 document Markdown 指令表面。

公共状态

released

Fallback

缺包 → 核心 markup。缺 loginHref → /.well-known/service/login。signedIn: true → 无按钮。

Sample

本页无独立 docs-safe live mock。合同由站点 chrome 里被拒绝的内容详情证明。未登录打开任意一篇 access 高于调用方、且仍在列表里的记录。

现场匿名 HTML(ARC 2.0.0-beta.35,2026-08-15):

html
<aside class="access-gate" data-kind="promo-shell" data-required-role="admin">
  <div class="access-gate-rule" aria-hidden="true"></div>
  <p class="access-gate-message">The rest of this piece is for admins.</p>
  <p class="access-gate-action">
    <a class="access-gate-signin"
       href="/.well-known/service/login?return_to=%2Fen%2Farticles%2Faccess-fixture-team%2F&amp;cancel_to=%2Fen%2Farticles%2Faccess-fixture-team%2F">Sign in</a>
  </p>
</aside>

省略 preview 时 data-kind 仍是 promo-shell。因为存在试读,可见文案用 preview 措辞。

证据

项路径
Theme 包providers/runtime/web-device/themes/default/components/access-gate/
Manifest…/access-gate/manifest.json
Renderer…/access-gate/render.js
样式…/access-gate/style.css
Fallback markuppackages/core/src/blocklet/web-access-gate.ts(renderAccessGateMarkup)
挂载providers/runtime/web-device/src/site-server.ts
内部矩阵docs/aup/capability-matrix.md §3(内部,不对外路由)
矩阵行概念layout-component · access-gate

备注

随 arc#4065 落地。作者字段见限制谁能读一页。

相关