Get all users from SharePoint group including active directory group V2


Bonjour à tous,

Il y a quelque temps, je vous parlais de la manière de récupérer la liste complète des utilisateurs d’un group SharePoint, y compris la liste des utilisateurs Active Directory si un groupe AD était présent.

La solution proposée ne me plaisait pas beaucoup parce que la liaison LDAP était stockée en dur dans le code.

Je vous avais parlé de le classe SPPrincipalInfo et j’avais utilisé la méthode « SPUtility.GetPrincipalsInGroup ».

Cependant j’avais sous-estimé cette fonction !

Je n’avais pas pensé a passer le nom du groupe Active directory ! En effet, cette fonction marche sur les groupes SharePoint mais aussi sur les groupes AD !

Il suffit donc de vérifier si le groupe est un groupe active directory avec une des 2 fonctions suivantes

If(SPUser.IsDomainGroup)

if(SPPrincipalInfo.PrincipalType == SPPrincipalType.SecurityGroup)

Si c’est le cas, il suffit de faire un GetPrincipalsInGroup en passant le loginname du groupe pour avoir la liste des utilisateurs !

Plus besoin de la requête LDAP !

Voici donc le code complet !


DataTable dtuser = new DataTable();

dtuser.Columns.Add("Group User");

SPGroup groupToDisplay = SPContext.Current.Web.SiteGroups.GetByID(DisplayingGroup);

foreach (SPUser user in groupToDisplay.Users)

{

if (user.IsDomainGroup)

dtuser = GetUsers(user.LoginName, dtuser);

else

dtuser.Rows.Add(user.LoginName);

}


DataTable GetUsers(string userLoginName, DataTable dtuser)

{

bool reachedMaxCount;

SPPrincipalInfo[] adUsers = SPUtility.GetPrincipalsInGroup(SPContext.Current.Web, userLoginName, int.MaxValue - 1, out reachedMaxCount) ;

if (adUsers != null && adUsers.Length > 0)

{

foreach (SPPrincipalInfo principal in adUsers)

{

if (principal.PrincipalType == SPPrincipalType.SecurityGroup)

dtuser = GetUsers(principal.LoginName, dtuser);

else

dtuser.Rows.Add(principal.LoginName);

}

}

return dtuser;

}

En espérant que ça aide !

Christopher.

Cet article, publié dans SharePoint 2010, est tagué , . Ajoutez ce permalien à vos favoris.

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s