2013-01-01 61 views
1

我正在開發一個應用程序,它重用了以前解決方案中的一些代碼。替換爲SP2013中List對象的DoesUserHavePermissions

這個想法是向用戶顯示網站集中所有網站中某個類型的所有列表,以便用戶可以彙總某些數據。

static public List<SPListMeta> AllSiteAnnouncementsLists(ClientContext clientContext) 
{ 
    var returnList = new List<SPListMeta>(); 
    var per = new BasePermissions(); 
    per.Set(PermissionKind.Open); 
    if (clientContext.Site.RootWeb.DoesUserHavePermissions(per).Value) 
    { 
     var rootWebLists = clientContext.Site.RootWeb.Lists; 

     returnList.AddRange(from List oList in rootWebLists 
          where oList.DoesUserHavePermissions(SPBasePermissions.ViewListItems) && 
          where oList.BaseTemplate == (int)ListTemplateType.Announcements 
          select new SPListMeta(oList)); 
     var collWebs = 
      clientContext.Site.OpenWebById(clientContext.Site.RootWeb.Id).GetSubwebsForCurrentUser(null); 
     foreach(Web oWeb in collWebs) 
     { 

     } 
    } 
    return returnList; 
} 

不工作,似乎並不有可更換的臨界線是

oList.DoesUserHavePermissions(SPBasePermissions.ViewListItems)

,因爲這已經從CSOM List對象

有什麼新的方式去除去做這個?

回答

1

檢查權限的新方法是:

List.EffectiveBasePermissions.Has(PermissionKind.Open)