Управление доступом

Weblate поставляется с тонко настраиваемой системой привилегий для назначения пользователям прав как в рамках всего экземпляра приложения, так и в рамках отдельных его частей.

Изменено в версии 3.0: До версии Weblate 3.0 система привилегий базировалась только на системе привилегий Django, но теперь построена специально для Weblate. Если вы используете что-то более старое, пожалуйста, обратитесь к документации по конкретной версии, которую вы используете.

Простой контроль доступа

Если вы не администрируете всю установку Weblate и просто имеете доступ к управлению определёнными проектами (например, на Hosted Weblate), ваши возможности управления доступом ограничены следующими настройками. Их достаточно, если вам не нужны сложные настройки.

Управление доступом к проекту

Примечание

Эта функция недоступна на тарифном плане для свободного ПО на облачный хостинг Weblate.

Вы можете ограничить доступ пользователя к отдельным проектам, сменив параметр Управления доступом. Доступные варианты:

Публичный

Проект видим для всех, и все зарегистрированные пользователи могут переводить.

Защищённый

Проект видят все, но переводить могут только отдельные пользователи.

Частный

Видеть и переводить проект могут только отдельные пользователи.

Настраиваемый

Возможность управление записями пользователей будет отключена. По умолчанию всем пользователям будет запрещено выполнять какие-либо действия над проектом. Вам придется настроить все права доступа с помощью нетипичных правил доступа.

Управление доступом можно изменить на вкладке Доступ параметров (УправлениеПараметры) каждого соответствующего проекта.

../_images/project-access.png

Значение по умолчанию можно изменить с помощью DEFAULT_ACCESS_CONTROL.

Примечание

Даже для частных проектов, некоторая информация о вашем проекте будет раскрыта: статистика и языковая сводка для всего экземпляра будет включать подсчёты для всех проектов, несмотря на настройки контроля доступа. Имя вашего проекта и другая информация не могут быть раскрыты через это.

Примечание

Фактический набор разрешений, доступных пользователям по умолчанию в публичных, защищённых и частных проектах, может быть пересмотрен администратором экземпляра Weblate с помощью пользовательских настроек.

Предупреждение

При включённом контроле доступа Custom, Weblate удалит все special groups, которые он создал для выбранного проекта. Если вы делаете это без прав администратора для всего экземпляра Weblate, вы мгновенно потеряете доступ к управлению проектом.

По-проектная настройка доступа

Пользователи с привилегией Управление доступом к проекту (смотреть раздел Список привилегий) также могут управлять пользователями в проектах с не-Custom доступом. Они могут назначать пользователей в одну из следующих групп.

Для`публичных`, защищённых и частных проектов:

Администрирование

Включает все разрешения, доступные для проекта.

Рецензирование (только если включено рецензирование)

Может одобрять переводы во время рецензирования.

Только для проектов защищённых и частных:

Перевести

Может переводить проект и загружать переводы, сделанные в автономном режиме.

Источники

Может редактировать исходные строки (если это разрешено в настройках проекта) и информацию об исходной строке.

Языки

Может управлять языками перевода (добавлять или удалять переводы).

Глоссарий

Может управлять глоссарием (добавлять, удалять или загружать записи в глоссарий).

Накопитель

Может управлять памятью переводов.

Снимки экрана

Может управлять снимками экрана (добавлять или удалять их, а также связывать их с исходными строками).

СКВ (VCS)

Может управлять системой контроля версий и имеет доступ к экспортированному репозиторию.

Биллинг

Имеет доступ к биллингу и его настройкам (смотреть раздел Биллинг).

К сожалению, пока что невозможно изменить этот предопределённый набор групп. Также таким образом невозможно дать только некоторые дополнительные разрешения всем пользователям.

Примечание

Для управления доступом не-Настраиваемый для каждого проекта фактически определяется экземпляр каждой группы, описанной выше. Фактическое название этих групп будет Project@Group, которое также отображается в интерфейсе администратора Django таким образом. Хотя они не могут быть отредактированы из пользовательского интерфейса Weblate.

../_images/manage-users.png

Эти возможности доступны на странице Управление доступом, которую можно открыть из меню проекта УправлениеПользователи.

Новое приглашение пользователя

Кроме того, помимо добавления существующего пользователя в проект, можно приглашать новых. Любой новый пользователь будет создан немедленно, но его учетная запись будет оставаться неактивной до тех пор, пока он не войдёт в проект по ссылке в приглашении, отправленном по электронной почте. Для этого не требуется обладать какими-либо привилегиями в масштабах сайта, достаточно иметь право управления доступом в масштабах проекта (например, членство в группе Администрация).

Подсказка

Если приглашённый пользователь пропустил срок действия приглашения, он может установить свой пароль, используя приглашённый адрес электронной почты в форме сброса пароля, поскольку учётная запись уже создана.

Добавлено в версии 3.11: Есть возможность повторной отправки email с пользовательскими приглашениями (аннулирование любого ранее отправленного приглашения).

Такие же приглашения доступны для всего сайта из management interface на вкладке Пользователи.

Блокирование пользователей

Добавлено в версии 4.7.

Если некоторые пользователи плохо ведут себя в вашем проекте, у вас есть возможность заблокировать их вклад. Заблокированный пользователь по-прежнему сможет видеть проект, если у него есть соответствующие разрешения, но он не сможет вносить свой вклад.

Управление разрешениями для каждого проекта

Установите Защищённый или Частный тип доступа к вашим проектам и управляйте пользователями отдельно для каждого проекта через интерфейс Weblate.

По умолчанию это не позволяет Weblate предоставлять доступ, предоставляемый Пользователям и Просматривающим default groups из-за собственной настройки этих групп. Это не мешает вам предоставлять права доступа к этим проектам в масштабах всего сайта, изменив группы по умолчанию, создав новую или создав дополнительные пользовательские настройки для отдельного компонента, как описано ниже в Настраиваемый контроль доступа.

Одним из основных преимуществ управления правами доступа через пользовательский интерфейс Weblate является то, что вы можете делегировать его другим пользователям, не наделяя их привилегиями суперпользователя. Для этого добавьте их в группу Администрации проекта.

Настраиваемый контроль доступа

Примечание

Эта функция недоступна на тарифном плане для свободного ПО на облачный хостинг Weblate.

Система разрешений построена на основе групп и ролей. Роли определяют набор разрешений, а группы назначают их пользователям и переводчикам. Для получения более подробной информации смотреть раздел Пользователи, роли, группы и разрешения.

Самые мощные возможности системы контроля доступа Weblate пока доступны только через Django admin interface. Вы можете использовать его для управления разрешениями любого проекта. Вам не обязательно переключать на Пользовательский access control, чтобы использовать его. Однако для его использования у вас должны быть привилегии суперпользователя.

Если вас не интересуют детали реализации, и вы просто хотите создать достаточно простую конфигурацию на основе настроек по умолчанию, или у вас нет доступа ко всей установке Weblate (как на Hosted Weblate), обратитесь к разделу Простой контроль доступа.

Распространённые варианты конфигурации

В этом разделе содержится обзор некоторых распространённых настроек, которые могут вас заинтересовать.

Управление разрешениями по всему сайту

Чтобы управлять разрешениями сразу для всего экземпляра, добавьте пользователей в соответствующие группы default groups:

  • Пользователи (это делается по умолчанию с помощью automatic group assignment).

  • Рецензенты (если вы используете review workflow с выделенными рецензентами).

  • Управляющие (если вы хотите делегировать большую часть операций по управлению кому-то другому).

Вы должны держать все проекты настроенными как Публичные (смотреть раздел Управление доступом к проекту), иначе разрешения, предоставляемые членством в группах Пользователи и Рецензенты, не будут иметь никакого эффекта.

Вы также можете предоставить некоторые дополнительные разрешения по своему выбору группам по умолчанию. Например, вы можете дать разрешение на управление снимками экрана всем Пользователям.

Вы также можете определить некоторые новые пользовательские группы. Если вы хотите продолжать управлять сайтом разрешений для этих групп, выберите соответствующее значение для Выбора проекта (например, Все проекты или Все публичные проекты).

Особые разрешения для определённых языков, компонентов или проектов

Вы можете создавать собственные специальные группы для управления разрешениями для отдельных объектов, таких как языки, компоненты и проекты. Хотя эти группы могут предоставлять только дополнительные привилегии, вы не можете отменить разрешение, предоставленное группами для всего сайта или проекта, добавив другую пользовательскую группу.

Пример:

Если вы хотите (по какой-либо причине) разрешить перевод на определённый язык (допустим, чешский) только закрытому набору надёжных переводчиков, а переводы на другие языки оставить открытыми, вам придётся сделать следующее:

  1. Снимите разрешение на перевод чешского со всех пользователей. В настройках по умолчанию это можно сделать, изменив Пользователей default group.

    Группа Пользователи

    Выбор языка

    Как определено

    Языки

    Все, кроме чешского

  1. Добавлена специальная группа для чешских переводчиков.

    Группа Чешские переводчики

    Роли

    Опытные пользователи

    Выбор проекта

    Все публичные проекты

    Выбор языка

    Как определено

    Языки

    Чешский

  1. Добавьте пользователей, которым вы хотите предоставить разрешения, в эту группу.

Как вы видите, управление разрешениями таким способом является мощным, но может быть довольно утомительной работой. Вы не можете делегировать её другому пользователю, если только не предоставите права суперпользователя.

Пользователи, роли, группы и разрешения

Модели аутентификации состоят из нескольких объектов:

Разрешение

Индивидуальное разрешение, определённое в самом Weblate. Разрешения нельзя назначать непосредственно пользователям: это можно сделать только через назначение ролей.

Роль

Роль определяет набор разрешений. Она позволяет использовать эти наборы повторно в разных местах, что упрощает их администрирование.

Пользователь

Пользователь может состоять в нескольких группах.

Группа

Группу соединяют роли, пользователей, и объекты аутентификации (проекты, языки, и списки компонентов).

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

Примечание

Группа может не иметь назначенных ей ролей, в этом случае предполагается доступ к просмотру проекта любым желающим (смотреть ниже).

Доступ для просмотра проекта

Пользователь должен быть членом группы, связанной с проектом или с каким-либо компонентом внутри проекта. Чтобы получить доступ к просмотру, никаких специальных разрешений не требуется, достаточно только членства в группе (этот факт используется для создаваемой по умолчанию группы Просматривающие, смотрите раздел Список групп).

Доступ для просмотра компонента

Доступ к не ограниченным компонентам пользователь может получить сразу, как только получит доступ к компонентам проекта (и будет иметь все разрешения, которые пользователь получил для проекта). Если включён ограниченный доступ, для доступа к компоненту потребуется явное разрешение на компонент (или на содержащий его список компонентов).

Область действия групп

Область действия разрешений, назначенных ролями в группах, применяется по следующим правилам:

  • Если группа указывает какой-либо Список компонентов, то все разрешения, предоставленные членам этой группы, предоставляются для всех компонентов в списках компонентов, прикреплённых к группе, и доступ без дополнительных разрешений предоставляется для всех проектов, в которых находятся эти компоненты. Компоненты и Проекты игнорируются.

  • Если в группе указаны какие-либо Компоненты, то все разрешения, данные членам этой группы, предоставляются для всех компонентов, присоединённых к группе, и доступ без дополнительных разрешений предоставляется для всех проектов, в которых находятся эти компоненты. Проекты игнорируются.

  • В противном случае, если группа указывает какие-либо Проекты, либо прямо перечислив их, либо установив Выбор проекта в значение типа Все публичные проекты, все эти разрешения применяются ко всем проектам, что фактически предоставляет одинаковые разрешения на доступ ко всем проектам unrestricted components.

  • Ограничения, накладываемые группой Языки, применяются отдельно, когда проверяется, имеет ли пользователь доступ к выполнению определённых действий. А именно, они применяются только к действиям, непосредственно связанным с самим процессом перевода, таким как рецензирование, сохранение переводов, добавление предложений и т.д.

Подсказка

Для автоматического включения всех языков или проектов используйте переключатели Выбор языка или Выбор проекта.

Пример:

Допустим, есть проект foo с компонентами: foo/bar и foo/baz и следующей группой:

Группа Испанские администраторы-рецензенты

Роли

Рецензирование строк, Управление репозиторием

Компоненты

foo/bar

Языки

Испанский

Члены этой группы будут иметь следующие разрешения (при условии использования ролей по умолчанию):

  • Общий (просмотровый) доступ ко всему проекту foo, включая оба компонента в нём: foo/bar и foo/baz.

  • Рецензирование строк в испанском переводе foo/bar (не в других местах).

  • Управление VCS для всего репозитория foo/bar, например, коммит ожидающий изменений, сделанных переводчиками для всех языков.

Автоматические прикрепления группы

В нижней части страницы редактирования Группа в Django admin interface, вы можете указать Автоматическое назначение групп, которое представляет собой список регулярных выражений, используемых для автоматического назначения вновь созданных пользователей в группу на основе их адресов электронной почты. Это назначение происходит только при создании учётной записи.

Наиболее распространённым вариантом использования этой функции является назначение всех новых пользователей в какую-либо группу по умолчанию. Для этого вы, вероятно, захотите сохранить значение по умолчанию (^.*$) в поле регулярного выражения. Другим вариантом использования этой опции может быть предоставление некоторых дополнительных привилегий сотрудникам вашей компании по умолчанию. Если предположить, что все они используют корпоративные адреса электронной почты в вашем домене, это можно сделать с помощью выражения вида ^.*@mycompany.com.

Примечание

При выполнении миграций автоматическое назначение для групп Пользователи и Просматривающие всегда пересоздаётся при переходе с одной версии Weblate на другую. В случае, если вы хотите его отключить, просто задайте для него регулярное выражение ^$ (которому не будет соответствовать ничего).

Примечание

На данный момент не существует способа массового добавления уже существующих пользователей в какую-либо группу через пользовательский интерфейс. Для этого вы можете прибегнуть к использованию функции REST API.

Группы и роли по умолчанию

После установки создаётся набор групп по умолчанию (смотреть раздел Список групп).

Эти роли и группы создаются во время установки. Встроенные роли всегда приводятся в актуальное состояние при процессе миграции базы данных во время обновления. Вы не можете изменить их, пожалуйста, создайте новую роль, если вы хотите определить свой собственный набор разрешений.

Список привилегий

Тарифный план (смотрите раздел Биллинг)

Просмотр платёжной информации [Администрирование, Биллинг]

Изменения

Скачивание изменений [Администрирование]

Комментарии

Публикация комментариев [Администрирование, Правка источника, Опытный пользователь, Рецензирование строк, Перевод]

Удаление комментариев [Администрирование]

Компонент

Правка параметров компонентов [Администрирование]

Блокировка компонента, предотвращает его перевод [Администрирование]

Глоссарий

Добавление записей в глоссарий [Администрирование, Управление глоссарием, Опытный пользователь]

Правка записей глоссария [Администрирование, Управление глоссарием, Опытный пользователь]

Удаление записей из глоссария [Администрирование, Управление глоссарием, Опытный пользователь]

Загрузка записей в глоссарий [Администрирование, Управление глоссарием, Опытный пользователь]

Автоматические предложения

Использование автоматических предложений [Администрирование, Правка источника, Опытный пользователь, Рецензирование строк, Перевод]

Память переводов

Правка памяти переводов [Администрирование, Управление памятью переводов]

Удаление памяти переводов [Администрирование, Управление памятью переводов]

Проекты

Правка параметров проекта [Администрирование]

Управление доступом к проекту [Администрирование]

Отчёты

Скачивание отчётов [Администрирование]

Снимки экрана

Добавление снимков экрана [Администрирование, Управление снимками экрана]

Правка снимков экрана [Администрирование, Управление снимками экрана]

Удаление снимков экрана [Администрирование, Управление снимками экрана]

Исходные строки

Правка дополнительных свойств строки [Администрирование, Правка источника]

Строки

Добавление новой строки [Администрирование]

Удаление строки [Администрирование]

Игнорирование неудачных проверок [Администрирование, Правка источника, Опытный пользователь, Рецензирование строк, Перевод]

Правка строк [Администрирование, Правка источника, Опытный пользователь, Рецензирование строк, Перевод]

Рецензирование строк [Администрирование, Рецензирование строк]

Правка строк, когда предложения являются обязательными [Администрирование, Рецензирование строк]

Правка исходных строк [Администрирование, Правка источника, Опытный пользователь]

Предложения

Принятие предложения [Администрирование, Правка источника, Опытный пользователь, Рецензирование строк, Перевод]

Добавление предложения [Администрирование, Правка источника, Добавление предложения, Опытный пользователь, Рецензирование строк, Перевод]

Удаление предложения [Администрирование, Опытный пользователь]

Голосование за предложения [Администрирование, Правка источника, Опытный пользователь, Рецензирование строк, Перевод]

Переводы

Добавление языка для перевода [Администрирование, Опытный пользователь, Управление языками]

Производство автоматического перевода [Администрирование, Управление языками]

Удаление существующего перевода [Администрирование, Управление языками]

Добавление нескольких языков для перевода [Администрирование, Управление языками]

Загрузки

Задание автора загружаемого перевода [Администрирование]

Перезапись существующих строк при загрузке новых [Администрирование, Правка источника, Опытный пользователь, Рецензирование строк, Перевод]

Загрузка переводов [Администрирование, Правка источника, Опытный пользователь, Рецензирование строк, Перевод]

СКВ (VCS)

Доступ к внутреннему репозиторию [Администрирование, Доступ к репозиторию, Опытный пользователь, Управление репозиторием]

Коммит изменений во внутренний репозиторий [Администрирование, Управление репозиторием]

Отправка изменений из внутреннего репозитория [Администрирование, Управление репозиторием]

Сброс изменений во внутреннем репозитории [Администрирование, Управление репозиторием]

Просмотр расположения вышестоящего репозитория [Администрирование, Доступ к репозиторию, Опытный пользователь, Управление репозиторием]

Обновление внутреннего репозитория [Администрирование, Управление репозиторием]

Привилегии для всего сайта

Использование интерфейса управления

Добавление новых проектов

Добавление определений языка

Управление определениями языков

Управление группами

Управление пользователями

Управление ролями

Управление объявлениями

Управление памятью переводов

Управление списками компонентов

Примечание

Привилегии для всего сайта не предоставляются никаким умолчательным ролям. Они мощны и достаточно близки к статусу суперпользователя. Большинство из них влияют на все проекты вашей установки Weblate.

Список групп

Следующие группы будут созданы после установки (или после выполнения команды setupgroups) и вы можете их изменять. Однако, если вы удалите или переименуете их, то они могут быть воссозданы в процессе миграции на новую версию.

Гости

Определяет разрешения для неаутентифицированных пользователей.

Эта группа содержит только анонимных пользователей (смотрите параметр ANONYMOUS_USER_NAME).

Вы можете удалить роли из этой группы, чтобы ограничить разрешения для неаутентифицированных пользователей.

Роли по умолчанию: Добавление предложений, Доступ к репозиторию

Просматривающие

Эта роль обеспечивает видимость публичных проектов для всех пользователей. По умолчанию, членами этой группы являются все пользователи.

По умолчанию, automatic group assignment делает так, что все новые учётные записи при регистрации становятся членами этой группы.

Роли по умолчанию: нет

Пользователи

Стандартная группа для всех пользователей.

По умолчанию, automatic group assignment делает так, что все новые учётные записи при регистрации становятся членами этой группы.

Роли по умолчанию: Опытный пользователь

Рецензенты

Группа для рецензентов (смотрите раздел Рабочие процессы перевода).

Роли по умолчанию: Рецензирование строк

Управляющие

Группа для администраторов.

Роли по умолчанию: Администрирование

Предупреждение

Никогда не удаляйте предопределённые в Weblate группы и пользователей, поскольку это может привести к неожиданным проблемам! Если они вам не нужны, вы можете просто удалить из них все привилегии.

Дополнительные ограничения доступа

Если вы хотите использовать вашу установку Weblate менее публично, т.е. допускать новых пользователей только по приглашениям, это можно сделать, настроив Weblate таким образом, чтобы доступ к нему имели только известные пользователи. Для этого вы можете установить REGISTRATION_OPEN в False, чтобы предотвратить регистрацию любых новых пользователей, и установить REQUIRE_LOGIN в /.*, чтобы требовать входа в систему для доступа ко всем страницам сайта. В принципе, это способ заблокировать установку Weblate.

Подсказка

Вы можете использовать встроенные :ref:`invitations <manage-acl>`для добавления новых пользователей.