-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathProgram.cs
More file actions
65 lines (55 loc) · 1.79 KB
/
Program.cs
File metadata and controls
65 lines (55 loc) · 1.79 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
global using FastEndpoints;
global using FluentValidation;
using Api.Hubs;
using Api.Models;
using Api.Persistence;
using Api.Shared;
using FastEndpoints.Swagger;
using Microsoft.AspNetCore.Identity;
using System.Security.Claims;
WebApplicationBuilder builder = WebApplication.CreateBuilder(args);
IServiceCollection services = builder.Services;
services
.AddAuthentication(IdentityConstants.BearerScheme)
.AddCookie(IdentityConstants.ApplicationScheme)
.AddBearerToken(IdentityConstants.BearerScheme);
services.AddAuthorization();
services
.AddIdentityCore<User>(x => x.User.RequireUniqueEmail = true)
.AddEntityFrameworkStores<StoreDbContext>()
.AddApiEndpoints();
// Add services to the container.
services.ConfigureIoC(typeof(Program).Assembly);
services.AddSqlite<StoreDbContext>("Data Source=mydb.db;");
services.AddSignalR();
services
.AddFastEndpoints(o => o.IncludeAbstractValidators = true)
.SwaggerDocument(o =>
{
o.DocumentSettings = s =>
{
s.Title = "Store";
s.Version = "v1";
};
}); //define a swagger document
services.AddControllers();
var app = builder.Build();
app.MapIdentityApi<User>().WithTags(nameof(IdentityUser));
app.MapGet("me", async (ClaimsPrincipal claims, StoreDbContext context, CancellationToken c = default) =>
{
string stringUserId = claims.FindFirstValue(ClaimTypes.NameIdentifier)!;
return await context.Users.FindAsync([Guid.Parse(stringUserId)], c) as IdentityUser<Guid>;
})
.WithTags(nameof(IdentityUser))
.RequireAuthorization();
app.MapHub<DummyHub>("/DummyHub");
// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment())
{
app.UseFastEndpoints().UseSwaggerGen();
}
app.UseHttpsRedirection();
app.UseAuthentication();
app.UseAuthorization();
app.MapControllers();
app.Run();