/// <summary> /// Configures services for a given service collection and configuration. /// </summary> /// <param name="services">Services.</param> /// <param name="configuration">Configuration.</param> /// <returns><see cref="IServiceCollection"/>.</returns> public static IServiceCollection AddAsaphServices( this IServiceCollection services, IConfiguration configuration) { // Get Azure AD B2C configuration AzureAdb2cConfiguration azureAdb2CConfiguration = configuration .GetSection("AzureAdb2c") .Get <AzureAdb2cConfiguration>(); // Get Dynamo DB configuration DynamoDBConfiguration dynamoDBConfiguration = configuration .GetSection("DynamoDB") .Get <DynamoDBConfiguration>(); // Register services services.AddTransient < ISongDirectorRepositoryFragment, AzureAdb2cSongDirectorRepository>( factory => new(azureAdb2CConfiguration)) .AddTransient < ISongDirectorRepositoryFragment, DynamoDBSongDirectorRepository>( factory => new(dynamoDBConfiguration)) .AddTransient < IAsyncRepository <SongDirector>, AggregateSongDirectorRepository>(); // Return the service collection reference return(services); }
/// <summary> /// Initializes a new instance of the <see cref="AzureAdb2cSongDirectorRepository"/> class. /// </summary> /// <param name="configuration">Configuration.</param> public AzureAdb2cSongDirectorRepository(AzureAdb2cConfiguration configuration) { _domain = configuration.Domain !; _rolesPropertyName = $"extension_{configuration.ExtensionsAppClientId}_Roles"; _userSelectString = $"displayName,id,mail,mobilePhone,{_rolesPropertyName}"; ClientSecretCredential clientSecretCredential = new( configuration.TenantId, configuration.ClientId, configuration.ClientSecret); _graphServiceClient = new GraphServiceClient(clientSecretCredential); }