SharePoint - Как назначить задачу пользователю, которого нет в системе? - PullRequest
3 голосов
/ 14 июня 2011

Мне нужно программно создать задачу для пользователя, который явно не был добавлен пользователям сайта. У него есть разрешения для внесения вклада в список задач, потому что он принадлежит к группе AD, которой были предоставлены эти разрешения. Я могу назначить задачу пользователю через пользовательский интерфейс; как мне сделать это через код?

Допустимый способ назначения задач пользователям - установить для поля AssignedTo задачи значение SPFieldUserValue, указывающее на этого пользователя. За исключением того, что это не может быть сделано в этом случае, потому что пользователи не могут быть найдены в SharePoint, только его группа! Назначение задачи всей группе - плохая идея по понятным причинам. А наши системные администраторы категорически отказываются добавлять пользователей в Sharepoint один за другим, потому что это будет дублировать данные, которые они имеют в Active Directory, и, как правило, будет неудобно управлять. Что мне делать?

1 Ответ

0 голосов
/ 20 июля 2011

Когда пользователь проходит проверку подлинности в SharePoint, для него создается запись в хранилище профилей, даже если его разрешение на сайт исходит от группы AD.

Я провел быструю проверку, добавив в мою AD нового пользователя (TGroupsUser) и группу (SPtestPermissions), поэтому у меня никогда не было шансов на моем сайте. Я добавил пользователя в группу и дал группе «Член» разрешения на мой сайт. Затем я прошел аутентификацию в SP с этим новым пользователем.

Чтобы показать, что пользователь является частью этого SPWeb, я написал небольшую веб-часть для перечисления пользователей в Интернете. Обратите внимание, что есть три группы пользователей с SPWeb. Все пользователи, пользователи сайта и пользователи. Смотрите эту ссылку для полного описания этих свойств. По сути, пользователи являются пользователями в Интернете. Пользователи сайта - это пользователи и группы в семействе сайтов. Все пользователи - это все пользователи сайта, включая пользователей, которым предоставлено прямое разрешение или , предоставленных через группу, а затем посетивших сайт. Ниже приведены результаты за вычетом системных учетных записей.

Все пользователи SPSDEV \ rross SPSDEV \ sptestpermissions SPSDEV \ TGroupsUser

Пользователи сайта SPSDEV \ rross SPSDEV \ sptestpermissions SPSDEV \ TGroupsUser

Пользователи SPSDEV \ rross

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

TaskItem[SPBuiltInFieldId.AssignedTo] = web.SiteUsers.GetByEmail("myemail@domain.com");

Вот скриншот новой задачи, назначенной TGroupsUser. enter image description here

К вашему сведению - мне нужно было использовать AllowUnsafeUpdates для веб-объекта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...