Du kannst nicht mehr als 25 Themen auswählen Themen müssen mit entweder einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.

WebAppBuilder.cs 3.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. using Diligent.WebAPI.Business.MongoServices;
  2. using Diligent.WebAPI.Data;
  3. using Diligent.WebAPI.Host.Hubs;
  4. using Diligent.WebAPI.Data.Entities;
  5. using Diligent.WebAPI.Host.Mapper;
  6. using MediatR;
  7. using Microsoft.AspNetCore.Authentication.JwtBearer;
  8. using Microsoft.AspNetCore.SignalR;
  9. using Serilog;
  10. using System.Reflection;
  11. using Microsoft.AspNetCore.Identity;
  12. using Microsoft.IdentityModel.Tokens;
  13. using System.Text;
  14. using Diligent.WebAPI.Business.Services;
  15. namespace Diligent.WebAPI.Host.Extensions;
  16. public static class WebAppBuilder
  17. {
  18. public static void ConfigureData(this WebApplicationBuilder builder, IConfiguration configuration)
  19. {
  20. builder.Services.ConfigureData(configuration);
  21. // database configuration
  22. builder.Services.Configure<WebApiDatabaseSettings>(
  23. builder.Configuration.GetSection("WebApiDB"));
  24. builder.Services.AddAutoMapper(typeof(InsurerMappingProfile));
  25. builder.Services.AddAutoMapper(typeof(CompanyMappingProfile));
  26. builder.Services.AddAutoMapper(typeof(PolicyMappingProfiles));
  27. builder.Services.AddAutoMapper(typeof(RequestMappingProfile));
  28. builder.Services.AddScoped<IAuthenticationService, AuthenticationService>();
  29. //builder.Services.AddScoped<IInsuranceCompanyService, InsuranceCompanyService>();
  30. // mongo service life cycle
  31. builder.Services.AddScoped<ICustomerService, CustomerService>();
  32. builder.Services.AddSingleton<InsuranceCompanyService>();
  33. builder.Services.AddSingleton<InsurancePolicyService>();
  34. builder.Services.AddSingleton<InsurerService>();
  35. builder.Services.AddSingleton<RoomService>();
  36. builder.Services.AddSingleton<RequestService>();
  37. builder.Services.AddMediatR(Assembly.GetExecutingAssembly());
  38. builder.Services.AddSignalR();
  39. var mongoDbSettings = configuration.GetSection("WebApiDB");
  40. builder.Services.AddIdentity<Customer, Roles>()
  41. .AddMongoDbStores<Customer, Roles, Guid>
  42. (
  43. mongoDbSettings["ConnectionString"], mongoDbSettings["DatabaseName"]
  44. );
  45. var jwtSettings = configuration.GetSection("JwtSettings");
  46. builder.Services.AddAuthentication(opt =>
  47. {
  48. opt.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
  49. opt.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
  50. })
  51. .AddJwtBearer(options =>
  52. {
  53. options.TokenValidationParameters = new TokenValidationParameters
  54. {
  55. ValidateIssuer = true,
  56. ValidateAudience = true,
  57. ValidateLifetime = true,
  58. ValidateIssuerSigningKey = true,
  59. ValidIssuer = jwtSettings.GetSection("validIssuer").Value,
  60. ValidAudience = jwtSettings.GetSection("validAudience").Value,
  61. IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(jwtSettings["jwtSecret"]))
  62. };
  63. });
  64. builder.Services.AddCors(options =>
  65. {
  66. options.AddPolicy("ClientPermission", policy =>
  67. {
  68. policy.AllowAnyHeader()
  69. .AllowAnyMethod()
  70. .WithOrigins("http://localhost:3000")
  71. .AllowCredentials();
  72. });
  73. });
  74. var logger = new LoggerConfiguration()
  75. .ReadFrom.Configuration(builder.Configuration)
  76. .Enrich.FromLogContext()
  77. .CreateLogger();
  78. builder.Logging.ClearProviders();
  79. builder.Logging.AddSerilog(logger);
  80. builder.Services.AddSingleton<Serilog.ILogger>(Log.Logger);
  81. // SignalR group chat configuration
  82. builder.Services.AddSingleton<IDictionary<string, UserConnection>>(opts => new Dictionary<string, UserConnection>());
  83. }
  84. }