private void _registerServices() { // Add framework services. NpgsqlLogManager.IsParameterLoggingEnabled = true; _services.AddLogging(); _services.AddScoped <DbConnection, NpgsqlConnection>((svc) => new NpgsqlConnection(_configuration.GetConnectionString("Default"))); _services.AddScoped <NpgsqlConnection>((svc) => new NpgsqlConnection(_configuration.GetConnectionString("Default"))); var signingKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_configuration.GetSection("Kroeg")["TokenSigningKey"])); var tokenSettings = new JwtTokenSettings { Audience = _configuration.GetSection("Kroeg")["BaseUri"], Issuer = _configuration.GetSection("Kroeg")["BaseUri"], ExpiryTime = TimeSpan.FromDays(30), Credentials = new SigningCredentials(signingKey, SecurityAlgorithms.HmacSha256), ValidationParameters = new TokenValidationParameters { ValidateIssuerSigningKey = true, IssuerSigningKey = signingKey, ValidateIssuer = true, ValidIssuer = _configuration.GetSection("Kroeg")["BaseUri"], ValidateAudience = true, ValidAudience = _configuration.GetSection("Kroeg")["BaseUri"], ValidateLifetime = true, ClockSkew = TimeSpan.Zero } }; _services.AddSingleton(tokenSettings); _services.AddSingleton(new EntityData(_configuration.GetSection("Kroeg")) { EntityNames = _configuration.GetSection("EntityNames") }); _services.AddScoped <INotifier, LocalNotifier>(); _services.AddSingleton <BackgroundTaskQueuer>(); _services.AddSingleton(_configuration); _services.AddSingleton <IHttpContextAccessor, HttpContextAccessor>(); _services.AddTransient <DeliveryService>(); _services.AddTransient <RelevantEntitiesService>(); _services.AddTransient <ActivityService>(); _services.AddTransient <AtomEntryParser>(); _services.AddTransient <AtomEntryGenerator>(); _services.AddScoped <TripleEntityStore>(); _services.AddScoped <CollectionTools>(); _services.AddScoped <FakeEntityService>(); _services.AddScoped <EntityFlattener>(); _services.AddScoped <KeyService>(); _services.AddScoped <IEntityStore>((provider) => { var triple = provider.GetRequiredService <TripleEntityStore>(); var flattener = provider.GetRequiredService <EntityFlattener>(); var httpAccessor = new _nullHttpContextAccessor(); var fakeEntityService = provider.GetService <FakeEntityService>(); var retrieving = new RetrievingEntityStore(triple, flattener, provider, httpAccessor); return(new FakeEntityStore(fakeEntityService, retrieving)); }); _services.AddTransient <TemplateService>(); _services.AddTransient <SignatureVerifier>(); _services.AddScoped <DatabaseManager>(); _services.AddTransient <Commands.GetCommand>(); _services.AddTransient <Commands.AttributeCommand>(); _services.AddTransient <Commands.TriplesCommand>(); _services.AddTransient <Commands.RefreshCommand>(); _services.AddTransient <Commands.CalculateVisibilityCommand>(); }
// This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { // Add framework services. services.AddMvc(); services.AddScoped <NpgsqlConnection>((svc) => new NpgsqlConnection(Configuration.GetConnectionString("Default"))); services.AddScoped <DbConnection, NpgsqlConnection>((svc) => svc.GetService <NpgsqlConnection>()); services.AddTransient <IUserStore <APUser>, KroegUserStore>(); services.AddTransient <IUserPasswordStore <APUser>, KroegUserStore>(); services.AddTransient <IRoleStore <IdentityRole>, KroegUserStore>(); services.AddIdentity <APUser, IdentityRole>() .AddDefaultTokenProviders(); services.AddAuthorization(options => { options.AddPolicy("admin", policy => policy.RequireClaim("admin")); options.AddPolicy("pass", policy => policy.AddAuthenticationSchemes(IdentityConstants.ApplicationScheme).RequireAuthenticatedUser()); }); services.Configure <IdentityOptions>(options => { options.Password.RequireDigit = false; options.Password.RequiredLength = 0; options.Password.RequireNonAlphanumeric = false; options.Password.RequireUppercase = false; options.Password.RequireLowercase = false; }); var signingKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(Configuration.GetSection("Kroeg")["TokenSigningKey"])); var tokenSettings = new JwtTokenSettings { Audience = Configuration.GetSection("Kroeg")["BaseUri"], Issuer = Configuration.GetSection("Kroeg")["BaseUri"], ExpiryTime = TimeSpan.FromDays(30), Credentials = new SigningCredentials(signingKey, SecurityAlgorithms.HmacSha256), ValidationParameters = new TokenValidationParameters { ValidateIssuerSigningKey = true, IssuerSigningKey = signingKey, ValidateIssuer = true, ValidIssuer = Configuration.GetSection("Kroeg")["BaseUri"], ValidateAudience = true, ValidAudience = Configuration.GetSection("Kroeg")["BaseUri"], ValidateLifetime = true, ClockSkew = TimeSpan.Zero } }; services.AddSingleton(tokenSettings); services.AddSingleton(new EntityData(Configuration.GetSection("Kroeg")) { EntityNames = Configuration.GetSection("EntityNames") }); services.AddScoped <INotifier, LocalNotifier>(); services.AddSingleton(Configuration); services.AddTransient <IAuthorizer, DefaultAuthorizer>(); services.AddTransient <DeliveryService>(); services.AddTransient <RelevantEntitiesService>(); services.AddTransient <ActivityService>(); services.AddTransient <AtomEntryParser>(); services.AddTransient <AtomEntryGenerator>(); services.AddScoped <TripleEntityStore>(); services.AddScoped <CollectionTools>(); services.AddScoped <FakeEntityService>(); services.AddScoped <EntityFlattener>(); services.AddScoped <KeyService>(); services.AddScoped <IEntityStore>((provider) => { var triple = provider.GetRequiredService <TripleEntityStore>(); var flattener = provider.GetRequiredService <EntityFlattener>(); var httpAccessor = provider.GetService <IHttpContextAccessor>(); var fakeEntityService = provider.GetService <FakeEntityService>(); var retrieving = new RetrievingEntityStore(triple, flattener, provider, httpAccessor); return(new FakeEntityStore(fakeEntityService, retrieving)); }); services.AddSingleton <TemplateService>(); services.AddTransient <SignatureVerifier>(); services.AddAuthentication(o => { o.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme; o.DefaultChallengeScheme = IdentityConstants.ApplicationScheme; o.DefaultSignInScheme = IdentityConstants.ApplicationScheme; }) .AddJwtBearer((options) => { options.TokenValidationParameters = tokenSettings.ValidationParameters; options.Audience = Configuration.GetSection("Kroeg")["BaseUri"]; options.ClaimsIssuer = Configuration.GetSection("Kroeg")["BaseUri"]; }); services.ConfigureApplicationCookie((options) => { options.Cookie.Name = "Kroeg.Auth"; options.LoginPath = "/auth/login"; }); var typeMap = new Dictionary <string, Type>(); foreach (var module in Configuration.GetSection("Kroeg").GetSection("Modules").GetChildren()) { var assembly = AssemblyLoadContext.Default.LoadFromAssemblyPath(Path.Combine(Directory.GetCurrentDirectory(), module.Value)); foreach (var type in assembly.GetTypes()) { if (type.IsSubclassOf(typeof(BaseHandler))) { typeMap[type.FullName] = type; } } } foreach (var extra in Configuration.GetSection("Kroeg").GetSection("Filters").GetChildren()) { if (typeMap.ContainsKey(extra.Value)) { EntityData.ExtraFilters.Add(typeMap[extra.Value]); } } services.AddScoped <DatabaseManager>(); }
// This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { // Add framework services. services.AddMvc(); services.AddDbContext <APContext>(options => options.UseNpgsql(Configuration.GetConnectionString("Default")).EnableSensitiveDataLogging()); services.AddIdentity <APUser, IdentityRole>() .AddEntityFrameworkStores <APContext>() .AddDefaultTokenProviders(); services.AddAuthorization(options => { options.AddPolicy("admin", policy => policy.RequireClaim("admin")); options.AddPolicy("pass", policy => policy.AddAuthenticationSchemes(IdentityConstants.ApplicationScheme).RequireAuthenticatedUser()); }); services.Configure <IdentityOptions>(options => { options.Password.RequireDigit = false; options.Password.RequiredLength = 0; options.Password.RequireNonAlphanumeric = false; options.Password.RequireUppercase = false; options.Password.RequireLowercase = false; }); var signingKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(Configuration.GetSection("Kroeg")["TokenSigningKey"])); var tokenSettings = new JwtTokenSettings { Audience = Configuration.GetSection("Kroeg")["BaseUri"], Issuer = Configuration.GetSection("Kroeg")["BaseUri"], ExpiryTime = TimeSpan.FromDays(30), Credentials = new SigningCredentials(signingKey, SecurityAlgorithms.HmacSha256), ValidationParameters = new TokenValidationParameters { ValidateIssuerSigningKey = true, IssuerSigningKey = signingKey, ValidateIssuer = true, ValidIssuer = Configuration.GetSection("Kroeg")["BaseUri"], ValidateAudience = true, ValidAudience = Configuration.GetSection("Kroeg")["BaseUri"], ValidateLifetime = true, ClockSkew = TimeSpan.Zero } }; services.AddSingleton(tokenSettings); services.AddSingleton(new EntityData(Configuration.GetSection("Kroeg")) { EntityNames = Configuration.GetSection("EntityNames") }); var redis = Configuration.GetSection("Kroeg").GetValue <string>("Redis", null); if (!string.IsNullOrEmpty(redis)) { services.AddSingleton(new RedisNotifierBase(redis)); services.AddTransient <INotifier>((a) => ActivatorUtilities.CreateInstance <RedisNotifier>(a)); } else { services.AddSingleton <INotifier>(new LocalNotifier()); } services.AddSingleton <BackgroundTaskQueuer>(); services.AddSingleton(Configuration); services.AddTransient <EntityFlattener>(); services.AddTransient <CollectionTools>(); services.AddTransient <DeliveryService>(); services.AddTransient <RelevantEntitiesService>(); services.AddTransient <DatabaseEntityStore>(); services.AddTransient <ActivityService>(); services.AddTransient <AtomEntryParser>(); services.AddTransient <AtomEntryGenerator>(); services.AddTransient <FakeEntityService>(); services.AddTransient <IEntityStore>((provider) => { var dbservice = provider.GetRequiredService <DatabaseEntityStore>(); var flattener = provider.GetRequiredService <EntityFlattener>(); var httpAccessor = provider.GetService <IHttpContextAccessor>(); var fakeEntityService = provider.GetService <FakeEntityService>(); var retrieving = new RetrievingEntityStore(dbservice, flattener, provider, httpAccessor); return(new FakeEntityStore(fakeEntityService, retrieving)); }); services.AddTransient <TemplateService>(); services.AddTransient <SignatureVerifier>(); services.AddAuthentication(o => { o.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme; o.DefaultChallengeScheme = IdentityConstants.ApplicationScheme; o.DefaultSignInScheme = IdentityConstants.ApplicationScheme; }) .AddJwtBearer((options) => { options.TokenValidationParameters = tokenSettings.ValidationParameters; options.Audience = Configuration.GetSection("Kroeg")["BaseUri"]; options.ClaimsIssuer = Configuration.GetSection("Kroeg")["BaseUri"]; }); services.ConfigureApplicationCookie((options) => { options.Cookie.Name = "Kroeg.Auth"; options.LoginPath = "/auth/login"; }); }