# 权限

> 完整的权限目录，逐字照着角色开关来写，它们之间的连带规则，以及每一项权限在应用各页面上把住什么。

一项权限就是用户页面上某个角色面板里的一个开关（见[角色](users-roles)）。一共有 23 项，按区域分组，而应用里的每一幅界面，都靠检查该连接上登录身份的权限，来决定画什么、允许什么。本页逐字照着开关列出这份目录，列出把各开关绑在一起的那些规则，以及每一项各自把住什么。

在应用的各处，有两种拒绝看起来不一样，分清楚哪个是哪个很有用：**角色**永远不会允许的命令根本不画出来（一个 Viewer 读到的命令栏，只有 Viewer 做得到的那么大），而被**情形**拒绝的命令（什么也没选中、一次运行占着工作站、运行时已停止）仍旧画出来、变灰，理由写在它的提示里。凡是在派发命令时还会再查一次权限的地方，那次拒绝会带着下面引用的其中一句话落进操作记录条。

## 目录 {#the-catalog}

下面每一个区域就是角色面板里的一组，按面板的顺序排列，带着它显示的那个计数，开关的名称和说明逐字照写。

### 仪表画面（3） {#dashboard-3}

| 开关 | 说明 |
| --- | --- |
| 查看仪表画面 | 打开并观看操作员画面。 |
| 操作仪表画面 | 使用仪表画面上的按钮、开关和输入框。 |
| 编辑仪表画面 | 创建、修改和删除画面与组件。 |

### Connector（3） {#connector-3}

| 开关 | 说明 |
| --- | --- |
| 查看 Connector | 浏览设备和点位，读取实时数值。 |
| 校准点位 | 只调整点位的校准，不配置设备。 |
| 配置 Connector | 创建、修改和删除设备与点位，并配置工作站的服务器（OPC UA、Modbus）。 |

### Process（4） {#process-4}

| 开关 | 说明 |
| --- | --- |
| 查看模型 | 打开模型、单元、可视化、设定和模板，但不运行也不修改它们。 |
| 运行流程 | 运行已有的流程并查看结果。 |
| 编辑配方与判定 | 修改配方、判定和动作，不触碰模型和单元的结构。 |
| 管理 Process | 创建、修改和删除流程模型及其单元结构、标签和报告版式，以及单元的打印队列。 |

### 历史（3） {#histories-3}

| 开关 | 说明 |
| --- | --- |
| 查看历史 | 查阅已记录的运行。事件页面有它自己的权限。 |
| 导出/导入历史 | 导出运行和报告（CSV、XLSX、PDF、GLAB），以及导入 GLAB 运行。 |
| 管理历史 | 删除已记录的运行，并撰写、修改或删除它们的备注和标注。 |

### Logic（3） {#logic-3}

| 开关 | 说明 |
| --- | --- |
| 查看 Logic | 浏览地址空间并读取点位。 |
| 配置 Logic | 创建和修改变量、动作、触发器和报警。 |
| 操作 Logic | 写入变量、运行动作、确认报警。 |

### 验证（1） {#validation-1}

| 开关 | 说明 |
| --- | --- |
| 查看验证 | 打开验证页面，也就是本工作站需要修复什么的配置健康视图。 |

### 系统（8） {#system-8}

| 开关 | 说明 |
| --- | --- |
| 查看事件 | 打开事件页面：报警、事件条目和联锁历史，以及程序级的诊断控制台。默认开启；管理员始终拥有它，并且可以为其他角色关掉它。 |
| 更改设置 | 更改本工作站的设置。 |
| 管理代理（MCP） | 配置 AI 代理对本工作站的访问。 |
| 查看远程访问 | 打开远程访问页面：工作站的地址和二维码、它的设置、已连接的浏览器和已配置的设备。能否从网络进入由“远程访问（局域网）”决定。 |
| 配置远程访问 | 开启和关闭远程访问并修改它：HTTPS、端口、工作站应答的名称、Windows 防火墙规则和已配置的设备。选择设备以谁的身份登录还需要管理本地用户。 |
| 管理本地用户 | 创建、编辑和移除用户、角色与权限。仅管理员。 |
| 远程访问（局域网） | 从网络上的另一台设备使用本工作站。“未登录”角色默认关闭，因此在某个角色开启它之前，打开远程查看不会暴露任何东西。 |
| 向 Ganter 发送反馈 | 通过标题栏和“账户”页面报告缺陷、提出改进建议或申请新驱动，可附屏幕截图。默认对所有角色开启。 |

## 连带规则 {#implication-rules}

下面这些规则，是各开关之间如何相互依赖的唯一定义。你拨动开关时角色面板实时套用它们，工作站在保存一个角色时又套用一次，于是保存下来的角色总是自洽的，而每一幅界面背后的检查也就只是一次朴素的位测试。

### 什么需要什么 {#what-requires-what}

| 开关 | 需要 | 打开它也会一并打开 | 把它所需要的那一项关掉，也会一并关掉 |
| --- | --- | --- | --- |
| 操作仪表画面 | 查看仪表画面 | 查看仪表画面 | |
| 编辑仪表画面 | 查看仪表画面 | 查看仪表画面 | |
| 校准点位 | 查看 Connector | 查看 Connector | |
| 配置 Connector | 查看 Connector | 查看 Connector | |
| 配置远程访问 | 查看远程访问 | 查看远程访问 | |
| 运行流程 | 查看模型 | 查看模型 | |
| 编辑配方与判定 | 运行流程 | 运行流程、查看模型 | |
| 管理 Process | 编辑配方与判定 | 编辑配方与判定、运行流程、查看模型 | |
| 导出/导入历史 | 查看历史 | 查看历史 | |
| 管理历史 | 查看历史 | 查看历史 | |
| 配置 Logic | 查看 Logic | 查看 Logic | |
| 操作 Logic | 查看 Logic | 查看 Logic | |
| 查看仪表画面 | | | 操作仪表画面、编辑仪表画面 |
| 查看 Connector | | | 校准点位、配置 Connector |
| 查看远程访问 | | | 配置远程访问 |
| 查看模型 | | | 运行流程，并通过它连带编辑配方与判定和管理 Process |
| 查看历史 | | | 导出/导入历史、管理历史 |
| 查看 Logic | | | 配置 Logic、操作 Logic |

Process 那四个开关是一条链：查看模型，然后运行流程，然后编辑配方与判定，然后管理 Process。每一级都持有它前面的那些。目录里其余的都是彼此独立的：查看事件、更改设置、管理代理（MCP）、查看验证和远程访问（局域网），既不需要什么，也不被什么需要。

向 Ganter 发送反馈也是独立的：它什么都不依赖，也没有什么依赖它，所以关掉它不会连带拿走别的。

### 固定的那几位 {#the-fixed-bits}

| 规则 | 它表示什么 |
| --- | --- |
| 下限：查看仪表画面 | 每个角色都持有，一直如此。在每一个可编辑的角色上，这个开关都是打开的并标着**必需**，保存下来的角色也总是带着它。角色已经被删掉的用户仍旧持有它，而且只有它。 |
| 仅限 Admin：管理本地用户 | 只有 Admin 角色持有它。在其他每一个角色上，这个开关都被锁在关闭状态，带着它保存的角色，存下来时不会带它。 |
| Admin 拥有一切 | Admin 的那份掩码就是目录里的每一个开关，而且它不能编辑。 |
| 必需 | 一个开关打开着又被锁住时所带的那个标记，原因是它是下限，或者因为某个需要它的开关正打开着。Admin 的开关不带任何标记；它们就是固定的。 |

### 默认的那几份掩码 {#the-default-masks}

| 角色 | 开关 |
| --- | --- |
| 未登录（出厂时） | 除了管理本地用户和远程访问（局域网）之外的每一个开关。 |
| 一个新角色 | 查看仪表画面和向 Ganter 发送反馈。 |
| Viewer | 查看仪表画面、查看 Connector、查看模型、查看历史、查看 Logic、查看验证、查看事件、查看远程访问、远程访问（局域网）、向 Ganter 发送反馈。 |
| Operator | Viewer 再加上操作仪表画面、操作 Logic、运行流程。 |
| Maintainer | Operator 再加上校准点位、配置 Connector、配置远程访问、导出/导入历史、管理历史。 |
| Developer | Maintainer 再加上编辑仪表画面、配置 Logic、管理 Process（因而也包括编辑配方与判定）。 |

除了 Admin，没有哪个出厂角色持有更改设置、管理代理（MCP）或者管理本地用户。出厂时的未登录持有前两项。

## 权限范围条 {#the-reach-strip}

用户页面上的每一个角色，还被画成六个刻点。每个刻点显示这个角色在那个功能区里所持有的最深的那个开关，落在一把四级的尺子上：无权限、查看、操作、管理。这条范围条是一幅剪影，不是那份目录：确切的事实永远是那些开关。

| 刻点 | 管理（满） | 操作（中） | 查看（低） |
| --- | --- | --- | --- |
| 仪表画面 | 编辑仪表画面 | 操作仪表画面 | 查看仪表画面 |
| Connector | 配置 Connector | 校准点位 | 查看 Connector |
| Process | 管理 Process | 编辑配方与判定，或者运行流程 | 查看模型 |
| 历史 | 管理历史 | 导出/导入历史 | 查看历史或者查看验证 |
| Logic | 配置 Logic | 操作 Logic | 查看 Logic |
| 系统 | 管理本地用户 | 更改设置、管理代理（MCP）或者配置远程访问 | 查看事件或者远程访问（局域网） |

查看验证没有自己的刻点：它算进历史那一个刻点的查看那一级。系统刻点停在查看级，意思是持有查看事件、远程访问（局域网），或者两者都有；所以单凭这个刻点，说明不了这台工作站对网络开放，能说明这一点的是远程访问（局域网）这个开关。范围条旁边那句摘要“可以改动 6 个功能区中的 {n} 个”，数的是处在操作或者管理那一级的刻点；“仅查看”表示至少有一个刻点在查看级、而没有更高的；“无权限”表示每一个刻点都空着。

向 Ganter 发送反馈根本没有格子：它允许的事情是出站的，碰不到工作站上的任何东西。

## 每一项权限各自把住什么 {#what-each-permission-gates}

导航栏只为持有该条目所指名权限的身份画出这一条（列了好几项时，持有其中任何一项即可），而它背后的页面按同一次检查拒绝这条路由：硬要键入地址的浏览器，拿到的是登录界面而不是那一页。在一页内部，下面这些动词和字段只为持有该开关的角色画出来，按下时再查一次。

### 仪表画面 {#dashboard}

| 开关 | 导航栏与路由 | 动词、字段和界面 |
| --- | --- | --- |
| 查看仪表画面 | View（始终画出来）；View 页面、用户页面和账户页面对每一个身份都打开。 | 观看任何一幅画面。一个角色看得到哪些画面，还要被每幅画面的**可见角色**清单进一步收窄（见[画面设置](view-settings)）：一个角色也不勾选表示所有人，而 Admin 始终看得到每一幅画面。已经落到单元上的模型画面，跟的是查看模型。 |
| 操作仪表画面 | | 操作员自己写的画面上的每一个命令类组件：按钮、开关、输入框、选择器、设定值、步进按键。被拒绝的按下留在原地，写着“需要‘操作仪表画面’权限。”目标是一次 Process 操作的组件（启动一次运行、预选、一条备注）还需要运行流程，那句拒绝写的是“需要‘运行流程’权限。” |
| 编辑仪表画面 | | 在 View 上：编辑那支笔、新建仪表画面、复制、删除，以及文件夹那些命令（新建文件夹、重命名、移除、移动画面）。在 Process 上：一个模型的画面上的**编辑仪表画面**，没有这项权限的角色根本看不到它，而不是看到它变灰。 |

### Connector {#connector}

| 开关 | 导航栏与路由 | 动词、字段和界面 |
| --- | --- | --- |
| 查看 Connector | Connector；Connector 页面。 | 浏览驱动、线路、文件夹、设备和点位，读取实时值。**刷新**和**全部刷新**对每个角色都显示，也不检查任何权限：它们只是重新读取配置。 |
| 校准点位 | | 在一个点位上，只有校准环节的手工字段和它那个两点法助手，别的都不给。没有它（也没有配置 Connector）时，这个环节写着“编辑校准环节需要‘校准点位’或‘配置 Connector’权限。” |
| 配置 Connector | | 每一个配置动词：添加和移除驱动、新建设备、添加点位、复制设备、启用、禁用、删除、文件夹、串行线路和 MQTT Broker、OPC UA 服务器及其配置和客户端访问、OPC UA、OCPP、LoRaWAN、Redfish、AVEVA PI、HTTP 和 MQTT 驱动的现场设备访问卡片、Modbus 服务器及其寄存器映射、重命名、发现、Matter 配对、量程换算环节（“编辑量程换算环节需要‘配置 Connector’权限。”）、每一个设备和点位字段，以及**全部替换**引用。改写一个被某个单元联锁用着的引用，还需要另外持有管理 Process（“替换单元的联锁信号源需要‘管理 Process’权限。”）。一般性的那句拒绝写的是“更改 Connector 需要‘配置 Connector’权限。” |

### Process {#process}

| 开关 | 导航栏与路由 | 动词、字段和界面 |
| --- | --- | --- |
| 查看模型 | Process（Process 那四个开关中的任何一个，或者查看历史）；Process 页面，以及分离出去的运行记录和配方图表窗口。 | 模型和模板这两个根节点，完整但只读。有了它，View 上的模型画面也看得到。 |
| 运行流程 | 同一条导航条目。 | 在一个单元上：启动、暂停、继续、停止、中止，为下一次预选流程和它的元数据，写备注，复位一个联锁；全部启动和全部停止；从一个仪表画面组件到达的同样这些操作（在操作员自己写的画面上还要加上操作仪表画面）。在历史里：为一次已记录的运行发出标签，以及重发一份报告或者标签，两者都还要加上查看历史。 |
| 编辑配方与判定 | 同一条导航条目。 | 命令栏上那些设定动词：别名集、流程、数据记录、配方、判定、事件条目、动作和命令，以及它们各自的删除，再加上配方、判定、事件条目、别名集、数据记录、流程和动作各面板里的字段（“更改动作需要‘编辑配方与判定’权限。”）。没有管理 Process 时，树里的模型只剩下它们的设定分组，模板则被藏起来。 |
| 管理 Process | 同一条导航条目。 | 模型、文件夹、重命名文件夹、移除文件夹、复制模型、删除模型、单元、通道、元数据、自动化、产量、打印机、联锁，可视化底下的仪表画面和操作面板连同移除仪表画面、移除操作面板和在 View 上显示，以及报告和标签模板连同删除报告和删除标签。工作区的那句拒绝写的是“管理这个工作区需要‘管理 Process’权限。” |

### 历史 {#histories}

| 开关 | 导航栏与路由 | 动词、字段和界面 |
| --- | --- | --- |
| 查看历史 | Process（单凭它就行，哪怕一个 Process 开关也没有）；Process 树里的历史根节点；已记录运行的浏览界面和运行记录图表窗口。 | 浏览已记录的运行、它们的文档和附注，以及打开或者下载这次运行早已发布的报告，这件事什么也不产生。重发一份报告或者标签还需要运行流程（“重新发送报告同时需要‘查看历史’和‘运行流程’权限。”）。 |
| 导出/导入历史 | | 导出 CSV、XLSX 和 GLAB，生成 PDF，在运行记录的卷宗里生成报告，导入 GLAB 运行记录。在事件页面上，每一个导出和那个技术支持包（“把行或者一个技术支持包带出工作站，就是一次导出”）。 |
| 管理历史 | | 在已记录运行的浏览界面里：命令条上的删除、把运行聚拢起来的勾选和列表上方那条批量删除的横条，以及一次运行的备注框和标注框，两者都能添加一行、就地修改一行、删除一行。没有这项权限的角色，一样也画不出来，只能读这份记录，手里没有任何改动它的动作；对握有这项权限的角色，拒绝删除的那些情形照旧：什么也没选中、运行还在记录中、另一次删除正在进行、工作站处于只读状态。 |

### Logic {#logic}

| 开关 | 导航栏与路由 | 动词、字段和界面 |
| --- | --- | --- |
| 查看 Logic | Logic；Logic 页面。 | 浏览地址空间并读取点位。只能查看的角色看到的是整页只读。 |
| 配置 Logic | | 创建、复制、重命名、启用、禁用、删除和归档变量、动作、触发器、报警与文件夹，每一个定义字段，以及资源库的各种导入（图片、图标、颜色、图元）。那句拒绝写的是“你的角色可以查看 Logic，但不能配置它（变量、动作、触发器、报警和资源）。” |
| 操作 Logic | | 在一个变量上设定数值、在一个动作上执行、在报警上确认和全部确认，在 Logic 页面上和在事件页面的当前报警卡片上都是。那句拒绝写的是“你的角色可以查看 Logic，但不能操作它（写入数值、运行动作、确认报警）。” |

### 验证 {#validation}

| 开关 | 导航栏与路由 | 动词、字段和界面 |
| --- | --- | --- |
| 查看验证 | 验证；验证页面。 | 那些发现，以及重新扫描。 |

### 系统 {#system}

| 开关 | 导航栏与路由 | 动词、字段和界面 |
| --- | --- | --- |
| 查看事件 | 事件；事件页面。 | 那四个标签页。在 Connector 上，OPC UA 服务器的警告计数只有持有它时才是通向事件的链接，否则就是一个普通数字。 |
| 更改设置 | 设置；设置页面。 | 那一页上的每一项设置。在事件控制台上，启动和停止捕获（“启动或停止详细捕获需要‘更改设置’权限。”）。只有这项权限让这个身份成为对更新拿主意的那一个，于是新版本通知是说给它听的。 |
| 管理代理（MCP） | 代理；代理页面。 | 那个总开关、端口和允许的范围。 |
| 查看远程访问 | 远程访问；远程访问页面。 | 状态、配置和客户端访问三张卡片：地址和它的二维码、设置、已连接的浏览器和已配置的设备，只读不改。 |
| 配置远程访问 | | **启用**和**禁用**、HTTPS 开关、端口、本工作站应答的名称、**放行本地网络**，以及客户端访问卡片上的**识别**、**配置这台设备**、已配置设备的每一个字段和**忘记**。一般性的那句拒绝写的是“更改远程访问需要‘配置远程访问’权限。”选择设备以谁的身份登录还需要管理本地用户。 |
| 管理本地用户 | | 在用户页面上：用户和角色两个分支、栏的底部、删除用户和删除角色，以及它们背后的每一块面板。在账户页面上：登录和退出 Ganter 账户，以及技术支持与维护联系人和集成商 ID 那两个字段。不管一幅画面的可见角色清单怎么写，Admin 都看得到它。在远程访问页面上，与配置远程访问一起，选择已配置设备以谁的身份登录。 |
| 远程访问（局域网） | 从网络上的一台设备上到底看不看得到。 | 另一台机器上的浏览器，如果它的身份没有这一项，拿到的是登录界面，写着“登录后即可从网络上查看这个工作站。”，而不是任何一页。工作站自己的窗口，以及工作站本机上的浏览器，从来不受它把关。见[登录](users-signing-in#browsers-and-remote-access)。只有角色拥有它的用户才能担任已配置设备的固定用户（见[已配置的设备](remote-access#configured-devices)）。 |
| 向 Ganter 发送反馈 | | 每一条路由上标题栏的**反馈**按钮，以及账户页面反馈那一行的表单（见[反馈](account-feedback)）。没有它的角色看不到这个按钮，反馈那一行则在表单的位置说明原因。反馈从工作站发出，登录时以它的 Ganter 账户名义，还可能带着屏幕截图，所以由拥有这台工作站的公司决定谁能发送。 |

## 权限不把住什么 {#what-permissions-do-not-gate}

- 运行时。不管角色怎么说，采集、记录、逻辑扫描周期、报警、内嵌的 OPC UA 服务器、Modbus 服务器和 MCP endpoint 都照常运行；只有免费模式的限制会让它们停下（见[订阅](account-subscription#free-mode-and-the-runtime-countdown)）。
- 登录和退出登录。用户标记和“当前登录”这个根节点对每一个身份都开放。
- 各幅界面背后工作站自己的那些操作：通过 MCP 连上来的代理，在代理页面上有它自己允许的范围，它不作为本地用户登录。
- 仅查看的设备拒绝什么。设为仅查看的已配置设备拒绝每一个命令，无论当前是什么角色，包括管理员的角色，而显示什么仍由角色决定（见[已配置的设备](remote-access#configured-devices)）。
