特定のSharePointユーザーをプログラムで検索します
-
30-09-2019 - |
質問
私は、フィラーが人を指定するために必要なインフォパスフォームです。ワークフローは後でこれらの人々にタスクを割り当てます。私が探しているのは、SharePointがユーザーフィールドに持っているもののような人々のピッカーですが、Infopathで使用できることです。私はすでに、フィラーが名前または電子メールを入れることができ、フォームがSite.Allusers Groupの結果をリストすることができる場合にこれを行うフォームを設計しました。
問題は、フォームに追加する必要がある人が以前にこの特定のサイトコレクションにアクセスしたことがない場合はどうでしょう。彼らのアカウントはAllusersリストにリストされません。
オブジェクトモデルのどこで、SharePointで認証できるユーザーを検索できますか?
解決
InfopathのOTBを使用して、SharePoint環境を指すように構成してみませんか?
http://www.sharepointassist.com/2009/02/27/adding-a-contact-selectorpeople-to-an-infopath-form/
AD統合を備えた実行中のモスの場合、AD同期が有効になっている場合、ドメインにあるすべての人を自動的に取得する必要があります。
他のヒント
ここでの問題は、ユーザーのリストを見つけたとしても、ユーザーがユーザー情報リストに存在しない場合、ワークフローがアクションをトリガーしないことだと思います。
ユーザーがユーザー情報リストに存在しない場合、SharePointに存在しないため、SharePointオブジェクトモデルを介してそれらを見つけることができません。他の方法で見つけなければなりません。
したがって、基本的には、SharePointサーバーで認証がどのように構成されているかに依存します。
FBAを使用している場合、SharePointで認証できるユーザーは、どこかのSQLデータベースに存在する必要があります。 Membership.Provider FBAメンバーシッププロバイダーにフックを提供します(SQLMemberShipproviderまたは他の何かであろうと)。その後、次のような方法を使用できます
Membership.Provider.GetUser(username)
ユーザーが存在するかどうかを確認します。また、ユーザーをループしたり、ピッカーに表示できる既存のユーザー名をすべて見つけたりすることもできます。
Windows認証を使用している場合は、潜在的なユーザーを見つけるために広告を調べる必要があります。 DirectoryEntry オブジェクトは必要なものです。特定の広告グループのユーザーのみがSharePointにアクセスできると思いますか?もしそうなら、そのグループをDirectoryEntryオブジェクトで隔離し、ユーザーにループすると、People Pickerのデータソースがあります。
上で述べたように、どちらの方法でも可能なユーザーを提供しますが、ユーザーがログインしていない場合、ワークフローは機能しません。ワークフローは、ユーザー情報リストに存在するユーザーでのみ適切に動作します。
誰かがSharePointに存在しないユーザーを選択したら、おそらくコードを介して作成する必要があります。これを行うための安全な方法は、です spweb.ensureuser.
指定されたログイン名がWebサイトの有効なユーザーに属しているかどうか、およびログイン名がまだ存在しない場合は、Web Site.Siteに追加します。
本当に、あなたの質問に答えるために、どこにも。あなたは彼らが来る可能性のある場所を探す必要があります。