2015-01-15 55 views
0

我已經創建託管的應用(直出的Visual Studio 2013箱),一個簡單的供應商確定哪些列出提供商託管應用程序可以訪問

應用程序已經在應用清單中被授予「閱讀列表權限」。

部署應用程序時SharePoint Online要求用戶選擇應用程序可以訪問的列表。這應該允許它讀取主機Web上的一個特定列表。

我無法弄清楚應用程序的MVC提供程序託管Web部分實際上是如何確定最終用戶授予其讀取權限的SharePoint列表。

可假設它獲取某種令牌來告訴它它可以讀取哪個列表?或者是他們的CSOM/JSOM電話會顯示它可以訪問哪個列表?

回答

0

要確定哪個列出用戶授予權限讀取,你可以考慮以下方法:

1)對於當前用戶

using (var ctx = new ClientContext(webUri)) 
{ 
     var web = ctx.Web; 

     ctx.Load(web.Lists, 
      lists => lists.Include(list => list.Title, 
            list => list.EffectiveBasePermissions)); 

     ctx.ExecuteQuery(); 
     var currentUserLists = web.Lists.Where(l => l.EffectiveBasePermissions.Has(PermissionKind.OpenItems)); 
} 

2)對於任何用戶

using (var ctx = new ClientContext(webUri)) 
{ 
    var web = ctx.Web; 

    //load lists 
    ctx.Load(web.Lists); 
    ctx.ExecuteQuery(); 
    //load lists permissions for a specified user 
    var listsPermissionsResults = web.Lists.ToDictionary(list => list, list => list.GetUserEffectivePermissions(loginName)); 
    ctx.ExecuteQuery(); 

    //filter lists where user has been granted permissions to open list 
    var userLists = new List<List>(); 
    foreach (var result in listsPermissionsResults) 
    { 
      var list = result.Key; 
      var listPermissions = result.Value.Value; 
      if (listPermissions.Has(PermissionKind.OpenItems)) 
      { 
       userLists.Add(list); 
      } 
    } 
} 
相關問題