2021-05-21 18:32:25 +00:00
using Microsoft.AspNetCore.Authentication ;
using Microsoft.AspNetCore.Builder ;
using Microsoft.AspNetCore.HttpsPolicy ;
using Microsoft.AspNetCore.Hosting ;
using Microsoft.AspNetCore.ResponseCompression ;
using Microsoft.EntityFrameworkCore ;
using Microsoft.Extensions.Configuration ;
using Microsoft.Extensions.DependencyInjection ;
using Microsoft.Extensions.Hosting ;
using System.Linq ;
using MultiShop.Server.Data ;
using MultiShop.Server.Models ;
2021-05-25 23:09:06 +00:00
using Microsoft.AspNetCore.Identity ;
using System.Security.Claims ;
2021-05-21 18:32:25 +00:00
namespace MultiShop.Server
{
public class Startup
{
public Startup ( IConfiguration configuration )
{
Configuration = configuration ;
}
public IConfiguration Configuration { get ; }
// 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 )
{
2021-05-25 23:09:06 +00:00
services . AddDbContext < ApplicationDbContext > ( options = > {
options . UseLazyLoadingProxies ( ) ;
options . UseSqlite ( Configuration . GetConnectionString ( "DefaultConnection" ) ) ;
} ) ;
2021-05-21 18:32:25 +00:00
services . AddDatabaseDeveloperPageExceptionFilter ( ) ;
services . AddDefaultIdentity < ApplicationUser > ( options = > options . SignIn . RequireConfirmedAccount = true )
. AddEntityFrameworkStores < ApplicationDbContext > ( ) ;
services . AddIdentityServer ( )
. AddApiAuthorization < ApplicationUser , ApplicationDbContext > ( ) ;
2021-05-25 23:09:06 +00:00
services . Configure < IdentityOptions > ( Options = > Options . ClaimsIdentity . UserIdClaimType = ClaimTypes . NameIdentifier ) ; //Note: Despite default, doesn't work without this.
2021-05-21 18:32:25 +00:00
services . AddAuthentication ( )
. AddIdentityServerJwt ( ) ;
services . AddControllersWithViews ( ) ;
services . AddRazorPages ( ) ;
}
// 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 . IsDevelopment ( ) )
{
app . UseDeveloperExceptionPage ( ) ;
app . UseMigrationsEndPoint ( ) ;
app . UseWebAssemblyDebugging ( ) ;
}
else
{
app . UseExceptionHandler ( "/Error" ) ;
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app . UseHsts ( ) ;
}
app . UseHttpsRedirection ( ) ;
app . UseBlazorFrameworkFiles ( ) ;
app . UseStaticFiles ( ) ;
app . UseRouting ( ) ;
app . UseIdentityServer ( ) ;
app . UseAuthentication ( ) ;
app . UseAuthorization ( ) ;
app . UseEndpoints ( endpoints = >
{
endpoints . MapRazorPages ( ) ;
endpoints . MapControllers ( ) ;
endpoints . MapFallbackToFile ( "index.html" ) ;
} ) ;
}
}
}