访问控制

在 3.0 版更改: 在 Weblate 3.0 之前,特权系统基于 Django,但现在是专门为 Weblate 构建的。如果您使用的是旧版本,请查阅该版本的文档,此处的信息将不适用。

Weblate 带有细粒度的特权系统,可以为整个实例或在有限范围内分配用户权限。

基于组和角色的权限系统,其中角色定义了一组权限,组将它们分配给用户和翻译,请参阅 用户,角色,用户组和权限 以获取更多详细信息。

安装后,将创建一组默认的组,您可以使用这些组为整个实例分配用户角色(请参阅 默认群组和角色 )。此外,启用 根据项目的访问控制 后,您可以将用户分配给特定的翻译项目。使用 客户访问控制 可以实现更细粒度的配置

通用设置

锁定 Weblate

为了完全锁定 Weblate 安装,可以使用 LOGIN_REQUIRED_URLS 来强制用户登录并 REGISTRATION_OPEN 来 防止新注册。

全网站范围的权限

为了管理整个事例的权限,只通过将用户添加到 Users (这通常使用 自动分配组 默认实现)、 ReviewersManagers 群组中即可。将所有的项目保持为 Public (请参考 根据项目的访问控制 )。

各项目的权限

将项目设置为 ProtectedPrivate ,并在Weblate的界面上根据项目来管理用户。

为语言、组件或项目添加语言

可以根据项目、组件或语言向任何用户另外授予权限。为了实现这一目的,对给定的资源建立新的群组(例如“捷克语译者”)并配置。对于所选的资源,任何指定的权限可以授予群组内的成员。

如果根据项目权限使用的话,无需另外设置即可正常工作。对于整个事例的权限,您可能还想从 Users 群组中去掉这些权限,或者改变将所有用户自动指定给那个群组 (请参考 自动分配组 )。

参见

权限检查

根据项目的访问控制

注解

通过允许 ACL ,所有用户禁止访问给定项目的任何内容,除非可以将权限授予他们去做。

可以限制用户访问独立的项目。这个特性通过每个单独项目的配置中 Access control 来打开。这会为这个项目自动建立几个群组,请参考 预定义的群组

后面的选择是为了 Access control

公开的

公开可见、可翻译

受保护的

公开可见,但只允许被选择的用户翻译

私有的

公开可见,但只允许被选择的用户翻译

自定义

Weblate 不允许管理用户,请参考 客户访问控制

../_images/project-access.png

为了允许访问这个项目,必须将权限直接添加给特定用户,或在 Django 管理界面上添加给用户所在的群组,或者使用项目页面上的用户管理,如下面的描述 根据项目访问控制来管理

注解

即使打开 ACL ,也可以看到项目的一些概要信息:

  • 整个事例的统计,包括所有项目计数。

  • 整个事例的语言概要,包括所有项目的计数。

自动分配组

可以设置 Weblate 根据用户的邮件地址自动将用户添加到用户组中。只有在建立账户时这一自动指定才进行。

可以对每个用户组在 Django 管理界面中设置(在 Authentication 部分)。

注解

对于 UsersViewers 用户组的自动用户组指定,总是通过 Weblate 在合并时建立,在想将其关闭的时候,简单地设置正则表达式为 ^$ 即可,因为永远不匹配。

用户,角色,用户组和权限

身份验证模型包括几个对象:

权限

Weblate 定义的各自权限。可以不指定各自权限,这可以只通过角色指定实现。

Role

角色定义为一组权限。这能够在几个地方重复使用这些组,并使管理更容易。

User

用户可以使几个用户组的成员。

群组

用户组与角色、用户和身份验证对象(项目、语言和组件列表)联系。

graph auth { "User" -- "Group"; "Group" -- "Role"; "Role" -- "Permission"; "Group" -- "Project"; "Group" -- "Language"; "Group" -- "Components"; "Group" -- "Component list"; }

权限检查

任何时候检查权限来决定是否执行给定的动作时,根据范围来执行检查,并且后面的检查依次执行:

  1. Component list 与组件或项目匹配。

  2. Component 与组件或项目匹配。

  3. Projects 与项目匹配。

可以看到,为组件授予访问权限同样也会自动地授予用户所包括项目的访问权限。

注解

只使用第一条规则。所以如果设置所有的 Component listComponentsProject ,只会应用 Component list

如果检查翻译许可,则会执行另外的步骤:

4. Languages are matched against the scope of translations if set, if not set, this does not match any language.

提示

可以使用 Language selectionProject selection 来自动包括所有语言或项目。

检查项目的访问权限

用于可以成为与项目或其中任何组件相连接的用户组的成员。只有成员即可,不需要特别许可来访问项目(这在默认的 Viewers 用户组中使用,请见 默认群组和角色 )。

检查对组件的访问

一旦用户可以访问包含的项目,就能访问不受限制的组件。通过允许 Restricted access ,访问组件需要组件(或包含组件列表)的明确授权。

管理用户和群组

可以使用 /admin/ URL 下面的 Django 管理界面,来管理所有用户和用户组。

根据项目访问控制来管理

注解

这个特性只对 ACL 控制的项目起作用,请见 根据项目的访问控制

具有 Can manage ACL rules for a project 特权的用户(请见 访问控制 )还可以通过项目页面上的打开访问控制来管理用户。这个界面允许您:

  • 将现有用户添加到项目中

  • 邀请新用户参加到项目中

  • 更改用户的权限

  • 取消用户的权限

可以在项目菜单的 Manage 进行用户管理:

../_images/manage-users.png

预定义的群组

Weblate 的项目带有预定义的群组,您可以为之指定用户。

Administration

在项目中可以有所有的权限。

Glossary

可以管理词汇表(添加或删除权限,或上传)。

Languages

可以管理翻译语言——添加或删除翻译。

Screenshots

可以管理截屏——添加或删除截屏,并将其与源字符串联系起来。

Template

可以在 单语言组件 编辑翻译模板和源字符串信息。

Translate

可以翻译项目,并将离线的翻译上传。

VCS

可以管理 VCS 版本控制系统并访问导出的仓库。

Review

可以在复查时批准翻译。

Billing

可以访问账单信息(请见 账单 )。

客户访问控制

通过选择 Custom 作为 Access control , Weblate 会对停止管理给定项目的访问权限,使用 Django 管理界面可以管理所有用户和群组。这可以用于确定更富在的访问控制,或在单一的 Weblate 界面中对所有项目设置可分享的访问策略。如果想要对所有项目默认打开这个功能,请配置 DEFAULT_ACCESS_CONTROL

警告

通过将其打开, Weblate 会删除所有为这个项目建立的 根据项目的访问控制 。如果没有事件的管理权限却去做的话,会立即丢失管理项目的访问权限。

默认群组和角色

特权列表

账单(请见 账单

查看账单信息[Administration, Billing]

修改

下载更改[Administration]

注释

发表评论[Administration, Edit source, Power user, Review strings, Translate]

删除评论[Administration]

组件

编辑组件设置[Administration]

锁定组件,防止被翻译[Administration]

词汇表

添加词汇表入口[Administration, Manage glossary, Power user]

编辑词汇表入口[Administration, Manage glossary, Power user]

删除词汇表入口[Administration, Manage glossary, Power user]

上传词汇表入口[Administration, Manage glossary, Power user]

机器翻译

使用机器翻译[Administration, Power user]

项目

编辑项目设置[Administration]

更改项目访问权限[Administration]

报告

下载报告[Administration]

截图

添加截屏[Administration, Manage screenshots]

编辑截屏[Administration, Manage screenshots]

删除截屏[Administration, Manage screenshots]

源字符串

编辑源字符串信息[Administration, Edit source]

字符串

添加新字符串 [管理组]

忽略失败的复查[Administration, Edit source, Power user, Review strings, Translate]

编辑字符串 [Administration, Edit source, Power user, Review strings, Translate]

复查字符串[Administration, Review strings]

当建议被强制执行时需要编辑字符串[Administration, Review strings]

编辑源字符串[Administration, Edit source, Power user]

建议

接受建议[Administration, Edit source, Power user, Review strings, Translate]

添加建议[Add suggestion, Administration, Edit source, Power user, Review strings, Translate]

删除建议 [Administration]

为建议投票[Administration, Edit source, Power user, Review strings, Translate]

翻译

新建翻译[Administration, Manage languages, Power user]

执行自动翻译[Administration, Manage languages]

删除现有的翻译[Administration, Manage languages]

开始另一门语言的翻译[Administration, Manage languages]

上传

定义翻译上传的作者[Administration]

使用上传的内容覆盖现有的字符串[Administration, Edit source, Power user, Review strings, Translate]

上传翻译的字符串 [Administration, Edit source, Power user, Review strings, Translate]

版本控制系统( VCS )

访问内部仓库[Access repository, Administration, Manage repository, Power user]

将更改提交到内部代码库[Administration, Manage repository]

从内部代码库推送更改[Administration, Manage repository]

重置内部代码库的更改 [Administration, Manage repository]

查看上游仓库位置[Access repository, Administration, Manage repository, Power user]

更新内部代码库[Administration, Manage repository]

全网站范围的特权

使用管理界面

添加语言定义

管理语言定义

添加群组

管理群组

添加用户

管理用户

管理公告

管理翻译记忆库

注解

全网站特权不会授予任何默认角色。这些特权特别强大,非常接近超级用户状态——多数特权会影响 Weblate 安装的所有项目。

群组列表

下面的群组在安装时建立(或在执行后 setupgroups ):

访客

对非授权用户确定权限。

这个群组只包括匿名用户(请见 ANONYMOUS_USER_NAME )。

可以从群组中去掉角色,来限制非授权用户的权限。

默认角色: Add suggestion, Access repository

Viewers

这一角色确保公开项目对所有用户可见。所有用户默认是这个群组的成员。

所有用户默认为这个群组的成员,使用 自动分配组

默认角色:无

用户

所有用户的默认群组。

所有用户默认为这个群组的成员,使用 自动分配组

默认角色: Power user

校对

复核员的群组(参见 翻译工作流 )。

默认角色: Review strings

管理人员

管理员的群组。

默认角色: Administration

警告

永远不要删除预先定义的 Weblate 群组和用户,因为这会导致意外的错误。如果不想要使用这些特性,只去掉他们的特权即可。