public TimetableDbContext CreateDbContext(string[] args) { var dbContextConfiguration = new TimetableDbContextConfiguration(); var dbContextBuilder = new DbContextOptionsBuilder <TimetableDbContext>(); dbContextBuilder.UseNpgsql(dbContextConfiguration.ConnectionString); return(new TimetableDbContext(dbContextBuilder.Options)); }
// This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { var dbContextConfiguration = new TimetableDbContextConfiguration(Configuration); services.AddDbContext <TimetableDbContext>( options => options.UseNpgsql(dbContextConfiguration.ConnectionString), ServiceLifetime.Transient); services.AddScoped <IUnitOfWork, UnitOfWork>(); services.AddAutoMapper(typeof(Startup)); services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_3_0); services.AddSwaggerGen(c => { c.SwaggerDoc("v1", new OpenApiInfo { Title = "My API", Version = "v1" }); }); services.AddCors(); // configure strongly typed settings objects var appSettingsSection = Configuration.GetSection("AppSettings"); services.Configure <AppSettings>(appSettingsSection); // configure jwt authentication var appSettings = appSettingsSection.Get <AppSettings>(); var key = Encoding.ASCII.GetBytes(appSettings.Secret); services.AddAuthentication(x => { x.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme; x.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme; }) .AddJwtBearer(x => { x.RequireHttpsMetadata = false; x.SaveToken = true; x.TokenValidationParameters = new TokenValidationParameters { ValidateIssuerSigningKey = true, IssuerSigningKey = new SymmetricSecurityKey(key), ValidateIssuer = false, ValidateAudience = false }; }); }