You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

Program.cs 4.1KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. using BlackRock.Reporting.API.Authentication;
  2. using BlackRock.Reporting.API.Core.Models;
  3. using BlackRock.Reporting.API.Core.Interfaces;
  4. using BlackRock.Reporting.API.Persistence;
  5. using BlackRock.Reporting.API.Persistence.Repositories;
  6. using MediatR;
  7. using Microsoft.AspNetCore.Authentication.JwtBearer;
  8. using Microsoft.AspNetCore.Identity;
  9. using Microsoft.EntityFrameworkCore;
  10. using Microsoft.IdentityModel.Tokens;
  11. using Microsoft.OpenApi.Models;
  12. var builder = WebApplication.CreateBuilder(args);
  13. // Add services to the container.
  14. builder.Services.AddDbContext<BRDbContext>(config =>
  15. //config.UseSqlServer(builder.Configuration.GetConnectionString("Default")));
  16. config.UseSqlite(builder.Configuration.GetConnectionString("Default")));
  17. builder.Services.AddScoped<IGenerator, PdfGenerator>();
  18. builder.Services.AddScoped(typeof(IRepository<>), typeof(EFRepository<>));
  19. builder.Services.AddScoped<IUsersRepository, UsersRepository>();
  20. builder.Services.AddScoped<IUnitOfWork, UnitOfWork>();
  21. builder.Services.AddScoped<IJwtManager, JwtManager>();
  22. builder.Services.AddScoped<IRefreshTokenManager, RefreshTokenManager>();
  23. builder.Services.AddCors();
  24. builder.Services.AddControllers();
  25. builder.Services.AddAutoMapper(typeof(Program));
  26. builder.Services.AddIdentity<ApplicationUser, IdentityRole>()
  27. .AddTokenProvider("MyApp", typeof(DataProtectorTokenProvider<ApplicationUser>))
  28. .AddEntityFrameworkStores<BRDbContext>()
  29. .AddDefaultTokenProviders();
  30. builder.Services.AddAuthentication(options =>
  31. {
  32. options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
  33. options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
  34. options.DefaultScheme = JwtBearerDefaults.AuthenticationScheme;
  35. })
  36. .AddJwtBearer(options =>
  37. {
  38. options.SaveToken = true;
  39. options.RequireHttpsMetadata = false;
  40. options.TokenValidationParameters = new Microsoft.IdentityModel.Tokens.TokenValidationParameters()
  41. {
  42. ValidateIssuer = false,
  43. ValidateAudience = false,
  44. ValidateLifetime = true,
  45. RequireExpirationTime = true,
  46. IssuerSigningKey = new SymmetricSecurityKey(Convert.FromBase64String("db3OIsj+BXE9NZDy0t8W3TcNekrF+2d/1sFnWG4HnV8TZY30iTOdtVWJG8abWvB1GlOgJuQZdcF2Luqm/hccMw=="))
  47. //IssuerSigningKey = new SymmetricSecurityKey(Convert.FromBase64String(builder.Configuration["SecurityKey"]))
  48. };
  49. });
  50. // Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
  51. builder.Services.AddEndpointsApiExplorer();
  52. builder.Services.AddSwaggerGen(
  53. c =>
  54. {
  55. c.SwaggerDoc("v1", new Microsoft.OpenApi.Models.OpenApiInfo { Title = "BlackRock.Service.API", Version = "v1" });
  56. c.AddSecurityDefinition("Bearer", new Microsoft.OpenApi.Models.OpenApiSecurityScheme
  57. {
  58. Description = @"Enter 'Bearer' [space] and your token",
  59. Name = "Authorization",
  60. In = Microsoft.OpenApi.Models.ParameterLocation.Header,
  61. Type = Microsoft.OpenApi.Models.SecuritySchemeType.ApiKey,
  62. Scheme = "Bearer"
  63. });
  64. c.AddSecurityRequirement(new Microsoft.OpenApi.Models.OpenApiSecurityRequirement {
  65. {
  66. new OpenApiSecurityScheme
  67. {
  68. Reference = new OpenApiReference
  69. {
  70. Type = ReferenceType.SecurityScheme,
  71. Id = "Bearer"
  72. },
  73. Scheme = "OAuth2",
  74. Name = "Bearer",
  75. In = ParameterLocation.Header
  76. },
  77. new List<String>()
  78. }
  79. });
  80. }
  81. );
  82. builder.Services.AddMediatR(typeof(Program));
  83. var app = builder.Build();
  84. // Configure the HTTP request pipeline.
  85. // app.ConfigureExceptionHandler(builder.Logging);
  86. app.UseCors(options =>
  87. options.AllowAnyHeader()
  88. .AllowAnyMethod()
  89. .AllowAnyOrigin()
  90. );
  91. if (app.Environment.IsDevelopment())
  92. {
  93. app.UseSwagger();
  94. app.UseSwaggerUI();
  95. }
  96. app.UseHttpsRedirection();
  97. app.UseAuthentication();
  98. app.UseAuthorization();
  99. app.MapControllers();
  100. app.Run();