Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.

Startup.cs 3.3KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. using Microsoft.AspNetCore.Builder;
  2. using Microsoft.AspNetCore.Hosting;
  3. using Microsoft.AspNetCore.Identity;
  4. using Microsoft.Extensions.Configuration;
  5. using Microsoft.Extensions.DependencyInjection;
  6. using Microsoft.Extensions.Hosting;
  7. using Quartz;
  8. using Quartz.Impl;
  9. using Quartz.Spi;
  10. using SecureSharing.Business.Infrastructure;
  11. using SecureSharing.Business.Infrastructure.Extensions;
  12. using SecureSharing.Business.Infrastructure.Settings;
  13. using SecureSharing.Business.Interfaces;
  14. using SecureSharing.Business.Services;
  15. using SecureSharing.Data.DbContexts;
  16. using SecureSharing.Infrastructure;
  17. using SecureSharing.Infrastructure.Middleware;
  18. using SecureSharing.Quartz;
  19. namespace SecureSharing;
  20. public sealed class Startup
  21. {
  22. public Startup(IConfiguration configuration)
  23. {
  24. Configuration = configuration;
  25. }
  26. public IConfiguration Configuration { get; }
  27. // This method gets called by the runtime. Use this method to add services to the container.
  28. public void ConfigureServices(IServiceCollection services)
  29. {
  30. StartupConfiguration.ConfigureStartupConfig<EmailSettings>(services, Configuration);
  31. services.AddControllersWithViews();
  32. services.AddRazorPages();
  33. StartupExtensions.ConfigureServices(services);
  34. services.AddDefaultIdentity<IdentityUser>(options => options.SignIn.RequireConfirmedAccount = false)
  35. .AddDefaultUI()
  36. .AddRoles<IdentityRole>()
  37. .AddEntityFrameworkStores<AppDbContext>();
  38. services.AddScoped<IMessageService, MessageService>();
  39. services.AddScoped<IModelFactory, ModelFactory>();
  40. services.AddAuthentication()
  41. .AddGoogle(options =>
  42. {
  43. options.ClientId = Configuration.GetSection("EmailSettings").GetSection("ClientId").Value;
  44. options.ClientSecret = Configuration.GetSection("EmailSettings").GetSection("ClientSecret").Value;
  45. });
  46. // Add Quartz services
  47. services.AddSingleton<IJobFactory, JobFactory>();
  48. services.AddSingleton<ISchedulerFactory, StdSchedulerFactory>();
  49. // Add our jobs
  50. services.AddScoped<MessageDeletionJob>();
  51. services.AddSingleton(new JobMetadata(
  52. typeof(MessageDeletionJob),
  53. "0 0 12 * * ?"));
  54. services.AddHostedService<JobsService>();
  55. }
  56. // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
  57. public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
  58. {
  59. if (env.IsDevelopment())
  60. {
  61. app.UseDeveloperExceptionPage();
  62. }
  63. else
  64. {
  65. app.UseExceptionHandler("/Home/Error");
  66. // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
  67. app.UseHsts();
  68. }
  69. app.UseHttpsRedirection();
  70. app.UseStaticFiles();
  71. app.UseRouting();
  72. app.UseAuthentication();
  73. app.UseAuthorization();
  74. app.UseMiddleware(typeof(ExceptionHandlingMiddleware));
  75. app.UseEndpoints(endpoints =>
  76. {
  77. endpoints.MapControllerRoute(
  78. "default",
  79. "{controller=Home}/{action=Index}/{id?}");
  80. endpoints.MapRazorPages();
  81. });
  82. }
  83. }