Поиск конкретного пользователя SharePoint программно - PullRequest
2 голосов
/ 10 ноября 2010

У меня есть форма InfoPath, в которой заполнитель должен указать людей.Позднее рабочий процесс назначает задачи этим людям.То, что я ищу, - это средство выбора людей, подобное тому, что есть в SharePoint для пользовательских полей, но которое я могу использовать в InfoPath.Для этого я уже разработал форму, в которой заполнитель может указать имя или адрес электронной почты, а в форме будут перечислены результаты из группы site.allusers.

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

Где в объектной модели я могу найти пользователя, который может пройти аутентификацию в SharePoint?

Ответы [ 2 ]

1 голос
/ 09 апреля 2011

Почему бы просто не использовать OTB один в InfoPath и настроить его так, чтобы он указывал на вашу среду SharePoint?

http://www.sharepointassist.com/2009/02/27/adding-a-contact-selectorpeople-picker-to-an-infopath-form/

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

1 голос
/ 10 ноября 2010

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

Если пользователи не существуют в списке информации о пользователях, вы не сможете найти их через объектную модель SharePoint, поскольку они не существуют в SharePoint. Тебе придется найти их другим способом.

Таким образом, в основном, это зависит от того, как настроена аутентификация на вашем сервере SharePoint:

Если вы используете FBA, то пользователи, которые могут проходить аутентификацию в SharePoint, должны где-то существовать в базе данных SQL. Membership.Provider подскажет вам вашего провайдера членства в FBA (будь то SqlMembershipProvider или что-то еще). Затем вы можете использовать методы, такие как

Membership.Provider.GetUser(username)

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

Если вы используете проверку подлинности Windows, вам придется заглянуть в свою AD, чтобы найти потенциальных пользователей. Вам необходим объект DirectoryEntry . Я полагаю, что только пользователи из определенной группы AD могут получить доступ к SharePoint? Если это так, то изолируйте эту группу с помощью объекта DirectoryEntry, проведите по кругу пользователей, и у вас будет источник данных для средства выбора людей.

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

Когда кто-то выбирает пользователя, которого нет в SharePoint, вам, вероятно, придется создать его с помощью кода. Безопасный способ сделать это с помощью SPWeb.EnsureUser .

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

Так действительно, чтобы ответить на твой вопрос, никуда. Вам нужно искать их, откуда они могут прийти.

...