Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ internal class MsAADTool : IMsAADTool
private ProvisioningToolOptions ProvisioningToolOptions { get; set; }
private string CommandName { get; }
public GraphServiceClient GraphServiceClient { get; set; }
public IAzureManagementAuthenticationProvider AzureManagementAPI { get; set;}
public IAzureManagementAuthenticationProvider AzureManagementAPI { get; set; }
private MsalTokenCredential TokenCredential { get; set; }

public MsAADTool(string commandName, ProvisioningToolOptions provisioningToolOptions)
Expand All @@ -35,10 +35,10 @@ public MsAADTool(string commandName, ProvisioningToolOptions provisioningToolOpt

public async Task<ApplicationParameters?> Run()
{
string outputJsonString = string.Empty;
string outputJsonString = string.Empty;
if (TokenCredential != null && GraphServiceClient != null)
{
switch(CommandName)
switch (CommandName)
{
//--list-aad-apps
case Commands.LIST_AAD_APPS_COMMAND:
Expand All @@ -63,14 +63,14 @@ public MsAADTool(string commandName, ProvisioningToolOptions provisioningToolOpt
return null;
}

private async Task<List<DirectoryObject>> GetGraphObjects()
private async Task<List<DirectoryObject>?> GetGraphObjects()
{
List<DirectoryObject> graphObjectsList = new List<DirectoryObject>();
try
{
var graphObjects = await GraphServiceClient.Me.OwnedObjects
.Request()
.GetAsync();
.Request()
.GetAsync();

if (graphObjects != null)
{
Expand All @@ -96,13 +96,15 @@ private async Task<List<DirectoryObject>> GetGraphObjects()
{
nextPage = null;
ConsoleLogger.LogMessage(Resources.FailedToRetrieveADObjectsError, LogMessageType.Error);
return null;
}
}
}
}
catch (ServiceException)
{
ConsoleLogger.LogMessage(Resources.FailedToRetrieveADObjectsError, LogMessageType.Error);
return null;
}

return graphObjectsList;
Expand All @@ -112,46 +114,48 @@ internal async Task<string> PrintApplicationsList()
{
string outputJsonString = string.Empty;
var graphObjectsList = await GetGraphObjects();
if (graphObjectsList is null)
{
return new JsonResponse(CommandName, State.Fail, Resources.FailedToRetrieveADObjectsError).ToJsonString();
}

IList<Application> applicationList = new List<Application>();
if (graphObjectsList != null && graphObjectsList.Any())
foreach (var graphObj in graphObjectsList)
{
foreach (var graphObj in graphObjectsList)
if (graphObj is Application app)
{
if (graphObj is Application app)
{
applicationList.Add(app);
}
applicationList.Add(app);
}
}

if (applicationList.Any())
if (applicationList.Any())
{
Organization? tenant = await GetTenant(GraphServiceClient);
if (tenant != null && tenant.TenantType.Equals("AAD B2C", StringComparison.OrdinalIgnoreCase))
{
Organization? tenant = await GetTenant(GraphServiceClient);
if (tenant != null && tenant.TenantType.Equals("AAD B2C", StringComparison.OrdinalIgnoreCase))
foreach (Application app in applicationList)
{
foreach (Application app in applicationList)
{
app.AdditionalData.Add("IsB2C", true);
}
app.AdditionalData.Add("IsB2C", true);
}
}

//order list by created date.
applicationList = applicationList.OrderByDescending(app => app.CreatedDateTime).ToList();
//order list by created date.
applicationList = applicationList.OrderByDescending(app => app.CreatedDateTime).ToList();

if (ProvisioningToolOptions.Json)
{
JsonResponse jsonResponse = new JsonResponse(CommandName, State.Success, applicationList);
outputJsonString = jsonResponse.ToJsonString();
}
else
if (ProvisioningToolOptions.Json)
{
JsonResponse jsonResponse = new JsonResponse(CommandName, State.Success, applicationList);
outputJsonString = jsonResponse.ToJsonString();
}
else
{
Console.Write(
"--------------------------------------------------------------\n" +
"Application Name\t\t\t\tApplication ID\n" +
"--------------------------------------------------------------\n\n");
foreach (var app in applicationList)
{
Console.Write(
"--------------------------------------------------------------\n" +
"Application Name\t\t\t\tApplication ID\n" +
"--------------------------------------------------------------\n\n");
foreach (var app in applicationList)
{
Console.WriteLine($"{app.DisplayName.PadRight(35)}\t\t{app.AppId}");
}
Console.WriteLine($"{app.DisplayName.PadRight(35)}\t\t{app.AppId}");
}
}
}
Expand All @@ -161,7 +165,7 @@ internal async Task<string> PrintApplicationsList()

private static async Task<Organization?> GetTenant(GraphServiceClient graphServiceClient)
{
Organization? tenant = null;
Organization? tenant;
try
{
tenant = (await graphServiceClient.Organization
Expand All @@ -170,23 +174,25 @@ internal async Task<string> PrintApplicationsList()
}
catch (ServiceException ex)
{
string? errorMessage;
if (ex.InnerException != null)
{
Console.WriteLine(ex.InnerException.Message);
errorMessage = ex.InnerException.Message;
}
else
{
if (ex.Message.Contains("User was not found") || ex.Message.Contains("not found in tenant"))
{
Console.WriteLine("User was not found.\nUse both --tenant-id <tenant> --username <username@tenant>.\nAnd re-run the tool.");
errorMessage = "User was not found.\nUse both --tenant-id <tenant> --username <username@tenant>.\nAnd re-run the tool.";
}
else
{
Console.WriteLine(ex.Message);
errorMessage = ex.Message;
}
}

Environment.Exit(1);
Console.WriteLine(errorMessage);
return null;
}

return tenant;
Expand Down Expand Up @@ -275,13 +281,13 @@ internal async Task<string> PrintTenantsList()
JsonResponse jsonResponse = new JsonResponse(CommandName, State.Success, tenantList);
outputJsonString = jsonResponse.ToJsonString();
}
else
else
{
Console.Write(
"--------------------------------------------------------------------------------------------------------------------------------\n" +
"--------------------------------------------------------------------------------------------------------------------------------\n" +
"Display Name\t\t\tDefault Domain\t\t\t\tTenant Type\tTenant Id\n" +
"--------------------------------------------------------------------------------------------------------------------------------\n\n");
foreach(var tenant in tenantList)
foreach (var tenant in tenantList)
{
Console.WriteLine($"{(tenant.DisplayName ?? string.Empty).PadRight(16)}\t\t{(tenant.DefaultDomain ?? string.Empty).PadRight(20)}\t\t{(tenant.TenantType ?? string.Empty).PadRight(10)}\t{(tenant.TenantId ?? string.Empty)}");
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -673,7 +673,7 @@ internal static SyntaxNode AddLambdaToParent(SyntaxNode parent, IEnumerable<Synt
// Create lambda expression with parameter and block (add leading newline to block for formatting)
var newLambdaExpression = SyntaxFactory.SimpleLambdaExpression(
parameter,
block.WithLeadingTrivia(SyntaxFactory.CarriageReturnLineFeed, parentLeadingWhiteSpace));
block.WithLeadingTrivia(parentLeadingWhiteSpace));

// Add lambda to parent block's argument list
var argument = SyntaxFactory.Argument(newLambdaExpression);
Expand Down