-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathStartup.cs
More file actions
100 lines (89 loc) · 3.85 KB
/
Startup.cs
File metadata and controls
100 lines (89 loc) · 3.85 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Identity;
using Microsoft.AspNetCore.Identity.UI;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.HttpsPolicy;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using AcademyManager.Models;
using AutoMapper;
using AcademyManager.Mappings;
using AcademyManager.Repository;
using AcademyManager.Contracts;
namespace AcademyManager
{
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.
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<AppDbContext>(options =>
options.UseSqlServer(
Configuration.GetConnectionString("DefaultConnection")));
services.AddScoped<IScoresRepository, ScoresRepository>();
services.AddScoped<ICoursesRepository, CoursesRepository>();
services.AddScoped<ITestsAndExamsRepository, TestsAndExamsRepository>();
services.AddScoped<ISerialStoreRepository, SerialStoreRepository>();
services.AddAutoMapper(typeof(Maps));
services.AddIdentity<AMUser, IdentityRole>().AddEntityFrameworkStores<AppDbContext>();
//services.AddDefaultIdentity<IdentityUser>(options => options.SignIn.RequireConfirmedAccount = true)
// .AddEntityFrameworkStores<AppDbContext>();
services.AddControllersWithViews();
services.AddAuthorization(option =>
{
option.AddPolicy("RootAdminPolicy", policy => policy.RequireUserName("admin@localhost.com"));
});
services.AddRazorPages();
//services.Configure<IISServerOptions>(options =>
//{
// options.AutomaticAuthentication = false;
//});
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
/*
This memthod injects usermanager and role manager so that whenever the application is ran, the class that checks if
the default user and all application roles already exist is executed and the default user and roles are created if they
do not exist when the app is ran for the first time
*/
public void Configure(IApplicationBuilder app, IWebHostEnvironment env, UserManager<AMUser> userManager,
RoleManager<IdentityRole> roleManager)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
app.UseDatabaseErrorPage();
}
else
{
app.UseExceptionHandler("/Home/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.UseStaticFiles();
app.UseRouting();
app.UseAuthentication();
app.UseAuthorization();
// The default user and roles creating class is called here
DefaultUserssAndRoles.CreateDefaultUsersAndRoles(userManager, roleManager);
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Welcome}/{action=Index}/{id?}");
endpoints.MapRazorPages();
});
}
}
}