private IdentityMemberships ToIdentity(TeamFoundationIdentity identity, TFIdentityCategory parentCategory) { var category = ToCategory(identity, parentCategory); return(new IdentityMemberships { DisplayName = identity.DisplayName, Category = category, NestedIdentities = GetNestedIdentities(identity, category) }); }
private static TFIdentityCategory ToCategory(TeamFoundationIdentity current, TFIdentityCategory parentCategory) { var name = current.DisplayName; var domainGroupToken = "[TEAM FOUNDATION]\\"; var isAccount = !current.IsContainer; if (isAccount) { var isBuiltInAccount = name.Contains("(TEAM FOUNDATION)") || name.Contains("Microsoft"); if (isBuiltInAccount) { return(TFIdentityCategory.TFAccount); } if (parentCategory == TFIdentityCategory.TFGroup) { return(TFIdentityCategory.DirectUserAccount); } return(TFIdentityCategory.UserAccount); } var isBuiltInGroup = current.UniqueName.Contains("vstfs") && !name.StartsWith(domainGroupToken); if (isBuiltInGroup) { return(TFIdentityCategory.TFGroup); } var groupName = name.Replace(domainGroupToken, string.Empty); var isValidResourceGroup = groupName.StartsWith("R-VSTS"); if (isValidResourceGroup) { return(TFIdentityCategory.ResourceGroup); } var isRoleGroup = groupName.StartsWith("RCSS-") || groupName.StartsWith("IXS-"); if (isRoleGroup) { return(TFIdentityCategory.RoleGroup); } return(TFIdentityCategory.OtherGroup); }
private IdentityMemberships[] GetNestedIdentities(TeamFoundationIdentity parentIdentity, TFIdentityCategory parentCategory) { if (!parentIdentity.IsContainer) { return(new IdentityMemberships[0]); } var nestedIdentities = _facade .GetIdentities(parentIdentity.Members) .Select(identity => ToIdentity(identity, parentCategory)) .ToArray(); return(nestedIdentities); }