Visual Studio > Project > References > Manage NuGet Packages > Online > Search 'OfficeDevPnP.Core' > Accept and Install
private void btnRemove_Click(object sender, EventArgs e)
{
try
{
progressBar1.Minimum = 0;
progressBar1.Maximum = 100;
progressBar1.Value = 1;
ClientContext context = new ClientContext(txtSiteUrl.Text);
context.RequestTimeout = 9999999;
string decryptedPwd = txtAdminPassword.Text;
foreach (char c in decryptedPwd)
{
securePassword.AppendChar(c);
}
if (rbtnOnpremise.Checked)
{
context.Credentials = new NetworkCredential(GetEnterpriseIDFromEmail(txtAdminID.Text),
securePassword,
txtDomain.Text);
}
else if (rbtnOnline.Checked)
{
context.Credentials = new SharePointOnlineCredentials(GetEnterpriseIDFromEmail(txtAdminID.Text) + "@companyname.com",
securePassword);
//Multifactor Authentication
//PnP.AuthenticationManager authManager = new PnP.AuthenticationManager();
//context = authManager.GetWebLoginClientContext(txtSiteUrl.Text);
//Multifactor Authentication
//PnP.AuthenticationManager authManager = new PnP.AuthenticationManager();
//context = authManager.GetWebLoginClientContext(txtSiteUrl.Text);
}
Web web = context.Web;
context.Load(web, w => w.Title, w => w.HasUniqueRoleAssignments);
context.ExecuteQuery();
string usr_loginName = "i:0#.w|" + txtDomain.Text + "\\" + GetEnterpriseIDFromEmail(txtResourceID.Text);
User usr = web.EnsureUser(usr_loginName);
context.Load(usr);
progressBar1.Value = 5;
//Remove User from Site
if (web.HasUniqueRoleAssignments)
{
//!!!ExpensiveOperation!!!web.SiteUsers.RemoveByLoginName(usr_loginName);
try
{
RoleAssignment directPermission = web.RoleAssignments.GetByPrincipal(usr);
directPermission.DeleteObject();
context.ExecuteQuery();
}
catch { }
}
progressBar1.Value = 10;
//Remove User from Groups
if (chkRemoveFromGroups.Checked)
{
GroupCollection userGroups = web.SiteGroups;
context.Load(userGroups);
context.ExecuteQuery();
foreach (Group grp in userGroups)
{
try
{
grp.Users.Remove(usr);
context.ExecuteQuery();
}
catch { }
}
}
progressBar1.Value = 30;
//Remove User from Lists
if (chkRemoveFromList.Checked)
{
ListCollection lists = web.Lists;
context.Load(lists, lsts => lsts.Where(l => l.HasUniqueRoleAssignments == true &&
l.Hidden == false &&
l.IsApplicationList == false &&
l.IsSiteAssetsLibrary == false).
Include(l => l.HasUniqueRoleAssignments, l => l.Title));
context.ExecuteQuery();
foreach (List list in lists)
{
if (list.HasUniqueRoleAssignments)
{
try
{
RoleAssignment listLevelPermission = list.RoleAssignments.GetByPrincipal(usr);
listLevelPermission.DeleteObject();
context.ExecuteQuery();
}
catch { }
}
}
}
progressBar1.Value = 50;
//Remove User from Items
if (chkRemoveFromItems.Checked)
{
ListCollection lists = web.Lists;
l.IsApplicationList == false &&
l.IsSiteAssetsLibrary == false).
Include(l => l.Title));
context.ExecuteQuery();
foreach (List list in lists)
{
CamlQuery camlQuery = new CamlQuery();
camlQuery.ViewXml = "<View Scope=\"RecursiveAll\"><RowLimit>10000</RowLimit></View>";
ListItemCollection collListItem = list.GetItems(camlQuery);
context.Load(collListItem,
items => items.Where(
item => item.HasUniqueRoleAssignments == true).
Include(
item => item.Id,
item => item.DisplayName,
item => item.HasUniqueRoleAssignments));
context.ExecuteQuery();
foreach (ListItem item in collListItem)
{
if (item.HasUniqueRoleAssignments)
{
try
{
RoleAssignment itemLevelPermission = item.RoleAssignments.GetByPrincipal(usr);
itemLevelPermission.DeleteObject();
context.ExecuteQuery();
}
catch { }
}
}
}
}
progressBar1.Value = 100;
MessageBox.Show("User Permissions removed!");
}
catch (Exception ex)
{
MessageBox.Show("Error: " + ex.Message);
progressBar1.Value = 100;
}
}
No comments:
Post a Comment