2015-01-15 76 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); 
      } 
    } 
} 
相关问题