Esempio n. 1
0
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddMvc(options => {
                if (!Environment.IsEnvironment("Localhost"))
                {
                    options.Filters.Add(new RequireHttpsAttribute());
                }
            })
            .AddJsonOptions(options => {
                options.SerializerSettings.ContractResolver =
                    new CamelCasePropertyNamesContractResolver();
                options.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
            });

            services.AddAuthorization(options => {
                void ActionWithContext(Action <ConfigStoreContext> action)
                {
                    using (ConfigStoreContext context = services.BuildServiceProvider().GetService <ConfigStoreContext>()) {
                        action(context);
                    }
                }

                options.AddPolicy("application", builder => {
                    builder.Requirements.Add(new AuthorizationApplicationHandler(ActionWithContext));
                });

                options.AddPolicy("service", builder => {
                    builder.Requirements.Add(new AuthorizationServiceHandler(ActionWithContext));
                });

                options.AddPolicy("environment", builder => {
                    builder.Requirements.Add(new AuthorizationEnvironmentHandler(ActionWithContext));
                });
            });

            services.AddAuthentication(options => options.DefaultScheme = JwtBearerDefaults.AuthenticationScheme)
            .AddJwtBearer();

            services.AddSwaggerGen(options => {
                options.SwaggerDoc("v1", new Info {
                    Title = "Storage API", Version = "v1"
                });
                options.OperationFilter <SwaggerAuthorizationHeaderParameters>();
            });

            services.AddSingleton(Configuration);
            services.AddSingleton(Environment);

            services.AddDbContext <ConfigStoreContext>(
                options => options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));

            services.AddScoped(provider => new KeyVaultClient(GetAccessToken));

            services.AddSingleton(Configuration);
            services.AddScoped <ConfigClient>();
            services.AddScoped <DefaultDataInitializer>();
            services.AddScoped(typeof(RenameModelActionHandler <>));
            services.AddScoped(typeof(CanAddModelActionHandler <>));
        }
Esempio n. 2
0
 public ApplicationController(ConfigStoreContext context,
                              ConfigClient client,
                              DefaultDataInitializer defaultDataInitializer,
                              RenameModelActionHandler <Application> renameModelActionHandler,
                              CanAddModelActionHandler <Application> canAddModelActionHandler)
 {
     _context = context;
     _client  = client;
     _defaultDataInitializer   = defaultDataInitializer;
     _renameModelActionHandler = renameModelActionHandler;
     _canAddModelActionHandler = canAddModelActionHandler;
 }
Esempio n. 3
0
 public EnvironmentController(ConfigStoreContext context,
                              ConfigClient client,
                              DefaultDataInitializer defaultDataInitializer,
                              RenameModelActionHandler <ServiceEnvironment> renameModelActionHandler,
                              CanAddModelActionHandler <ServiceEnvironment> canAddModelActionHandler)
 {
     _context = context;
     _client  = client;
     _defaultDataInitializer   = defaultDataInitializer;
     _renameModelActionHandler = renameModelActionHandler;
     _canAddModelActionHandler = canAddModelActionHandler;
 }
Esempio n. 4
0
        private static async Task InitializeDbAsync(IApplicationBuilder app)
        {
            using (IServiceScope serviceScope = app.ApplicationServices.GetService <IServiceScopeFactory>().CreateScope()) {
                ConfigStoreContext context = serviceScope.ServiceProvider.GetRequiredService <ConfigStoreContext>();
                context.Database.SetCommandTimeout(TimeSpan.FromMinutes(5));
                await context.Database.MigrateAsync();

                ConfigClient client = serviceScope.ServiceProvider.GetRequiredService <ConfigClient>();
                await client.ClearAsync();

                DbInitializer initializer = new DbInitializer(context, client);
                await initializer.SeedAsync();
            }
        }
Esempio n. 5
0
 public RenameModelActionHandler(ConfigStoreContext context)
 {
     _context = context;
 }
Esempio n. 6
0
 public CanAddModelActionHandler(ConfigStoreContext context)
 {
     _context = context;
 }