-
Notifications
You must be signed in to change notification settings - Fork 0
/
Program.cs
128 lines (91 loc) · 3.84 KB
/
Program.cs
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
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
using BlogProject.Services;
using BlogProject.Data;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Microsoft.AspNetCore.Builder;
using TheBlogProject.Services;
using BlogProject.ViewModels;
using BlogProject.Models;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Configuration;
using Microsoft.AspNetCore.Identity;
using BlogProject.Helpers;
using System;
using Microsoft.AspNetCore.Authentication.Twitter;
using TwitterOptions = Microsoft.AspNetCore.Authentication.Twitter.TwitterOptions;
var builder = WebApplication.CreateBuilder(args);
//Adding controller support
builder.Services.AddControllers();
//var connectionString = builder.Configuration.GetSection("pgSettings")["pgConnection"];
var connectionString = ConnectionHelper.GetConnectionString(builder.Configuration);
builder.Services.AddIdentity<BlogUser, IdentityRole>(options => options.SignIn.RequireConfirmedAccount = true)
.AddDefaultUI()
.AddDefaultTokenProviders()
.AddEntityFrameworkStores<ApplicationDbContext>();
var services = builder.Services;
var configuration = builder.Configuration;
builder.Services.AddAuthentication()
.AddMicrosoftAccount(microsoftOptions =>
{
microsoftOptions.ClientId = "d9cc4224-0405-4305-a1c9-778698deb25f";
microsoftOptions.ClientSecret = "aspnet-BlogProject-48C3A131-B5D2-497E-B4BB-0783925C7F62";
})
.AddGoogle(googleOptions =>
{
googleOptions.ClientId = "74931028186-4oaal9qvrsa22lnbj77aigj1duqd5467.apps.googleusercontent.com";
googleOptions.ClientSecret = "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";
})
.AddFacebook(facebookOptions =>
{
facebookOptions.AppId = "447271047381191";
facebookOptions.AppSecret = "6af4f8605b86589832b4205f04a5d34d";
});
builder.Services.AddControllersWithViews();
builder.Services.AddDbContext<ApplicationDbContext>(options =>
options.UseNpgsql(connectionString));
builder.Services.AddDatabaseDeveloperPageExceptionFilter();
//Register my custom DataService class
builder.Services.AddScoped<DataService>();
builder.Services.AddScoped<BlogSearchService>();
//Register a preconfigured instance of the MailSettings class
builder.Services.Configure<MailSettings>(builder.Configuration.GetSection("MailSettings"));
builder.Services.AddScoped<IBlogEmailSender, EmailService>();
//Register our Image Service
builder.Services.AddScoped<IImageService, BasicImageService>();
//Register the Slug Service
builder.Services.AddScoped<ISlugService, BasicSlugService>();
//___________________________________________________________________
//END OF CUSTOM SERVICES
AppContext.SetSwitch("Npgsql.EnableLegacyTimestampBehavior", true);
//Builds the web application
var app = builder.Build();
var scope = app.Services.CreateScope();
await DataHelper.ManageDataAsync(scope.ServiceProvider);
// database update with the latest migrations
//Pull out my registered DataService
var dataService = app.Services
.CreateScope()
.ServiceProvider
.GetRequiredService<DataService>();
await dataService.ManageDateAsync();
// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Error");
//app.UseMigrationsEndPoint();
// 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.UseStatusCodePagesWithReExecute("/Home/HandleError/{0}");
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthentication();
app.UseAuthorization();
app.MapControllerRoute(
name: "default",
pattern: "{controller=Posts}/{action=BlogPostIndex}/{id?}");
app.MapRazorPages();
await DataHelper.ManageDataAsync(scope.ServiceProvider);
app.Run();