Created
January 8, 2019 15:21
-
-
Save nddipiazza/d9bda1ce849f38ae537dba2f7f192111 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using Microsoft.SharePoint.Client; | |
using System; | |
using System.Collections.Generic; | |
using System.Linq; | |
using System.Security; | |
using System.Text; | |
using System.Threading.Tasks; | |
namespace SharePointOnlineTest { | |
class Program { | |
static void Main(string[] args) { | |
string userName = "xxxxxxx@tenant.sharepoint.com"; //give your username here | |
string password = "xxxxx"; //give your password | |
var securePassword = new SecureString(); | |
foreach (char c in password) { | |
securePassword.AppendChar(c); | |
} | |
string siteURL = "https://xxxxxx.sharepoint.com/yoursitehere"; | |
//Create the client context object and set the credentials | |
ClientContext clientContext = new ClientContext(siteURL); | |
clientContext.Credentials = new SharePointOnlineCredentials(userName, securePassword); | |
//Load the web | |
Web web = clientContext.Web; | |
//get all lists | |
ListCollection collList = web.Lists; | |
clientContext.Load(web); | |
clientContext.Load(collList); | |
clientContext.Load(collList, wc => wc.Include(w => w.HasUniqueRoleAssignments, w => w.RootFolder.ServerRelativeUrl)); | |
clientContext.ExecuteQuery(); | |
foreach (List oList in collList) { | |
Console.WriteLine("-- List: {0} permissions:", oList.RootFolder.ServerRelativeUrl); | |
var listItems = oList.GetItems(CamlQuery.CreateAllItemsQuery()); | |
clientContext.Load(listItems); | |
clientContext.Load(listItems, | |
items => items.Include( | |
item => item.Id, | |
item => item.DisplayName, | |
item => item.HasUniqueRoleAssignments, | |
item => item.Folder, | |
item => item.File, | |
item => item.ContentType | |
)); | |
clientContext.ExecuteQuery(); | |
foreach (var listItem in listItems) { | |
Console.WriteLine("List item: " + listItem["ID"]); | |
if (listItem.HasUniqueRoleAssignments) { | |
if (listItem.HasUniqueRoleAssignments) { | |
clientContext.Load(listItem.RoleAssignments, | |
ras => ras.Include( | |
item => item.PrincipalId, | |
item => item.Member.LoginName, | |
item => item.Member.Title, | |
item => item.Member.PrincipalType, | |
item => item.RoleDefinitionBindings)); | |
clientContext.ExecuteQuery(); | |
if (listItem.RoleAssignments.Count == 0) { | |
Console.WriteLine("Error: Expected to have unique permissions but couldn't find them!"); | |
continue; | |
} | |
foreach (var roleAsg in listItem.RoleAssignments) { | |
Console.WriteLine("User/Group: " + roleAsg.Member.LoginName); | |
List<string> roles = new List<string>(); | |
foreach (var role in roleAsg.RoleDefinitionBindings) { | |
roles.Add(role.Description); | |
} | |
Console.ForegroundColor = ConsoleColor.Red; | |
Console.WriteLine("Permissions: " + string.Join(",", roles.ToArray())); | |
Console.ForegroundColor = ConsoleColor.White; | |
Console.WriteLine("----------------"); | |
} | |
} | |
} else { | |
Console.ForegroundColor = ConsoleColor.Green; | |
Console.WriteLine("No unique permission found"); | |
Console.ForegroundColor = ConsoleColor.White; | |
} | |
Console.WriteLine("###############"); | |
} | |
} | |
Console.ReadKey(); | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment