CHUVASH.eu

CHunky Universe of Vigourous Astonishing SHarepoint :)

Check if user is in group

Use LINQ to check if user is in a group. Create an extension method.

public static bool InGroup(this SPUser user, SPGroup group)
{
  return user.Groups.Cast<SPGroup>()
    .Any(g => g.ID == group.ID);
}

EDIT 2011-01-22: There is a shortcoming of this method. You won’t get a user which is in group through a AD group. You’ll get only users and ad groups. But there is another method to check if a user is inside an AD group.

How could we combine them?…

I think we must start from group this time, not from user:

public static bool HasUser(this SPGroup user, SPUser user)
{
	var users = group.Users.Cast();
	var samAccount = Regex.Replace(user.LoginName, @".*\\(.*)", "$1", RegexOptions.None);
	var exists = users.Any(u => u.LoginName.Equals(user.LoginName));
	if (!exists)
	{
		var ctx = new PrincipalContext(ContextType.Domain);
		foreach (var u in users)
		{
			var login = u.LoginName;
			var groupName = Regex.Replace(login, @".*\\(.*)", "$1", RegexOptions.None);
			var grp = GroupPrincipal.FindByIdentity(ctx, IdentityType.Name, groupName);
			if (grp == null) continue;
			var principals = grp.GetMembers(true);
			exists = principals.Any(p => p.SamAccountName.Equals(samAccount, 
						StringComparison.InvariantCultureIgnoreCase));
			if (exists) break;
		}
	}
	return exists;
}

Using Regex to get the samAccount from loginname is taken from the awesome answer on StackOverflow.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

Вула Чăвашла

VulaCV - Чăвашла вулаттаракан сайт

Discovering SharePoint

And going crazy doing it

Bram de Jager - Coder, Speaker, Author

Office 365, SharePoint and Azure

SharePoint Dragons

Nikander & Margriet on SharePoint

Paul J. Swider - RealActivity

RealActivity is a specialized healthcare services and solution advisory firm.

Mai Omar Desouki - Avid SharePointer

Egyptian & Vodafoner - Senior SharePoint Consultant

Cameron Dwyer | Office 365, SharePoint, Outlook, OnePlace Solutions

Office 365, SharePoint, OnePlace Solutions & Life's Other Little Wonders

paul.tavares

Me and My doings!

Share SharePoint Points !

By Mohit Vashishtha

Jimmy Janlén "Den Scrummande Konsulten"

Erfarenheter, synpunkter och raljerande om Scrum från Jimmy Janlén

Aryan Nava

| Blockchain | Serverless Architecture | Microservices Architecture | DevOps | AWS Lambda | Teraform |

SPJoel

SharePoint for everyone

SharePointRyan

Ryan Dennis is a SharePoint Solution Architect with a passion for SharePoint and PowerShell

SharePoint 2020

The Vision for a Future of Clarity

Aharoni in Unicode

Treacle tarts for great justice

... And All That JS

JavaScript, Web Apps and SharePoint

blksthl

Mostly what I know about SharePoint - CommunicoCuspis

%d bloggers like this: