
Dans cette leçon, nous allons voir comment récupérer les membres d'un projet dans TFS. Certaines personnes font la liaison avec l'AD pour avoir ces informations, cette manière est lente.
Étape 1 : Création de la méthode
J'ai créé un objet que j'ai nommé PsGroups pour y stocker les groupes du projet et un objet PsMember pour y stocker les membres du projet et les affecter à un groupe (PsGroups).
La méthode prend deux paramètres :
Team FoundationServer : Serveur TFS sur le quel ce connecter
ProjectName : Nom du projet
public static ListGetMembersProject(TeamFoundationServer tfs, string
ProjectName)
Étape 2 : Appel du service IGroupSecurityService pour la gestion des membres
Pour récupérer les informations les API de TFS nous propose le service IGroupSecurityService.
{
Listlg = new List ();
// Get a reference to the
version control service
VersionControlServer versionControl =
PsService.VCS(tfs);
IGroupSecurityService sec = PsService.IGSS(tfs);
Étape 3 : Récupération du projet
Il nous faut plus que le simple nom du projet, donc nous allons récupérer l'objet TeamProject avec le nom du projet passé en paramètre.
TeamProject tp =
versionControl.GetTeamProject(ProjectName);
Etape 4 : Récupération des groupes
La méthode ListApplicationGroups permet de récupérer les groupes, pour chaque groupe nous allons créer un PsGroups.
Identity[] appGroups =
sec.ListApplicationGroups(tp.ArtifactUri.AbsoluteUri);
foreach (Identity
group in appGroups)
{
Identity[] groupMembers =
sec.ReadIdentities(SearchFactor.Sid, new string[] { group.Sid },
QueryMembership.Expanded);
foreach (Identity member in groupMembers)
{
PsGroups pg = new PsGroups();
pg.AccountName = member.AccountName;
pg.Deleted = member.Deleted;
pg.Description = member.Description;
pg.DisplayName = member.DisplayName;
pg.DistinguishedName =
member.DistinguishedName;
pg.Domain = member.Domain;
pg.MailAddress =
member.MailAddress;
pg.MemberOf = member.MemberOf;
pg.SecurityGroup =
member.SecurityGroup;
pg.Sid = member.Sid;
pg.SpecialType =
member.SpecialType;
pg.Type = member.Type;
pg.Members = new
List();
pg.TypeMember = TypeMember.TFS;
Étape 5 : Récupérer les membres d'un groupe
Pour savoir si un groupe à des membres :
if (member.Members != null)
{
Ensuite nous parcourons les membres et créons des objet PsMember.
foreach (string memberSid in member.Members)Étape 6 : Renvois d'une liste
{
Identity memberInfo = sec.ReadIdentity(SearchFactor.Sid, memberSid,
QueryMembership.None);
PsMember pm = new PsMember();
pm.AccountName =
memberInfo.AccountName;
pm.Deleted = memberInfo.Deleted;
pm.Description
= memberInfo.Description;
pm.DisplayName = memberInfo.DisplayName;
pm.DistinguishedName = memberInfo.DistinguishedName;
pm.Domain =
memberInfo.Domain;
pm.MailAddress = memberInfo.MailAddress;
pm.MemberOf
= memberInfo.MemberOf;
pm.SecurityGroup = memberInfo.SecurityGroup;
pm.Sid = memberInfo.Sid;
pm.SpecialType = memberInfo.SpecialType;
pm.Type = memberInfo.Type;
pg.Members.Add(pm);
}
}
Pour finir nous ajoutons l'objet PsGroups à la liste et renvoyons cette liste.
lg.Add(pg);
}
}
return lg;
}
Aucun commentaire:
Enregistrer un commentaire