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 2.7KB

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