特定のユーザーが SharePoint のサイト/サブサイトにプログラムでアクセスできるかどうかを確認する必要があります。
注: ログイン ユーザーは、SharePoint サイトのいくつかのサイトにアクセスできます。そのため、ユーザーがアクセス許可を持っているサイトのみを表示する必要があります。
私が使用した:
using (SPWeb web = new SPSite(url).OpenWeb())
{
SPWebCollection Sites = web.Webs;
foreach (SPWeb website in Sites)
{
SPUser loginUser = website.CurrentUser;
string username = loginUser.Name;
if (!website.IsRootWeb)
{
SPWebCollection subsites = website.Webs;
foreach (SPWeb supersubsite in subsites)
{
SPWebCollection thirdlevelsites = supersubsite.Webs;
foreach (SPWeb thirdlevel in thirdlevelsites)
{
thirdlevel.Site.CatchAccessDeniedException = false;
bool check = thirdlevel.DoesUserHavePermissions(SPContext.Current.Web.CurrentUser.LoginName, SPBasePermissions.Open);
if (check)
{
}
thirdlevel.Site.CatchAccessDeniedException = true;
}
}
}
}
}
しかし、エラーが発生しました
bool check = thirdlevel.DoesUserHavePermissions(SPContext.Current.Web.CurrentUser.LoginName, SPBasePermissions.Open);
なので :
アクセスが拒否されました。(HRESULT からの例外: 0x80070005 (E_ACCESSDENIED))