This commit is contained in:
Rory&
2026-02-20 03:17:51 +01:00
parent 89c00aac7c
commit ad2e2193a8
11 changed files with 346 additions and 189 deletions
@@ -1,6 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="SqlDialectMappings">
<file url="file://$PROJECT_DIR$/Spacebar.AdminApi/Controllers/GuildController.cs" dialect="PostgreSQL" />
<file url="file://$PROJECT_DIR$/Spacebar.AdminApi/Controllers/UserController.cs" dialect="PostgreSQL" />
</component>
</project>
@@ -4,6 +4,11 @@
"version": "1.0.1-preview.20260126-091403",
"hash": "sha256-CSmNE16nDi05qyDAcJR+8SqQQ2ReAeX0+/dRP3WpNsg="
},
{
"pname": "BCrypt.Net-Next",
"version": "4.1.0",
"hash": "sha256-Efjrsw4FXgVKA2vQV6ztc40pLsonnV3JxwxW7eOyfDk="
},
{
"pname": "Humanizer.Core",
"version": "2.14.1",
@@ -94,111 +99,11 @@
"version": "10.0.2",
"hash": "sha256-Y4jPpoYhKizg5wF6QfkBX4sYlE2FU1bYhfoDN3xkhKM="
},
{
"pname": "Microsoft.Extensions.Caching.Abstractions",
"version": "10.0.2",
"hash": "sha256-nKmQuZTt1g5/8gBajo7wdCV64kdCucdiQR8JTt7ZZb0="
},
{
"pname": "Microsoft.Extensions.Caching.Memory",
"version": "10.0.0",
"hash": "sha256-AMgDSm1k6q0s17spGtyR5q8nAqUFDOxl/Fe38f9M+d4="
},
{
"pname": "Microsoft.Extensions.Caching.Memory",
"version": "10.0.2",
"hash": "sha256-sRUF7DM0s1yzZnfjM/hF9A/IysE6Er23gZ6jST+RWh0="
},
{
"pname": "Microsoft.Extensions.Configuration",
"version": "10.0.2",
"hash": "sha256-dBJAKDyp/sm+ZSMQfH0+4OH8Jnv1s20aHlWS6HNnH+c="
},
{
"pname": "Microsoft.Extensions.Configuration.Abstractions",
"version": "10.0.2",
"hash": "sha256-P+0kaDGO+xB9KxF9eWHDJ4hzi05sUGM/uMNEX5NdBTE="
},
{
"pname": "Microsoft.Extensions.Configuration.Binder",
"version": "10.0.2",
"hash": "sha256-resI9gIxHh2cc+258/i+TjW8xxzKf4ZBTLIcWAMEYz0="
},
{
"pname": "Microsoft.Extensions.DependencyInjection",
"version": "10.0.2",
"hash": "sha256-/9UWQRAI2eoocnJWWf1ktnAx/1Gt65c16fc0Xqr9+CQ="
},
{
"pname": "Microsoft.Extensions.DependencyInjection.Abstractions",
"version": "10.0.0",
"hash": "sha256-9iodXP39YqgxomnOPOxd/mzbG0JfOSXzFoNU3omT2Ps="
},
{
"pname": "Microsoft.Extensions.DependencyInjection.Abstractions",
"version": "10.0.2",
"hash": "sha256-UF9T13V5SQxJy2msfLmyovLmitZrjJayf8gHH+uK2eg="
},
{
"pname": "Microsoft.Extensions.DependencyInjection.Abstractions",
"version": "9.0.0",
"hash": "sha256-CncVwkKZ5CsIG2O0+OM9qXuYXh3p6UGyueTHSLDVL+c="
},
{
"pname": "Microsoft.Extensions.DependencyModel",
"version": "10.0.2",
"hash": "sha256-w/dGIjtZiGH+KW3969BPOdQpQEV+WB7RPTa2MK2DavE="
},
{
"pname": "Microsoft.Extensions.Logging",
"version": "10.0.0",
"hash": "sha256-P+zPAadLL63k/GqK34/qChqQjY9aIRxZfxlB9lqsSrs="
},
{
"pname": "Microsoft.Extensions.Logging",
"version": "10.0.2",
"hash": "sha256-9+gfQwK32JMYscW1YvyCWEzc9mRZOjCACoD9U1vVaJI="
},
{
"pname": "Microsoft.Extensions.Logging",
"version": "9.0.0",
"hash": "sha256-kR16c+N8nQrWeYLajqnXPg7RiXjZMSFLnKLEs4VfjcM="
},
{
"pname": "Microsoft.Extensions.Logging.Abstractions",
"version": "10.0.0",
"hash": "sha256-BnhgGZc01HwTSxogavq7Ueq4V7iMA3wPnbfRwQ4RhGk="
},
{
"pname": "Microsoft.Extensions.Logging.Abstractions",
"version": "10.0.2",
"hash": "sha256-ndKGzq8+2J/hvaIULwBui0L/jDyMQTAY24j+ohX5VX8="
},
{
"pname": "Microsoft.Extensions.Logging.Abstractions",
"version": "9.0.0",
"hash": "sha256-iBTs9twjWXFeERt4CErkIIcoJZU1jrd1RWCI8V5j7KU="
},
{
"pname": "Microsoft.Extensions.Options",
"version": "10.0.2",
"hash": "sha256-12AfUEDdta/pmZUyEyqSUfOk0YoA7JOfGmIYnZQ//qk="
},
{
"pname": "Microsoft.Extensions.Options",
"version": "9.0.0",
"hash": "sha256-DT5euAQY/ItB5LPI8WIp6Dnd0lSvBRP35vFkOXC68ck="
},
{
"pname": "Microsoft.Extensions.Primitives",
"version": "10.0.2",
"hash": "sha256-8Ccrjjv9cFVf9RyCc7GS/Byt8+DXdSNea0UX3A5BEdA="
},
{
"pname": "Microsoft.Extensions.Primitives",
"version": "9.0.0",
"hash": "sha256-ZNLusK1CRuq5BZYZMDqaz04PIKScE2Z7sS2tehU7EJs="
},
{
"pname": "Microsoft.IdentityModel.Abstractions",
"version": "8.15.0",
@@ -284,4 +189,4 @@
"version": "8.15.0",
"hash": "sha256-5O0wbGp0gWnukK+0mWBjMnP1bZc6N0xuNcO2qmFiUX8="
}
]
]
@@ -8,6 +8,7 @@
<ItemGroup>
<ProjectReference Include="..\..\Models\Spacebar.Models.Db\Spacebar.Models.Db.csproj" Condition="'$(ContinuousIntegrationBuild)'!='true'"/>
<PackageReference Include="BCrypt.Net-Next" Version="4.1.0" />
<PackageReference Include="Spacebar.Models.Db" Version="*-preview*" Condition="'$(ContinuousIntegrationBuild)'=='true'"/>
</ItemGroup>
@@ -12,22 +12,32 @@ public class SpacebarAuthenticationService(ILogger<SpacebarAuthenticationService
private static readonly ExpiringSemaphoreCache<User> UserCache = new();
private static readonly ExpiringSemaphoreCache<Session> SessionCache = new();
public async Task<TokenValidationResult?> ValidateTokenAsync(string token) {
var handler = new JwtSecurityTokenHandler();
private static bool _isInitialised;
private static readonly JwtSecurityTokenHandler Handler = new();
private static readonly TokenValidationParameters TokenValidationParameters = new() {
// IssuerSigningKey = new ECDsaSecurityKey(key),
ValidAlgorithms = ["ES512"],
LogValidationExceptions = true,
// These are required to be false for the token to be valid as they aren't provided by the token
ValidateIssuer = false,
ValidateLifetime = false,
ValidateAudience = false,
// TryAllIssuerSigningKeys = true
};
public async Task InitializeAsync() {
if (_isInitialised) return;
var secretFile = await File.ReadAllTextAsync(config.PublicKeyPath);
var key = ECDsa.Create(ECCurve.NamedCurves.nistP256);
key.ImportFromPem(secretFile);
TokenValidationParameters.IssuerSigningKey = new ECDsaSecurityKey(key);
_isInitialised = true;
}
var res = await handler.ValidateTokenAsync(token, new TokenValidationParameters {
IssuerSigningKey = new ECDsaSecurityKey(key),
ValidAlgorithms = ["ES512"],
LogValidationExceptions = true,
// These are required to be false for the token to be valid as they aren't provided by the token
ValidateIssuer = false,
ValidateLifetime = false,
ValidateAudience = false,
// TryAllIssuerSigningKeys = true
});
public async Task<TokenValidationResult?> ValidateTokenAsync(string token) {
if (!_isInitialised) await InitializeAsync();
var res = await Handler.ValidateTokenAsync(token, TokenValidationParameters);
if ((!res.IsValid || res.Exception is not null) && !config.DisableAuthentication) {
logger.LogInformation("Invalid token");
@@ -58,4 +68,10 @@ public class SpacebarAuthenticationService(ILogger<SpacebarAuthenticationService
},
config.AuthCacheExpiry);
}
// public async Task<string> GenerateAccessTokenAsync(string userId) {
// // await db.Sessions.AddAsync(new() {
//
// // })
// }
}
@@ -4,6 +4,11 @@
"version": "1.0.1-preview.20260126-091403",
"hash": "sha256-CSmNE16nDi05qyDAcJR+8SqQQ2ReAeX0+/dRP3WpNsg="
},
{
"pname": "BCrypt.Net-Next",
"version": "4.1.0",
"hash": "sha256-Efjrsw4FXgVKA2vQV6ztc40pLsonnV3JxwxW7eOyfDk="
},
{
"pname": "Humanizer.Core",
"version": "2.14.1",
@@ -46,4 +46,7 @@ public class FilesystemFileSource(string baseUrl) : IFileSource {
// using var mic = new MagickImageCollection(stream);
// return Mimes.GetMime(mic.First().Format);
// }
public Task<bool> DirectoryExists(string path) {
return Task.FromResult(Directory.Exists(Path.Join(baseUrl, path)));
}
}
@@ -1,7 +1,12 @@
using System.Text.Json.Serialization;
namespace Spacebar.Models.AdminApi;
public class ForceJoinRequest {
[JsonPropertyName("user_id")]
public string? UserId { get; set; } = null!;
[JsonPropertyName("make_admin")]
public bool MakeAdmin { get; set; } = false;
[JsonPropertyName("make_owner")]
public bool MakeOwner { get; set; } = false;
}
@@ -1 +1,247 @@
[]
[
{
"pname": "Humanizer.Core",
"version": "2.14.1",
"hash": "sha256-EXvojddPu+9JKgOG9NSQgUTfWq1RpOYw7adxDPKDJ6o="
},
{
"pname": "Microsoft.Build.Framework",
"version": "17.11.31",
"hash": "sha256-YS4oASrmC5dmZrx5JPS7SfKmUpIJErlUpVDsU3VrfFE="
},
{
"pname": "Microsoft.Build.Framework",
"version": "18.0.2",
"hash": "sha256-fO31KAdDs2J0RUYD1ov9UB3ucsbALan7K0YdWW+yg7A="
},
{
"pname": "Microsoft.CodeAnalysis.Analyzers",
"version": "3.11.0",
"hash": "sha256-hQ2l6E6PO4m7i+ZsfFlEx+93UsLPo4IY3wDkNG11/Sw="
},
{
"pname": "Microsoft.CodeAnalysis.Common",
"version": "5.0.0",
"hash": "sha256-g4ALvBSNyHEmSb1l5TFtWW7zEkiRmhqLx4XWZu9sr2U="
},
{
"pname": "Microsoft.CodeAnalysis.CSharp",
"version": "5.0.0",
"hash": "sha256-ctBCkQGFpH/xT5rRE3xibu9YxPD108RuC4a4Z25koG8="
},
{
"pname": "Microsoft.CodeAnalysis.CSharp.Workspaces",
"version": "5.0.0",
"hash": "sha256-yWVcLt/f2CouOfFy966glGdtSFy+RcgrU1dd9UtlL/Q="
},
{
"pname": "Microsoft.CodeAnalysis.Workspaces.Common",
"version": "5.0.0",
"hash": "sha256-Bir5e1gEhgQQ6upQmVKQHAKLRfenAu60DAzNupNnZsQ="
},
{
"pname": "Microsoft.CodeAnalysis.Workspaces.MSBuild",
"version": "5.0.0",
"hash": "sha256-+58+iqTayTiE0pDaog1U8mjaDA8bNNDLA8gjCQZZudo="
},
{
"pname": "Microsoft.EntityFrameworkCore",
"version": "10.0.0",
"hash": "sha256-xfgrlxhtOkQwF5Q7j8gSm41URJiH8IuJ/T/Dh88++hE="
},
{
"pname": "Microsoft.EntityFrameworkCore",
"version": "10.0.2",
"hash": "sha256-FS6T8EnaWCMtj4PnZhh+oF8mcM44VlM3wkTSMlpte9A="
},
{
"pname": "Microsoft.EntityFrameworkCore.Abstractions",
"version": "10.0.0",
"hash": "sha256-UDgZbRQcGPaKsE53EH6bvJiv+Q4KSxAbnsVhTVFGG4Q="
},
{
"pname": "Microsoft.EntityFrameworkCore.Abstractions",
"version": "10.0.2",
"hash": "sha256-qkDfIJpcPO2kk4n5OE/13hI/0mUygpTofInn95XjRZI="
},
{
"pname": "Microsoft.EntityFrameworkCore.Analyzers",
"version": "10.0.0",
"hash": "sha256-7Q0jYJO50cqGI+u6gLpootbB8GZvgsgtg0F9FZI1jig="
},
{
"pname": "Microsoft.EntityFrameworkCore.Analyzers",
"version": "10.0.2",
"hash": "sha256-yOv78rgAACBz1zjitpcZbQQ3zx8huJongZTHkhN4PQ0="
},
{
"pname": "Microsoft.EntityFrameworkCore.Design",
"version": "10.0.2",
"hash": "sha256-bTShsGux0y/49PIIMb/4ZX3x5+rPacvT5/NcooNCI1Y="
},
{
"pname": "Microsoft.EntityFrameworkCore.Relational",
"version": "10.0.0",
"hash": "sha256-vOP2CE5YA551BlpbOuIy6RuAiAEPEpCVS1cEE33/zN4="
},
{
"pname": "Microsoft.EntityFrameworkCore.Relational",
"version": "10.0.2",
"hash": "sha256-Y4jPpoYhKizg5wF6QfkBX4sYlE2FU1bYhfoDN3xkhKM="
},
{
"pname": "Microsoft.Extensions.Caching.Abstractions",
"version": "10.0.2",
"hash": "sha256-nKmQuZTt1g5/8gBajo7wdCV64kdCucdiQR8JTt7ZZb0="
},
{
"pname": "Microsoft.Extensions.Caching.Memory",
"version": "10.0.0",
"hash": "sha256-AMgDSm1k6q0s17spGtyR5q8nAqUFDOxl/Fe38f9M+d4="
},
{
"pname": "Microsoft.Extensions.Caching.Memory",
"version": "10.0.2",
"hash": "sha256-sRUF7DM0s1yzZnfjM/hF9A/IysE6Er23gZ6jST+RWh0="
},
{
"pname": "Microsoft.Extensions.Configuration.Abstractions",
"version": "10.0.2",
"hash": "sha256-P+0kaDGO+xB9KxF9eWHDJ4hzi05sUGM/uMNEX5NdBTE="
},
{
"pname": "Microsoft.Extensions.DependencyInjection",
"version": "10.0.2",
"hash": "sha256-/9UWQRAI2eoocnJWWf1ktnAx/1Gt65c16fc0Xqr9+CQ="
},
{
"pname": "Microsoft.Extensions.DependencyInjection",
"version": "9.0.0",
"hash": "sha256-dAH52PPlTLn7X+1aI/7npdrDzMEFPMXRv4isV1a+14k="
},
{
"pname": "Microsoft.Extensions.DependencyInjection.Abstractions",
"version": "10.0.2",
"hash": "sha256-UF9T13V5SQxJy2msfLmyovLmitZrjJayf8gHH+uK2eg="
},
{
"pname": "Microsoft.Extensions.DependencyInjection.Abstractions",
"version": "9.0.0",
"hash": "sha256-CncVwkKZ5CsIG2O0+OM9qXuYXh3p6UGyueTHSLDVL+c="
},
{
"pname": "Microsoft.Extensions.DependencyModel",
"version": "10.0.2",
"hash": "sha256-w/dGIjtZiGH+KW3969BPOdQpQEV+WB7RPTa2MK2DavE="
},
{
"pname": "Microsoft.Extensions.Logging",
"version": "10.0.0",
"hash": "sha256-P+zPAadLL63k/GqK34/qChqQjY9aIRxZfxlB9lqsSrs="
},
{
"pname": "Microsoft.Extensions.Logging",
"version": "10.0.2",
"hash": "sha256-9+gfQwK32JMYscW1YvyCWEzc9mRZOjCACoD9U1vVaJI="
},
{
"pname": "Microsoft.Extensions.Logging",
"version": "9.0.0",
"hash": "sha256-kR16c+N8nQrWeYLajqnXPg7RiXjZMSFLnKLEs4VfjcM="
},
{
"pname": "Microsoft.Extensions.Logging.Abstractions",
"version": "10.0.0",
"hash": "sha256-BnhgGZc01HwTSxogavq7Ueq4V7iMA3wPnbfRwQ4RhGk="
},
{
"pname": "Microsoft.Extensions.Logging.Abstractions",
"version": "10.0.2",
"hash": "sha256-ndKGzq8+2J/hvaIULwBui0L/jDyMQTAY24j+ohX5VX8="
},
{
"pname": "Microsoft.Extensions.Logging.Abstractions",
"version": "9.0.0",
"hash": "sha256-iBTs9twjWXFeERt4CErkIIcoJZU1jrd1RWCI8V5j7KU="
},
{
"pname": "Microsoft.Extensions.Options",
"version": "10.0.2",
"hash": "sha256-12AfUEDdta/pmZUyEyqSUfOk0YoA7JOfGmIYnZQ//qk="
},
{
"pname": "Microsoft.Extensions.Options",
"version": "9.0.0",
"hash": "sha256-DT5euAQY/ItB5LPI8WIp6Dnd0lSvBRP35vFkOXC68ck="
},
{
"pname": "Microsoft.Extensions.Primitives",
"version": "10.0.2",
"hash": "sha256-8Ccrjjv9cFVf9RyCc7GS/Byt8+DXdSNea0UX3A5BEdA="
},
{
"pname": "Microsoft.Extensions.Primitives",
"version": "9.0.0",
"hash": "sha256-ZNLusK1CRuq5BZYZMDqaz04PIKScE2Z7sS2tehU7EJs="
},
{
"pname": "Microsoft.VisualStudio.SolutionPersistence",
"version": "1.0.52",
"hash": "sha256-KZGPtOXe6Hv8RrkcsgoLKTRyaCScIpQEa2NhNB3iOXw="
},
{
"pname": "Mono.TextTemplating",
"version": "3.0.0",
"hash": "sha256-VlgGDvgNZb7MeBbIZ4DE2Nn/j2aD9k6XqNHnASUSDr0="
},
{
"pname": "Newtonsoft.Json",
"version": "13.0.3",
"hash": "sha256-hy/BieY4qxBWVVsDqqOPaLy1QobiIapkbrESm6v2PHc="
},
{
"pname": "Npgsql",
"version": "10.0.0",
"hash": "sha256-UVKz9dH/rVCCbMyFdqA31RYpht1XgDRLIqUy0Dp9ACQ="
},
{
"pname": "Npgsql.EntityFrameworkCore.PostgreSQL",
"version": "10.0.0",
"hash": "sha256-XIJxnTMektQVP1qtslEIGbmBGrIQsvjQjCMRTs9UIbg="
},
{
"pname": "System.CodeDom",
"version": "6.0.0",
"hash": "sha256-uPetUFZyHfxjScu5x4agjk9pIhbCkt5rG4Axj25npcQ="
},
{
"pname": "System.Composition",
"version": "9.0.0",
"hash": "sha256-FehOkQ2u1p8mQ0/wn3cZ+24HjhTLdck8VZYWA1CcgbM="
},
{
"pname": "System.Composition.AttributedModel",
"version": "9.0.0",
"hash": "sha256-a7y7H6zj+kmYkllNHA402DoVfY9IaqC3Ooys8Vzl24M="
},
{
"pname": "System.Composition.Convention",
"version": "9.0.0",
"hash": "sha256-tw4vE5JRQ60ubTZBbxoMPhtjOQCC3XoDFUH7NHO7o8U="
},
{
"pname": "System.Composition.Hosting",
"version": "9.0.0",
"hash": "sha256-oOxU+DPEEfMCuNLgW6wSkZp0JY5gYt44FJNnWt+967s="
},
{
"pname": "System.Composition.Runtime",
"version": "9.0.0",
"hash": "sha256-AyIe+di1TqwUBbSJ/sJ8Q8tzsnTN+VBdJw4K8xZz43s="
},
{
"pname": "System.Composition.TypedParts",
"version": "9.0.0",
"hash": "sha256-F5fpTUs3Rr7yP/NyIzr+Xn5NdTXXp8rrjBnF9UBBUog="
}
]
+10 -75
View File
@@ -74,11 +74,21 @@
"version": "10.0.2",
"hash": "sha256-FS6T8EnaWCMtj4PnZhh+oF8mcM44VlM3wkTSMlpte9A="
},
{
"pname": "Microsoft.EntityFrameworkCore.Abstractions",
"version": "10.0.0",
"hash": "sha256-UDgZbRQcGPaKsE53EH6bvJiv+Q4KSxAbnsVhTVFGG4Q="
},
{
"pname": "Microsoft.EntityFrameworkCore.Abstractions",
"version": "10.0.2",
"hash": "sha256-qkDfIJpcPO2kk4n5OE/13hI/0mUygpTofInn95XjRZI="
},
{
"pname": "Microsoft.EntityFrameworkCore.Analyzers",
"version": "10.0.0",
"hash": "sha256-7Q0jYJO50cqGI+u6gLpootbB8GZvgsgtg0F9FZI1jig="
},
{
"pname": "Microsoft.EntityFrameworkCore.Analyzers",
"version": "10.0.2",
@@ -99,86 +109,11 @@
"version": "10.0.2",
"hash": "sha256-Y4jPpoYhKizg5wF6QfkBX4sYlE2FU1bYhfoDN3xkhKM="
},
{
"pname": "Microsoft.Extensions.Caching.Abstractions",
"version": "10.0.2",
"hash": "sha256-nKmQuZTt1g5/8gBajo7wdCV64kdCucdiQR8JTt7ZZb0="
},
{
"pname": "Microsoft.Extensions.Caching.Memory",
"version": "10.0.2",
"hash": "sha256-sRUF7DM0s1yzZnfjM/hF9A/IysE6Er23gZ6jST+RWh0="
},
{
"pname": "Microsoft.Extensions.Configuration.Abstractions",
"version": "10.0.2",
"hash": "sha256-P+0kaDGO+xB9KxF9eWHDJ4hzi05sUGM/uMNEX5NdBTE="
},
{
"pname": "Microsoft.Extensions.DependencyInjection",
"version": "10.0.2",
"hash": "sha256-/9UWQRAI2eoocnJWWf1ktnAx/1Gt65c16fc0Xqr9+CQ="
},
{
"pname": "Microsoft.Extensions.DependencyInjection",
"version": "9.0.0",
"hash": "sha256-dAH52PPlTLn7X+1aI/7npdrDzMEFPMXRv4isV1a+14k="
},
{
"pname": "Microsoft.Extensions.DependencyInjection.Abstractions",
"version": "10.0.2",
"hash": "sha256-UF9T13V5SQxJy2msfLmyovLmitZrjJayf8gHH+uK2eg="
},
{
"pname": "Microsoft.Extensions.DependencyModel",
"version": "10.0.2",
"hash": "sha256-w/dGIjtZiGH+KW3969BPOdQpQEV+WB7RPTa2MK2DavE="
},
{
"pname": "Microsoft.Extensions.Logging",
"version": "10.0.2",
"hash": "sha256-9+gfQwK32JMYscW1YvyCWEzc9mRZOjCACoD9U1vVaJI="
},
{
"pname": "Microsoft.Extensions.Logging",
"version": "9.0.0",
"hash": "sha256-kR16c+N8nQrWeYLajqnXPg7RiXjZMSFLnKLEs4VfjcM="
},
{
"pname": "Microsoft.Extensions.Logging.Abstractions",
"version": "10.0.0",
"hash": "sha256-BnhgGZc01HwTSxogavq7Ueq4V7iMA3wPnbfRwQ4RhGk="
},
{
"pname": "Microsoft.Extensions.Logging.Abstractions",
"version": "10.0.2",
"hash": "sha256-ndKGzq8+2J/hvaIULwBui0L/jDyMQTAY24j+ohX5VX8="
},
{
"pname": "Microsoft.Extensions.Logging.Abstractions",
"version": "9.0.0",
"hash": "sha256-iBTs9twjWXFeERt4CErkIIcoJZU1jrd1RWCI8V5j7KU="
},
{
"pname": "Microsoft.Extensions.Options",
"version": "10.0.2",
"hash": "sha256-12AfUEDdta/pmZUyEyqSUfOk0YoA7JOfGmIYnZQ//qk="
},
{
"pname": "Microsoft.Extensions.Options",
"version": "9.0.0",
"hash": "sha256-DT5euAQY/ItB5LPI8WIp6Dnd0lSvBRP35vFkOXC68ck="
},
{
"pname": "Microsoft.Extensions.Primitives",
"version": "10.0.2",
"hash": "sha256-8Ccrjjv9cFVf9RyCc7GS/Byt8+DXdSNea0UX3A5BEdA="
},
{
"pname": "Microsoft.Extensions.Primitives",
"version": "9.0.0",
"hash": "sha256-ZNLusK1CRuq5BZYZMDqaz04PIKScE2Z7sS2tehU7EJs="
},
{
"pname": "Microsoft.OpenApi",
"version": "2.0.0",
@@ -59,11 +59,21 @@
"version": "10.0.2",
"hash": "sha256-FS6T8EnaWCMtj4PnZhh+oF8mcM44VlM3wkTSMlpte9A="
},
{
"pname": "Microsoft.EntityFrameworkCore.Abstractions",
"version": "10.0.0",
"hash": "sha256-UDgZbRQcGPaKsE53EH6bvJiv+Q4KSxAbnsVhTVFGG4Q="
},
{
"pname": "Microsoft.EntityFrameworkCore.Abstractions",
"version": "10.0.2",
"hash": "sha256-qkDfIJpcPO2kk4n5OE/13hI/0mUygpTofInn95XjRZI="
},
{
"pname": "Microsoft.EntityFrameworkCore.Analyzers",
"version": "10.0.0",
"hash": "sha256-7Q0jYJO50cqGI+u6gLpootbB8GZvgsgtg0F9FZI1jig="
},
{
"pname": "Microsoft.EntityFrameworkCore.Analyzers",
"version": "10.0.2",
@@ -89,6 +99,11 @@
"version": "10.0.2",
"hash": "sha256-nKmQuZTt1g5/8gBajo7wdCV64kdCucdiQR8JTt7ZZb0="
},
{
"pname": "Microsoft.Extensions.Caching.Memory",
"version": "10.0.0",
"hash": "sha256-AMgDSm1k6q0s17spGtyR5q8nAqUFDOxl/Fe38f9M+d4="
},
{
"pname": "Microsoft.Extensions.Caching.Memory",
"version": "10.0.2",
@@ -189,6 +204,11 @@
"version": "10.0.2",
"hash": "sha256-mkeKUXepn4bfEdZFXdURmNEFdGiHQdpcxnm6joG+pUA="
},
{
"pname": "Microsoft.Extensions.Logging",
"version": "10.0.0",
"hash": "sha256-P+zPAadLL63k/GqK34/qChqQjY9aIRxZfxlB9lqsSrs="
},
{
"pname": "Microsoft.Extensions.Logging",
"version": "10.0.2",
@@ -54,11 +54,21 @@
"version": "10.0.2",
"hash": "sha256-FS6T8EnaWCMtj4PnZhh+oF8mcM44VlM3wkTSMlpte9A="
},
{
"pname": "Microsoft.EntityFrameworkCore.Abstractions",
"version": "10.0.0",
"hash": "sha256-UDgZbRQcGPaKsE53EH6bvJiv+Q4KSxAbnsVhTVFGG4Q="
},
{
"pname": "Microsoft.EntityFrameworkCore.Abstractions",
"version": "10.0.2",
"hash": "sha256-qkDfIJpcPO2kk4n5OE/13hI/0mUygpTofInn95XjRZI="
},
{
"pname": "Microsoft.EntityFrameworkCore.Analyzers",
"version": "10.0.0",
"hash": "sha256-7Q0jYJO50cqGI+u6gLpootbB8GZvgsgtg0F9FZI1jig="
},
{
"pname": "Microsoft.EntityFrameworkCore.Analyzers",
"version": "10.0.2",
@@ -84,6 +94,11 @@
"version": "10.0.2",
"hash": "sha256-nKmQuZTt1g5/8gBajo7wdCV64kdCucdiQR8JTt7ZZb0="
},
{
"pname": "Microsoft.Extensions.Caching.Memory",
"version": "10.0.0",
"hash": "sha256-AMgDSm1k6q0s17spGtyR5q8nAqUFDOxl/Fe38f9M+d4="
},
{
"pname": "Microsoft.Extensions.Caching.Memory",
"version": "10.0.2",
@@ -184,6 +199,11 @@
"version": "10.0.2",
"hash": "sha256-mkeKUXepn4bfEdZFXdURmNEFdGiHQdpcxnm6joG+pUA="
},
{
"pname": "Microsoft.Extensions.Logging",
"version": "10.0.0",
"hash": "sha256-P+zPAadLL63k/GqK34/qChqQjY9aIRxZfxlB9lqsSrs="
},
{
"pname": "Microsoft.Extensions.Logging",
"version": "10.0.2",