Works for administrator but not working for a normal user.
I even tried it with "SPSecurity.RunWithElevatedPrivileges(delegate() {});" after breaking RoleInheritance, and even tried "web.AllowUnsafeUpdates = true; ", it just don't wanna work.
If anyone knows a better way or just a fix ?, here's the code.
private void a()
{
SPWeb web = SPControl.GetContextWeb(HttpContext.Current);
foreach (SPWeb subweb in web.Webs)
{
using (subweb)
{
b(subweb);
}
}
}
public void b(SPWeb web)
{
c(web.Url);
int userCount = web.Users.Count - 1;
for (int i = userCount; i >= 0; i--)
{
if (web.Users[i].IsDomainGroup)
{
SPSecurity.RunWithElevatedPrivileges(delegate() {
web.Users.Remove(i);
});
}
}
}
public void c(string d)
{
using (SPSite site = new SPSite(d))
using (SPWeb web = site.OpenWeb())
{
web.AllowUnsafeUpdates = true;
web.BreakRoleInheritance(true);
web.AllowUnsafeUpdates = false;
}
}
Or Simplified code is here (after Modifications) getting access denied now,
private void RemoveAllGroupsFromSite()
{
SPWeb web = SPControl.GetContextWeb(HttpContext.Current);
ParentWebUrl = web.ParentWeb.Url;
SPSecurity.RunWithElevatedPrivileges(delegate()
{
foreach (SPWeb subweb in web.Webs)
{
using (subweb)
{
int userCount = subweb.Users.Count - 1;
subweb.AllowUnsafeUpdates = true;
subweb.BreakRoleInheritance(true);
for (int i = userCount; i >= 0; i--)
{
if (subweb.Users[i].IsDomainGroup)
{
//eweb.Site.WebApplication.FormDigestSettings.Enabled = false;
subweb.Users.Remove(i);
//eweb.Site.WebApplication.FormDigestSettings.Enabled = true;
}
}
subweb.AllowUnsafeUpdates = false;
}
}
});
}