Example #1
0
 /// <summary>
 /// Initializes a new instance of the <see cref="HomeController" /> class.
 /// </summary>
 /// <param name="usersRepository">The users repository.</param>
 /// <param name="apiClient">The API client.</param>
 /// <param name="logger">The logger.</param>
 /// <param name="subscriptionRepo">The subscription repo.</param>
 /// <param name="planRepository">The plan repository.</param>
 /// <param name="subscriptionUsageLogsRepository">The subscription usage logs repository.</param>
 /// <param name="dimensionsRepository">The dimensions repository.</param>
 /// <param name="subscriptionLogsRepo">The subscription logs repo.</param>
 /// <param name="applicationConfigRepository">The application configuration repository.</param>
 /// <param name="userRepository">The user repository.</param>
 /// <param name="fulfillApiClient">The fulfill API client.</param>
 /// <param name="applicationLogRepository">The application log repository.</param>
 /// <param name="emailTemplateRepository">The email template repository.</param>
 /// <param name="planEventsMappingRepository">The plan events mapping repository.</param>
 /// <param name="eventsRepository">The events repository.</param>
 /// <param name="options">The options.</param>
 /// <param name="subscriptionTemplateParametersRepository">The subscription template parameters repository.</param>
 /// <param name="cloudConfigs">The cloud configs.</param>
 public HomeController(
     IUsersRepository usersRepository, IMeteredBillingApiClient apiClient, ILogger <HomeController> logger, ISubscriptionsRepository subscriptionRepo, IPlansRepository planRepository, ISubscriptionUsageLogsRepository subscriptionUsageLogsRepository, IMeteredDimensionsRepository dimensionsRepository, ISubscriptionLogRepository subscriptionLogsRepo, IApplicationConfigRepository applicationConfigRepository, IUsersRepository userRepository, IFulfillmentApiClient fulfillApiClient, IApplicationLogRepository applicationLogRepository, IEmailTemplateRepository emailTemplateRepository, IPlanEventsMappingRepository planEventsMappingRepository, IEventsRepository eventsRepository, IOptions <SaaSApiClientConfiguration> options, CloudStorageConfigs cloudConfigs)
 {
     this.apiClient                       = apiClient;
     this.subscriptionRepo                = subscriptionRepo;
     this.subscriptionLogRepository       = subscriptionLogsRepo;
     this.planRepository                  = planRepository;
     this.subscriptionUsageLogsRepository = subscriptionUsageLogsRepository;
     this.dimensionsRepository            = dimensionsRepository;
     this.logger = logger;
     this.applicationConfigRepository = applicationConfigRepository;
     this.usersRepository             = usersRepository;
     this.userRepository              = userRepository;
     this.userService                 = new UserService(userRepository);
     this.fulfillApiClient            = fulfillApiClient;
     this.applicationLogRepository    = applicationLogRepository;
     this.applicationLogService       = new ApplicationLogService(this.applicationLogRepository);
     this.applicationConfigRepository = applicationConfigRepository;
     this.subscriptionRepository      = this.subscriptionRepo;
     this.subscriptionService         = new SubscriptionService(this.subscriptionRepository, this.planRepository);
     this.emailTemplateRepository     = emailTemplateRepository;
     this.planEventsMappingRepository = planEventsMappingRepository;
     this.eventsRepository            = eventsRepository;
     this.options             = options;
     this.cloudConfigs        = cloudConfigs;
     this.azureWebJobsStorage = cloudConfigs.AzureWebJobsStorage;
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="WebHookHandler" /> class.
 /// </summary>
 /// <param name="applicationLogRepository">The application log repository.</param>
 /// <param name="subscriptionsLogRepository">The subscriptions log repository.</param>
 /// <param name="subscriptionsRepository">The subscriptions repository.</param>
 /// <param name="planRepository">The plan repository.</param>
 /// <param name="cloudConfigs">The cloud configs.</param>
 public WebHookHandler(IApplicationLogRepository applicationLogRepository, ISubscriptionLogRepository subscriptionsLogRepository, ISubscriptionsRepository subscriptionsRepository, IPlansRepository planRepository, CloudStorageConfigs cloudConfigs)
 {
     this.applicationLogRepository   = applicationLogRepository;
     this.subscriptionsRepository    = subscriptionsRepository;
     this.planRepository             = planRepository;
     this.subscriptionsLogRepository = subscriptionsLogRepository;
     this.applicationLogService      = new ApplicationLogService(this.applicationLogRepository);
     this.subscriptionService        = new SubscriptionService(this.subscriptionsRepository, this.planRepository);
     this.cloudConfigs        = cloudConfigs;
     this.azureWebJobsStorage = cloudConfigs.AzureWebJobsStorage;
 }
        private static void ConfigureServices(IServiceCollection services)
        {
            var environment = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT");

            var loggerFactory = LoggerFactory.Create(builder =>
            {
                builder
                .AddConsole();
            });

            Configuration = new ConfigurationBuilder()
                            .SetBasePath(Directory.GetCurrentDirectory())
                            .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
                            .AddJsonFile($"appsettings.{environment}.json", optional: true, reloadOnChange: true)
                            .AddEnvironmentVariables() // this doesn't do anything useful notice in setting some env variables explicitly.
                            .Build();                  // build it so you can use those config variables down below.

            Environment.SetEnvironmentVariable("MyConnVariable", Configuration["MyConnVariable"]);

            var config = new SaaSApiClientConfiguration()
            {
                AdAuthenticationEndPoint = Configuration["SaaSApiConfiguration:AdAuthenticationEndPoint"],
                ClientId              = Configuration["SaaSApiConfiguration:ClientId"],
                ClientSecret          = Configuration["SaaSApiConfiguration:ClientSecret"],
                FulFillmentAPIBaseURL = Configuration["SaaSApiConfiguration:FulFillmentAPIBaseURL"],
                FulFillmentAPIVersion = Configuration["SaaSApiConfiguration:FulFillmentAPIVersion"],
                GrantType             = Configuration["SaaSApiConfiguration:GrantType"],
                Resource              = Configuration["SaaSApiConfiguration:Resource"],
                SaaSAppUrl            = Configuration["SaaSApiConfiguration:SaaSAppUrl"],
                SignedOutRedirectUri  = Configuration["SaaSApiConfiguration:SignedOutRedirectUri"],
                TenantId              = Configuration["SaaSApiConfiguration:TenantId"],
            };

            var cloudConfig = new CloudStorageConfigs
            {
                AzureWebJobsStorage = Configuration["AzureWebJobsStorage"],
            };

            services.AddSingleton <IFulfillmentApiClient>(new FulfillmentApiClient(config, new FulfillmentApiClientLogger()));
            services.AddSingleton <SaaSApiClientConfiguration>(config);
            services.AddDbContext <SaasKitContext>(options =>
                                                   options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));

            InitializeRepositoryServices(services);
        }
Example #4
0
 /// <summary>
 /// Initializes a new instance of the <see cref="HomeController" /> class.
 /// </summary>
 /// <param name="logger">The logger.</param>
 /// <param name="apiClient">The API Client<see cref="IFulfilmentApiClient" />.</param>
 /// <param name="subscriptionRepo">The subscription repository.</param>
 /// <param name="planRepository">The plan repository.</param>
 /// <param name="userRepository">The user repository.</param>
 /// <param name="applicationLogRepository">The application log repository.</param>
 /// <param name="subscriptionLogsRepo">The subscription logs repository.</param>
 /// <param name="applicationConfigRepository">The application configuration repository.</param>
 /// <param name="emailTemplateRepository">The email template repository.</param>
 /// <param name="offersRepository">The offers repository.</param>
 /// <param name="planEventsMappingRepository">The plan events mapping repository.</param>
 /// <param name="offerAttributesRepository">The offer attributes repository.</param>
 /// <param name="eventsRepository">The events repository.</param>
 /// <param name="cloudConfigs">The cloud configs.</param>
 public HomeController(ILogger <HomeController> logger, IFulfillmentApiClient apiClient, ISubscriptionsRepository subscriptionRepo, IPlansRepository planRepository, IUsersRepository userRepository, IApplicationLogRepository applicationLogRepository, ISubscriptionLogRepository subscriptionLogsRepo, IApplicationConfigRepository applicationConfigRepository, IEmailTemplateRepository emailTemplateRepository, IOffersRepository offersRepository, IPlanEventsMappingRepository planEventsMappingRepository, IOfferAttributesRepository offerAttributesRepository, IEventsRepository eventsRepository, CloudStorageConfigs cloudConfigs)
 {
     this.apiClient = apiClient;
     this.subscriptionRepository    = subscriptionRepo;
     this.subscriptionLogRepository = subscriptionLogsRepo;
     this.applicationLogRepository  = applicationLogRepository;
     this.planRepository            = planRepository;
     this.userRepository            = userRepository;
     this.userService                 = new UserService(this.userRepository);
     this.subscriptionService         = new SubscriptionService(this.subscriptionRepository, this.planRepository);
     this.applicationLogService       = new ApplicationLogService(this.applicationLogRepository);
     this.applicationConfigRepository = applicationConfigRepository;
     this.emailTemplateRepository     = emailTemplateRepository;
     this.planEventsMappingRepository = planEventsMappingRepository;
     this.offerAttributesRepository   = offerAttributesRepository;
     this.logger              = logger;
     this.offersRepository    = offersRepository;
     this.planService         = new PlanService(this.planRepository, this.offerAttributesRepository, this.offersRepository);
     this.eventsRepository    = eventsRepository;
     this.cloudConfigs        = cloudConfigs;
     this.azureWebJobsStorage = cloudConfigs.AzureWebJobsStorage;
 }
Example #5
0
        /// <summary>
        /// Configures the services.
        /// </summary>
        /// <param name="services">The services.</param>
        public void ConfigureServices(IServiceCollection services)
        {
            var loggerFactory = LoggerFactory.Create(builder =>
            {
                builder
                .AddConsole();
            });

            services.Configure <CookiePolicyOptions>(options =>
            {
                // This lambda determines whether user consent for non-essential cookies is needed for a given request.
                options.CheckConsentNeeded    = context => true;
                options.MinimumSameSitePolicy = SameSiteMode.None;
            });

            var config = new SaaSApiClientConfiguration()
            {
                AdAuthenticationEndPoint = this.Configuration["SaaSApiConfiguration:AdAuthenticationEndPoint"],
                ClientId              = this.Configuration["SaaSApiConfiguration:ClientId"],
                ClientSecret          = this.Configuration["SaaSApiConfiguration:ClientSecret"],
                FulFillmentAPIBaseURL = this.Configuration["SaaSApiConfiguration:FulFillmentAPIBaseURL"],
                FulFillmentAPIVersion = this.Configuration["SaaSApiConfiguration:FulFillmentAPIVersion"],
                GrantType             = this.Configuration["SaaSApiConfiguration:GrantType"],
                Resource              = this.Configuration["SaaSApiConfiguration:Resource"],
                SaaSAppUrl            = this.Configuration["SaaSApiConfiguration:SaaSAppUrl"],
                SignedOutRedirectUri  = this.Configuration["SaaSApiConfiguration:SignedOutRedirectUri"],
                TenantId              = this.Configuration["SaaSApiConfiguration:TenantId"],
            };
            var cloudConfig = new CloudStorageConfigs
            {
                AzureWebJobsStorage = this.Configuration["AzureWebJobsStorage"],
            };

            services.AddAuthentication(options =>
            {
                options.DefaultAuthenticateScheme = OpenIdConnectDefaults.AuthenticationScheme;
                options.DefaultSignInScheme       = CookieAuthenticationDefaults.AuthenticationScheme;
                options.DefaultChallengeScheme    = CookieAuthenticationDefaults.AuthenticationScheme;
            })

            .AddOpenIdConnect(options =>
            {
                options.Authority            = $"{config.AdAuthenticationEndPoint}/common";
                options.ClientId             = config.ClientId;
                options.ResponseType         = OpenIdConnectResponseType.IdToken;
                options.CallbackPath         = "/Home/Index";
                options.SignedOutRedirectUri = config.SignedOutRedirectUri;
                options.TokenValidationParameters.NameClaimType  = "name";
                options.TokenValidationParameters.ValidateIssuer = false;
            })
            .AddCookie();

            services.AddSingleton <IFulfillmentApiClient>(new FulfillmentApiClient(config, new FulfillmentApiClientLogger()));
            services.AddSingleton <IMeteredBillingApiClient>(new MeteredBillingApiClient(config, new MeteringApiClientLogger()));
            services.AddSingleton <SaaSApiClientConfiguration>(config);
            services.AddSingleton <CloudStorageConfigs>(cloudConfig);
            services.AddDbContext <SaasKitContext>(options =>
                                                   options.UseSqlServer(this.Configuration.GetConnectionString("DefaultConnection")));

            InitializeRepositoryServices(services);

            services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_3_0);
            services.AddMvc(option => option.EnableEndpointRouting = false);
            services.AddControllersWithViews();
        }