2 using System.Collections.Generic;
4 using Microsoft.AspNetCore.Authentication.Cookies;
5 using Microsoft.AspNetCore.Builder;
6 using Microsoft.AspNetCore.Identity;
7 using Microsoft.AspNetCore.Hosting;
8 using Microsoft.AspNetCore.Http;
9 using Microsoft.AspNetCore.Localization;
10 using Microsoft.AspNetCore.Mvc;
11 using Microsoft.AspNetCore.Mvc.Razor;
12 using Microsoft.EntityFrameworkCore;
13 using Microsoft.Extensions.Configuration;
14 using Microsoft.Extensions.DependencyInjection;
15 using Rotativa.AspNetCore;
16 using Microsoft.Extensions.Options;
27 public Startup(IConfiguration configuration)
29 Configuration = configuration;
32 private IConfiguration Configuration {
get; }
37 services.Configure<CookiePolicyOptions>(options =>
40 options.CheckConsentNeeded = context =>
true;
41 options.MinimumSameSitePolicy = SameSiteMode.None;
45 options.UseSqlite(Configuration.GetConnectionString(
"DefaultConnection"),
46 b => b.MigrationsAssembly(
"ScientificReport"))
50 .AddEntityFrameworkStores<ScientificReportDbContext>()
51 .AddDefaultTokenProviders();
71 services.Configure<IdentityOptions>(options =>
75 options.Password.RequireDigit =
false;
76 options.Password.RequireLowercase =
false;
77 options.Password.RequireNonAlphanumeric =
false;
78 options.Password.RequireUppercase =
false;
79 options.Password.RequiredLength = 3;
80 options.Password.RequiredUniqueChars = 0;
83 options.Lockout.DefaultLockoutTimeSpan = TimeSpan.FromDays(1);
84 options.Lockout.MaxFailedAccessAttempts = 5;
85 options.Lockout.AllowedForNewUsers =
true;
88 options.User.AllowedUserNameCharacters =
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._";
89 options.User.RequireUniqueEmail =
true;
92 services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme).AddCookie();
93 services.ConfigureApplicationCookie(options =>
96 options.Cookie.HttpOnly =
true;
97 options.ExpireTimeSpan = TimeSpan.FromDays(1);
98 options.LoginPath =
"/UserProfile/Login";
99 options.AccessDeniedPath =
"/Home/AccessDenied";
100 options.SlidingExpiration =
true;
103 services.AddLocalization(opts => { opts.ResourcesPath =
"Resources"; });
104 services.Configure<RequestLocalizationOptions>(
107 var supportedCultures =
new List<CultureInfo>
109 new CultureInfo(
"uk-UA"),
110 new CultureInfo(
"en")
113 opts.DefaultRequestCulture =
new RequestCulture(
"en");
115 opts.SupportedCultures = supportedCultures;
117 opts.SupportedUICultures = supportedCultures;
121 .SetCompatibilityVersion(CompatibilityVersion.Version_2_1)
122 .AddViewLocalization(
123 LanguageViewLocationExpanderFormat.Suffix,
124 opts => { opts.ResourcesPath =
"Resources"; })
125 .AddDataAnnotationsLocalization();
129 public void Configure(IApplicationBuilder app, IHostingEnvironment env)
131 if (env.IsDevelopment())
133 app.UseDeveloperExceptionPage();
134 app.UseDatabaseErrorPage();
138 app.UseExceptionHandler(
"/Home/Error");
141 app.UseHttpsRedirection();
142 app.UseStaticFiles();
143 app.UseCookiePolicy();
145 app.UseAuthentication();
147 var options = app.ApplicationServices.GetService<IOptions<RequestLocalizationOptions>>();
148 app.UseRequestLocalization(options.Value);
150 RotativaConfiguration.Setup(env);
156 "{controller=Home}/{action=Index}/{id?}");
Startup(IConfiguration configuration)
void ConfigureServices(IServiceCollection services)
void Configure(IApplicationBuilder app, IHostingEnvironment env)