Add login
This commit is contained in:
parent
0ad741463d
commit
d785150426
@ -0,0 +1,46 @@
|
|||||||
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
using Microsoft.AspNetCore.Builder;
|
||||||
|
using Microsoft.Extensions.Configuration;
|
||||||
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
|
|
||||||
|
namespace Todo.Infrastructure;
|
||||||
|
|
||||||
|
public static class DependencyInjection
|
||||||
|
{
|
||||||
|
public static IServiceCollection AddInfrastructure(this IServiceCollection services, IConfiguration configuration)
|
||||||
|
{
|
||||||
|
var giteaAuthOptions = new GiteaAuthOptions();
|
||||||
|
var giteaOptions = configuration.GetRequiredSection("GITEA");
|
||||||
|
giteaOptions.Bind(giteaAuthOptions);
|
||||||
|
|
||||||
|
services
|
||||||
|
.AddOptions<GiteaAuthOptions>()
|
||||||
|
.Bind(giteaOptions)
|
||||||
|
.ValidateDataAnnotations();
|
||||||
|
|
||||||
|
return services.AddAuthentication(options =>
|
||||||
|
{
|
||||||
|
options.DefaultScheme = "Cookies";
|
||||||
|
options.DefaultChallengeScheme = "oidc";
|
||||||
|
})
|
||||||
|
.AddCookie("Cookies")
|
||||||
|
.AddOpenIdConnect("oidc", options =>
|
||||||
|
{
|
||||||
|
options.Authority = giteaAuthOptions.Url;
|
||||||
|
options.ClientId = giteaAuthOptions.ClientId;
|
||||||
|
options.ClientSecret = giteaAuthOptions.ClientSecret;
|
||||||
|
options.ResponseType = "code";
|
||||||
|
|
||||||
|
options.SaveTokens = true;
|
||||||
|
}).Services;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static IApplicationBuilder UseInfrastructure(this IApplicationBuilder app) => app;
|
||||||
|
}
|
||||||
|
|
||||||
|
public class GiteaAuthOptions
|
||||||
|
{
|
||||||
|
[Required] public string Url { get; set; }
|
||||||
|
[Required] public string ClientId { get; init; }
|
||||||
|
[Required] public string ClientSecret { get; init; }
|
||||||
|
}
|
@ -0,0 +1,17 @@
|
|||||||
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
|
<PropertyGroup>
|
||||||
|
<TargetFramework>net6.0</TargetFramework>
|
||||||
|
<ImplicitUsings>enable</ImplicitUsings>
|
||||||
|
<Nullable>enable</Nullable>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<FrameworkReference Include="Microsoft.AspNetCore.App" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<PackageReference Include="Microsoft.AspNetCore.Authentication.OpenIdConnect" Version="6.0.0" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
</Project>
|
@ -6,6 +6,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Todo.Persistence", "src\Tod
|
|||||||
EndProject
|
EndProject
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Todo.Core", "src\Todo.Core\Todo.Core.csproj", "{F134CAB6-15A5-45CB-8782-B61AB67B5C9C}"
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Todo.Core", "src\Todo.Core\Todo.Core.csproj", "{F134CAB6-15A5-45CB-8782-B61AB67B5C9C}"
|
||||||
EndProject
|
EndProject
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Todo.Infrastructure", "Todo.Infrastructure\Todo.Infrastructure.csproj", "{F6EE7E8D-6248-421E-9FB0-D4342908B319}"
|
||||||
|
EndProject
|
||||||
Global
|
Global
|
||||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
Debug|Any CPU = Debug|Any CPU
|
Debug|Any CPU = Debug|Any CPU
|
||||||
@ -24,5 +26,9 @@ Global
|
|||||||
{F134CAB6-15A5-45CB-8782-B61AB67B5C9C}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{F134CAB6-15A5-45CB-8782-B61AB67B5C9C}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{F134CAB6-15A5-45CB-8782-B61AB67B5C9C}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{F134CAB6-15A5-45CB-8782-B61AB67B5C9C}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{F134CAB6-15A5-45CB-8782-B61AB67B5C9C}.Release|Any CPU.Build.0 = Release|Any CPU
|
{F134CAB6-15A5-45CB-8782-B61AB67B5C9C}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{F6EE7E8D-6248-421E-9FB0-D4342908B319}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{F6EE7E8D-6248-421E-9FB0-D4342908B319}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{F6EE7E8D-6248-421E-9FB0-D4342908B319}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{F6EE7E8D-6248-421E-9FB0-D4342908B319}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
EndGlobal
|
EndGlobal
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
using System.ComponentModel.DataAnnotations;
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
using Microsoft.AspNetCore.Authorization;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
using Todo.Core.Interfaces.Persistence;
|
using Todo.Core.Interfaces.Persistence;
|
||||||
|
|
||||||
@ -20,10 +21,11 @@ public class TodosController : ControllerBase
|
|||||||
Ok(await _todoRepository.CreateTodoAsync(request.Title, String.Empty));
|
Ok(await _todoRepository.CreateTodoAsync(request.Title, String.Empty));
|
||||||
|
|
||||||
[HttpGet]
|
[HttpGet]
|
||||||
|
[Authorize]
|
||||||
public async Task<ActionResult<IEnumerable<Core.Entities.Todo>>> GetTodos() =>
|
public async Task<ActionResult<IEnumerable<Core.Entities.Todo>>> GetTodos() =>
|
||||||
Ok(await _todoRepository.GetTodosAsync());
|
Ok(await _todoRepository.GetTodosAsync());
|
||||||
|
|
||||||
[HttpGet]
|
[HttpGet("not-done")]
|
||||||
public async Task<ActionResult<IEnumerable<Core.Entities.Todo>>> GetNotDoneTodos() =>
|
public async Task<ActionResult<IEnumerable<Core.Entities.Todo>>> GetNotDoneTodos() =>
|
||||||
Ok(await _todoRepository.GetNotDoneTodos());
|
Ok(await _todoRepository.GetNotDoneTodos());
|
||||||
|
|
||||||
|
@ -21,7 +21,10 @@
|
|||||||
"MONGODB__Password": "example",
|
"MONGODB__Password": "example",
|
||||||
"MONGODB__Database": "todo",
|
"MONGODB__Database": "todo",
|
||||||
"MONGODB__Host": "localhost",
|
"MONGODB__Host": "localhost",
|
||||||
"MONGODB__Port": "27017"
|
"MONGODB__Port": "27017",
|
||||||
|
"GITEA__Url": "https://git.front.kjuulh.io",
|
||||||
|
"GITEA__ClientId": "6982ef4f-cfc1-431c-a442-fad98355a059",
|
||||||
|
"GITEA__": "stabKPEZ6di0VfPjYT4rb0jRGLA2gPSd2NEkGoBi0xLO"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
using System.IdentityModel.Tokens.Jwt;
|
||||||
using Microsoft.AspNetCore.Builder;
|
using Microsoft.AspNetCore.Builder;
|
||||||
using Microsoft.AspNetCore.Diagnostics.HealthChecks;
|
using Microsoft.AspNetCore.Diagnostics.HealthChecks;
|
||||||
using Microsoft.AspNetCore.Hosting;
|
using Microsoft.AspNetCore.Hosting;
|
||||||
@ -7,6 +8,7 @@ using Microsoft.Extensions.DependencyInjection;
|
|||||||
using Microsoft.Extensions.Hosting;
|
using Microsoft.Extensions.Hosting;
|
||||||
using Microsoft.OpenApi.Models;
|
using Microsoft.OpenApi.Models;
|
||||||
using Todo.Api.Hubs;
|
using Todo.Api.Hubs;
|
||||||
|
using Todo.Infrastructure;
|
||||||
using Todo.Persistence;
|
using Todo.Persistence;
|
||||||
using Todo.Persistence.Mongo;
|
using Todo.Persistence.Mongo;
|
||||||
|
|
||||||
@ -38,6 +40,9 @@ namespace Todo.Api
|
|||||||
{
|
{
|
||||||
c.SwaggerDoc("v1", new OpenApiInfo { Title = "Todo.Api", Version = "v1" });
|
c.SwaggerDoc("v1", new OpenApiInfo { Title = "Todo.Api", Version = "v1" });
|
||||||
});
|
});
|
||||||
|
JwtSecurityTokenHandler.DefaultMapInboundClaims = false;
|
||||||
|
|
||||||
|
services.AddInfrastructure(Configuration);
|
||||||
|
|
||||||
services.AddPersistence(Configuration, out var mongoDbOptions);
|
services.AddPersistence(Configuration, out var mongoDbOptions);
|
||||||
services
|
services
|
||||||
@ -61,6 +66,7 @@ namespace Todo.Api
|
|||||||
app.UseRouting();
|
app.UseRouting();
|
||||||
app.UseCors();
|
app.UseCors();
|
||||||
|
|
||||||
|
app.UseAuthentication();
|
||||||
app.UseAuthorization();
|
app.UseAuthorization();
|
||||||
|
|
||||||
app.UseEndpoints(endpoints =>
|
app.UseEndpoints(endpoints =>
|
||||||
|
@ -10,6 +10,7 @@
|
|||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
<ProjectReference Include="..\..\Todo.Infrastructure\Todo.Infrastructure.csproj" />
|
||||||
<ProjectReference Include="..\Todo.Core\Todo.Core.csproj" />
|
<ProjectReference Include="..\Todo.Core\Todo.Core.csproj" />
|
||||||
<ProjectReference Include="..\Todo.Persistence\Todo.Persistence.csproj" />
|
<ProjectReference Include="..\Todo.Persistence\Todo.Persistence.csproj" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
Loading…
Reference in New Issue
Block a user