Reputation: 11
I can retrieve list of users from TFS with following C# code. However, I want to change and persist display name of the users. Here is my code.
using System;
using System.Collections.Generic;
using Microsoft.TeamFoundation.Client;
using Microsoft.TeamFoundation.Framework.Client;
using Microsoft.TeamFoundation.Framework.Common;
namespace ConsoleApplication3
{
class Program
{
static void Main(string[] args)
{
TfsConfigurationServer tcs = new TfsConfigurationServer(new Uri("http://tfsserver:8080/tfs"));
IIdentityManagementService ims = tcs.GetService<IIdentityManagementService>();
TeamFoundationIdentity tfi = ims.ReadIdentity(IdentitySearchFactor.AccountName, "[TEAM FOUNDATION]\\Team Foundation Valid Users", MembershipQuery.Expanded, ReadIdentityOptions.None);
TeamFoundationIdentity[] ids = ims.ReadIdentities(tfi.Members, MembershipQuery.None, ReadIdentityOptions.None);
foreach (TeamFoundationIdentity id in ids)
{
if (id.Descriptor.IdentityType == "System.Security.Principal.WindowsIdentity")
{
var displayName = id.DisplayName;
// Now I would like to change this displayName and persist the change ???
}
}
Console.ReadLine();
}
}
}
Thanks Rusho
Upvotes: 1
Views: 391
Reputation: 51183
As you have pointed out just first use ReadIdentities
in IIdentityManagementService Interface You could take a look at below code snippet which converts identity.DisplayName from Patrick Lu to Test User .
var sec = _tfs.GetService<IGroupSecurityService>();
var vcs = _tfs.GetService<VersionControlServer>();
Identity[] appGroups = sec.ListApplicationGroups(vcs.GetTeamProject(_selectedTeamProject).ArtifactUri.AbsoluteUri);
foreach (Identity group in appGroups)
{
Identity[] groupMembers = sec.ReadIdentities(SearchFactor.Sid, new string[] { group.Sid }, QueryMembership.Expanded);
foreach (Identity member in groupMembers)
{
if (member.Members != null)
{
foreach (string memberSid in member.Members)
{
Identity memberInfo = sec.ReadIdentity(SearchFactor.Sid, memberSid, QueryMembership.Expanded);
if (memberInfo.DisplayName.ToUpper() == "Patrick Lu")
{
memberInfo.DisplayName = "Test User ";
}
}
}
}
}
Make sure you have enough permission to do this.
Upvotes: 1