using DutchTreat.Data; using DutchTreat.Data.Entities; using DutchTreat.Services; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Identity; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using Microsoft.IdentityModel.Tokens; using Newtonsoft.Json; using System.Reflection; using System.Text; namespace DutchTreat { public class Startup { private readonly IConfiguration _config; public Startup(IConfiguration config) { _config = config; } // This method gets called by the runtime. Use this method to add services to the container. // For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=398940 public void ConfigureServices(IServiceCollection services) { services.AddIdentity(cfg => { cfg.User.RequireUniqueEmail = true; }).AddEntityFrameworkStores(); services.AddAuthentication() .AddCookie() .AddJwtBearer(cfg => { cfg.TokenValidationParameters = new TokenValidationParameters() { ValidIssuer = _config["Token:Issuer"], ValidAudience = _config["Token:Audience"], IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_config["Token:Key"])) }; }); services.AddDbContext(cfg => { cfg.UseSqlServer(_config.GetConnectionString("DutchConnectionString")); }); services.AddAutoMapper(Assembly.GetExecutingAssembly()); services.AddTransient(); services.AddTransient(); services.AddScoped(); services.AddMvc() .AddRazorRuntimeCompilation() .AddNewtonsoftJson(cfg => cfg.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore); } // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { if (env.IsEnvironment("Development")) { app.UseDeveloperExceptionPage(); // --> For debug } else { app.UseExceptionHandler("/error"); } app.UseStaticFiles(); //app.UseDefaultFiles(); //Routing MVC app.UseRouting(); app.UseAuthentication(); app.UseAuthorization(); app.UseEndpoints(cfg => { cfg.MapRazorPages(); cfg.MapControllerRoute("Default", "/{controller}/{action}/{id?}", new { controller = "App", action = "Index" }); }); } } }