It's a bit more convoluted than it needs to be as for some reason Sharepoint 2013 appends the claim provider to the username, which means that rather than having:
dev\duser1we have something like:
i:0#.w|dev\duser1so in order to ensure that the it will always find the relevant user, we do the extra call to ResolvePrincipal.
using Microsoft.SharePoint.Client;
using Microsoft.SharePoint.Client.Utilities;
public bool RemoveUser(string url, string groupName, string userName)
{
using (ClientContext context = new ClientContext(url))
{
var principal = Utility.ResolvePrincipal(context, context.Web, userName, PrincipalType.User,
PrincipalSource.All, context.Web.SiteUsers, false);
context.ExecuteQuery();
if (principal.Value != null)
{
string login = principal.Value.LoginName;
GroupCollection siteGroups = context.Web.SiteGroups;
Group group = siteGroups.GetByName(groupName);
var query = context.LoadQuery(group.Users.Where(usr => usr.LoginName == login).Include(u => u.LoginName));
context.ExecuteQuery();
User user = query.SingleOrDefault();
if (user != null)
{
group.Users.RemoveByLoginName(user.LoginName);
context.ExecuteQuery();
}
return true;
}
}
return false;
}
No comments:
Post a Comment