public SecurityNamespaceDescription GetGitSecurityNamespace() { VssConnection connection = this.Context.Connection; SecurityHttpClient securityClient = connection.GetClient<SecurityHttpClient>(); IEnumerable<SecurityNamespaceDescription> namespaces = securityClient.QuerySecurityNamespacesAsync(this.GitSecurityNamespace).Result; SecurityNamespaceDescription gitNamespace = namespaces.First(); Console.WriteLine("{0}", gitNamespace.DisplayName); foreach (ActionDefinition actionDef in gitNamespace.Actions) { string knownBit = ""; if (actionDef.Bit == gitNamespace.ReadPermission) { knownBit += " [Read]"; } if (actionDef.Bit == gitNamespace.WritePermission) { knownBit += " [Write]"; } Console.WriteLine("\"{0}\" ({1}){2}", actionDef.DisplayName ?? actionDef.Name, actionDef.Bit, knownBit); } return gitNamespace; }
internal Dictionary <int, string> GetGitPermissionNames() { SecurityHttpClient securityClient = connection.GetClient <SecurityHttpClient>(); IEnumerable <SecurityNamespaceDescription> namespaces; namespaces = securityClient.QuerySecurityNamespacesAsync(GitId).Result; SecurityNamespaceDescription gitNamespace = namespaces.First(); Dictionary <int, string> permission = new Dictionary <int, string>(); foreach (ActionDefinition actionDef in gitNamespace.Actions) { permission[actionDef.Bit] = actionDef.DisplayName; } return(permission); }
private Dictionary <int, string> GetGitPermissionNames() { VssConnection connection = this.Context.Connection; SecurityHttpClient securityClient = connection.GetClient <SecurityHttpClient>(); IEnumerable <SecurityNamespaceDescription> namespaces; using (new ClientSampleHttpLoggerOutputSuppression()) { namespaces = securityClient.QuerySecurityNamespacesAsync(this.GitSecurityNamespace).Result; } SecurityNamespaceDescription gitNamespace = namespaces.First(); Dictionary <int, string> permission = new Dictionary <int, string>(); foreach (ActionDefinition actionDef in gitNamespace.Actions) { permission[actionDef.Bit] = actionDef.DisplayName; } return(permission); }
public async Task <List <string> > GetPermissions(string organization, string projectName) { if (string.IsNullOrWhiteSpace(organization)) { throw new ArgumentException($"'{nameof(organization)}' cannot be null or whitespace.", nameof(organization)); } if (string.IsNullOrWhiteSpace(projectName)) { throw new ArgumentException($"'{nameof(projectName)}' cannot be null or whitespace.", nameof(projectName)); } VssConnection connection = null; GraphHttpClient graphHttpClient = null; TeamHttpClient teamClient = null; Guid GitSecurityNamespace = Guid.Parse("2e9eb7ed-3c0a-47d4-87c1-0ffdd275fd87"); try { string url = $"https://dev.azure.com/{organization}"; if (_adoConfig.UsePta) { connection = new VssConnection(new Uri(url), new VssBasicCredential(string.Empty, _adoConfig.AdoPersonalAccessToken)); } else { //connection = new VssConnection(new Uri(url), new VssCredentials(true)); connection = new VssConnection(new Uri(url), new VssClientCredentials(true)); } //projectName = "First-Ado"; //teamClient = connection.GetClient<TeamHttpClient>(); //var allteams = await teamClient.GetTeamsAsync(projectName, null, null, null, true); //var defTeamGroupName = $"{projectName} Team"; //var defTeam = allteams?.FirstOrDefault(a => a.Name.Contains(defTeamGroupName)); //if (defTeam != null) //{ // var members = await teamClient.GetTeamMembersWithExtendedPropertiesAsync(projectName, defTeam.Id.ToString()); // graphHttpClient = connection.GetClient<GraphHttpClient>(); // List<SubjectDescriptor> groupSubjectDescriptors = new(); // groupSubjectDescriptors.Add(SubjectDescriptor.FromString(defTeam.Identity.Descriptor.Identifier)); // var contextCreate = new GraphUserPrincipalNameCreationContext { PrincipalName = "*****@*****.**"}; // var added = await graphHttpClient.CreateUserAsync(contextCreate, groupSubjectDescriptors); // var membersAfter = await teamClient.GetTeamMembersWithExtendedPropertiesAsync(projectName, defTeam.Id.ToString()); //} // Get a client SecurityHttpClient httpClient = connection.GetClient <SecurityHttpClient>(); IEnumerable <SecurityNamespaceDescription> namespaces = await httpClient.QuerySecurityNamespacesAsync(GitSecurityNamespace); SecurityNamespaceDescription gitNamespace = namespaces.FirstOrDefault(); Dictionary <int, string> permission = new Dictionary <int, string>(); foreach (ActionDefinition actionDef in gitNamespace.Actions) { permission[actionDef.Bit] = actionDef.DisplayName; } return(permission.Values?.ToList()); } catch (Exception ex) { //Console.WriteLine("Exception during create project: ", ex.Message); throw; } finally { connection?.Dispose(); graphHttpClient?.Dispose(); teamClient?.Dispose(); } }