ТФС 2018u1. Я создаю расширение с пользовательскими командами контекстного меню для определений выпуска. Я бы хотел, чтобы некоторые из них были условно невидимыми (на правах текущего пользователя). Есть ли способ скрыть их?
Умышленное отсутствие вызова VSS.register()
не помогает; пользовательские команды все еще там, просто ничего не делайте.
Это не мера безопасности, это удобство использования (меню становится тесно).
РЕДАКТИРОВАТЬ: в Структура данных вклада есть свойство под названием constraints
. Это не задокументировано, я понятия не имею, откуда это взялось. Вероятно, манифест. Единственное упоминание об ограничениях, которое я смог найти, находится в исходники инструмента TFX. По-видимому, constraints
является допустимым значением в манифесте JSON (вероятно, в объекте вклада), и предполагается, что это массив. Предположим, один из ContributionConstraint
объектов. Последнее как бы задокументировано.
Ограничение object имеет свойство name
, которое, согласно документации, содержит ссылку на класс IContributionFilter
. Я не смог найти никаких упоминаний об этом классе ни в документах, ни в источниках TypeScript. Однако в сборке Microsoft.VisualStudio.Services.ExtensionManagement.Sdk.Server.dll
есть интерфейс Microsoft.VisualStudio.Services.ExtensionManagement.Sdk.Server.IContributionFilter
, и у него есть свойство Name
. В bin\Plugins\Microsoft.VisualStudio.Services.ExtensionManagement.Sdk.Plugins.dll
есть производные классы:
- ExtensionLicensedFilter
- FeatureFlagFilter
- LegacyFeatureEnabledFilter
- ActiveExtensionFilter
- FeatureFilter
- SecurityFilter
Концентрация на последнем. Название "Безопасность". Похоже, он поддерживает следующие свойства:
- namespaceId (GUID) — пространство имен безопасности AKA
- namespaceToken (string) - токен защищаемого объекта
- разрешение (int) - битовая маска, как в ACL
- allowSystemContext (необязательное логическое значение) - ???
- serviceInstanceType (необязательный GUID) — имеет значение только для VSTS.
Если вы укажете ограничение в манифесте JSON под объектом вклада, по крайней мере, оно распространяется через структуры данных TFS и отображается под VSS.getContribution()
в сценарии расширения. Теперь о деталях проверки безопасности...
constraints
кажется, определено вvss.d.ts
на основе этой статьи: Ограничение вклада - person Andy Li-MSFT   schedule 18.05.2018