Web-Development-with-Blazor.../Chapter11/MyBlog/BlazorServer/Program.cs

80 lines
2.6 KiB
C#
Raw Permalink Normal View History

2023-02-17 15:28:17 +01:00
using BlazorServer.Data;
using Data.Models.Interfaces;
using Data;
using Microsoft.AspNetCore.Components;
using Microsoft.AspNetCore.Components.Web;
using Auth0.AspNetCore.Authentication;
using Microsoft.AspNetCore.Authentication;
using Microsoft.AspNetCore.Authentication.Cookies;
using Components.RazorComponents;
using Components.Interfaces;
using BlazorServer.Services;
var builder = WebApplication.CreateBuilder(args);
builder.Configuration.AddJsonFile("appsettings.local.json", optional: true, reloadOnChange: true);
// Add services to the container.
builder.Services.AddRazorPages();
builder.Services.AddServerSideBlazor();
builder.Services.AddSingleton<WeatherForecastService>();
builder.Services.AddTransient<ILoginStatus, LoginStatus>();
builder.Services.AddScoped<IBrowserStorage, BlogProtectedBrowserStorage>();
builder.Services.AddSingleton<IBlogNotificationService, BlazorServerBlogNotificationService>();
builder.Services.AddOptions<BlogApiJsonDirectAccessSetting>()
.Configure(options =>
{
options.DataPath = @"..\..\..\Data\";
options.BlogPostsFolder = "Blogposts";
options.TagsFolder = "Tags";
options.CategoriesFolder = "Categories";
});
builder.Services.AddScoped<IBlogApi, BlogApiJsonDirectAccess>();
builder.Services
.AddAuth0WebAppAuthentication(options =>
{
options.Domain = builder.Configuration["Auth0:Authority"] ?? "";
options.ClientId = builder.Configuration["Auth0:ClientId"] ?? "";
});
var app = builder.Build();
// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
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.MapGet("authentication/login", async (string redirectUri, HttpContext context) =>
{
var authenticationProperties = new LoginAuthenticationPropertiesBuilder()
.WithRedirectUri(redirectUri)
.Build();
await context.ChallengeAsync(Auth0Constants.AuthenticationScheme, authenticationProperties);
});
app.MapGet("authentication/logout", async (HttpContext context) =>
{
var authenticationProperties = new LogoutAuthenticationPropertiesBuilder()
.WithRedirectUri("/")
.Build();
await context.SignOutAsync(Auth0Constants.AuthenticationScheme, authenticationProperties);
await context.SignOutAsync(CookieAuthenticationDefaults.AuthenticationScheme);
});
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthentication();
app.UseAuthorization();
app.MapBlazorHub();
app.MapFallbackToPage("/_Host");
app.Run();