step 1: maybe won't keep

This commit is contained in:
William Lewis 2024-03-15 21:17:05 -05:00
parent 545adc869c
commit 279d9af22c
46 changed files with 2304 additions and 260 deletions

View File

@ -7,7 +7,15 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.Authorization" Version="7" />
<PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="7.0.15" />
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="7" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="7">
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
<PrivateAssets>all</PrivateAssets>
</PackageReference>
<PackageReference Include="Microsoft.IdentityModel.Tokens" Version="7" />
<PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="7" />
<PackageReference Include="Swashbuckle.AspNetCore" Version="6.5.0" />
</ItemGroup>

View File

@ -0,0 +1,7 @@
namespace AAIntegration.SimmonsBank.API.Configs;
public class AppSettings
{
public required string Secret { get; set; }
public required string APIUrl { get; set; }
}

View File

@ -0,0 +1,15 @@
namespace AAIntegration.SimmonsBank.API.Configs;
public class DatabaseConfig
{
public string Host { get; set; }
public string Name { get; set; }
public string User { get; set; }
public string Password { get; set; }
public uint Port { get; set; }
public string GetConnectionString()
{
return $"Server={Host};Port={Port};Database={Name};User Id={User};Password={Password}";
}
}

View File

@ -0,0 +1,10 @@
namespace AAIntegration.SimmonsBank.API.Entities;
public class User
{
public int Id { get; set; }
public string ApiKey { get; set; }
public string SimmonsBankUsername { get; set; }
public string SimmonsBankPassword { get; set; }
public string MFAKey { get; set; }
}

View File

@ -2,10 +2,10 @@ namespace AAIntegration.SimmonsBank.API.Handlers;
using System.Security.Claims;
using System.Text.Encodings.Web;
using ActiveAllocator.API.Configs;
using ActiveAllocator.API.Services;
using Microsoft.AspNetCore.Authentication;
using Microsoft.Extensions.Options;
using AAIntegration.SimmonsBank.API.Services;
using AAIntegration.SimmonsBank.API.Configs;
public class ApiKeyAuthenticationHandler : AuthenticationHandler<ApiKeyAuthenticationOptions>
{

View File

@ -0,0 +1,33 @@
namespace AAIntegration.SimmonsBank.API.Helpers;
using Microsoft.EntityFrameworkCore;
using AAIntegration.SimmonsBank.API.Entities;
using System.Diagnostics;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.CompilerServices;
using System.Diagnostics.CodeAnalysis;
public class DataContext : DbContext
{
//protected readonly IConfiguration Configuration;
readonly ILogger<DataContext> _logger;
public DataContext(
DbContextOptions<DataContext> options,
ILogger<DataContext> logger)
: base(options)
{
_logger = logger;
//Configuration = configuration;
}
/*protected override void OnConfiguring(DbContextOptionsBuilder options)
{
// in memory database used for simplicity, change to a real db for production applications
options.UseInMemoryDatabase("TestDb");
}*/
public DbSet<User> Users { get; set; }
}

View File

@ -0,0 +1,8 @@
namespace AAIntegration.SimmonsBank.API.Models.Users;
public class UserCreateRequest
{
public string Username { get; set; }
public string Password { get; set; }
public string MFAKey { get; set; }
}

View File

@ -0,0 +1,8 @@
namespace AAIntegration.SimmonsBank.API.Models.Users;
public class UserUpdateRequest
{
public string? Username { get; set; } = null;
public string? Password { get; set; } = null;
public string? MFAKey { get; set; } = null;
}

View File

@ -1,4 +1,9 @@
using AAIntegration.SimmonsBank.API.Configs;
using AAIntegration.SimmonsBank.API.Handlers;
using AAIntegration.SimmonsBank.API.Helpers;
using AAIntegration.SimmonsBank.API.Services;
using Microsoft.AspNetCore.Authorization;
using Microsoft.EntityFrameworkCore;
internal class Program
{
@ -12,12 +17,34 @@ internal class Program
builder.Services.AddAuthentication()
.AddScheme<ApiKeyAuthenticationOptions, ApiKeyAuthenticationHandler>(ApiKeyAuthenticationOptions.DefaultScheme, null);
// Authorization
builder.Services.AddAuthorization(options => {
AuthorizationPolicyBuilder defaultAuthorizationPolicyBuilder = new AuthorizationPolicyBuilder(
ApiKeyAuthenticationOptions.DefaultScheme
);
defaultAuthorizationPolicyBuilder = defaultAuthorizationPolicyBuilder.RequireAuthenticatedUser();
options.DefaultPolicy = defaultAuthorizationPolicyBuilder.Build();
});
builder.Services.AddControllers();
// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
builder.Services.Configure<AppSettings>(builder.Configuration.GetSection("AppSettings"));
DatabaseConfig dbConfig = builder.Configuration.GetSection("Database").Get<DatabaseConfig>();
builder.Services.AddDbContext<DataContext>(opt =>
opt.UseNpgsql(dbConfig.GetConnectionString()));
builder.Services.AddScoped<IUserService, UserService>();
builder.Services.AddScoped<ICacheService, CacheService>();
builder.Services.AddScoped<ApiKeyAuthenticationHandler>();
var app = builder.Build();
// Configure the HTTP request pipeline.

View File

@ -0,0 +1,51 @@
namespace AAIntegration.SimmonsBank.API.Services;
using Microsoft.Extensions.Caching.Memory;
public interface ICacheService
{
int GetClientIdFromApiKey(string apiKey);
}
public class CacheService : ICacheService
{
private readonly IMemoryCache _memoryCache;
private readonly IUserService _userService;
public CacheService(IMemoryCache memoryCache, IUserService userService)
{
_memoryCache = memoryCache;
_userService = userService;
}
public int GetClientIdFromApiKey(string apiKey)
{
if (!_memoryCache.TryGetValue<Dictionary<string, int>>($"Authentication_ApiKeys", out var internalKeys))
{
internalKeys = _userService.GetAllApiKeys();
_memoryCache.Set($"Authentication_ApiKeys", internalKeys);
}
if (!internalKeys.TryGetValue(apiKey, out var clientId))
{
return -1;
}
return clientId;
}
/*public void InvalidateApiKey(string apiKey)
{
if (_memoryCache.TryGetValue<Dictionary<string, Guid>>("Authentication_ApiKeys", out var internalKeys))
{
if (internalKeys.ContainsKey(apiKey))
{
internalKeys.Remove(apiKey);
_memoryCache.Set("Authentication_ApiKeys", internalKeys);
}
}
_userService.InvalidateApiKey(apiKey);
}*/
}

View File

@ -0,0 +1,153 @@
namespace AAIntegration.SimmonsBank.API.Services;
using System;
using System.Collections;
using System.Collections.Generic;
using Microsoft.EntityFrameworkCore.Internal;
using Microsoft.IdentityModel.Tokens;
using System.Text;
using System.Security.Claims;
using Microsoft.Extensions.Options;
using AAIntegration.SimmonsBank.API.Entities;
using AAIntegration.SimmonsBank.API.Models.Users;
using AAIntegration.SimmonsBank.API.Helpers;
using AAIntegration.SimmonsBank.API.Configs;
using System.Security.Cryptography;
public interface IUserService
{
string Create(UserCreateRequest model);
//IEnumerable<User> GetAll();
//User GetById(int id);
void Update(string apiKey, UserUpdateRequest model);
void Delete(string apiKey);
Dictionary<string, int> GetAllApiKeys();
//string GetUserApiKey(int id);
//void InvalidateApiKey(string apiKey);
//string CreateUserApiKey(int id);
}
public class UserService : IUserService
{
private DataContext _context;
private readonly AppSettings _appSettings;
public UserService(
DataContext context,
IOptions<AppSettings> appSettings)
{
_context = context;
_appSettings = appSettings.Value;
}
public string Create(UserCreateRequest model)
{
User user = new User();
user.SimmonsBankUsername = model.Username;
user.SimmonsBankPassword = model.Password;
user.MFAKey = model.MFAKey;
// Generate API Key
user.ApiKey = generateApiKey();
// save user
_context.Users.Add(user);
_context.SaveChanges();
// Return API Key
return user.ApiKey;
}
/*public IEnumerable<User> GetAll()
{
return _context.Users;
}*/
/*public User GetById(int id)
{
return getUser(id);
}*/
public void Update(string apiKey, UserUpdateRequest model)
{
var user = getUser(apiKey);
// User.Username
if (model.Username != null)
user.SimmonsBankUsername = model.Username;
// User.Password
if (model.Password != null)
user.SimmonsBankPassword = model.Password;
// User.MFAKey
if (model.MFAKey != null)
user.MFAKey = model.MFAKey;
_context.Users.Update(user);
_context.SaveChanges();
}
public void Delete(string apiKey)
{
var user = getUser(apiKey);
_context.Users.Remove(user);
_context.SaveChanges();
}
public Dictionary<string, int> GetAllApiKeys()
{
return _context.Users
.Where(u => u.ApiKey != null)
.ToDictionary(u => u.ApiKey, u => u.Id);
}
/*public string GetUserApiKey(int id)
{
return this.getUser(id).ApiKey;
}*/
/*public void InvalidateApiKey(string apiKey)
{
User? user = _context.Users.FirstOrDefault(u => u.ApiKey == apiKey);
if (user is not null)
user.ApiKey = null;
}*/
// helper methods
private User getUser(int id)
{
var user = _context.Users.Find(id);
if (user == null) throw new KeyNotFoundException("User not found");
return user;
}
private User getUser(string ApiKey)
{
var user = _context.Users
.Where(u => u.ApiKey == ApiKey)
.FirstOrDefault();
if (user == null) throw new KeyNotFoundException("User not found");
return user;
}
private const string _prefix = "CT-";
private const int _numberOfSecureBytesToGenerate = 32;
private const int _lengthOfKey = 32;
private string generateApiKey()
{
var bytes = RandomNumberGenerator.GetBytes(_numberOfSecureBytesToGenerate);
string base64String = Convert.ToBase64String(bytes)
.Replace("+", "-")
.Replace("/", "_");
var keyLength = _lengthOfKey - _prefix.Length;
return _prefix + base64String[..keyLength];
}
}

View File

@ -5,5 +5,16 @@
"Microsoft.AspNetCore": "Warning"
}
},
"AllowedHosts": "*"
"AllowedHosts": "*",
"AppSettings": {
"Secret": "5de80277015f9fd564c4d1cc2cf827dbb1774cd66e7d79aa258d9c35a9f67f32fc6cf0dc24244242bd9501288e0fd69e315b",
"APIUrl": "https://localhost:5279"
},
"Database": {
"Host": "localhost",
"Name": "AAISB_DB",
"User": "postgres",
"Password": "nqA3UV3CliLLHpLL",
"Port": "15432"
}
}

View File

@ -8,13 +8,34 @@
".NETCoreApp,Version=v7.0": {
"AAIntegration.SimmonsBank.API/1.0.0": {
"dependencies": {
"Microsoft.AspNetCore.Authorization": "7.0.0",
"Microsoft.AspNetCore.OpenApi": "7.0.15",
"Microsoft.EntityFrameworkCore": "7.0.0",
"Microsoft.EntityFrameworkCore.Design": "7.0.0",
"Microsoft.IdentityModel.Tokens": "7.0.0",
"Npgsql.EntityFrameworkCore.PostgreSQL": "7.0.0",
"Swashbuckle.AspNetCore": "6.5.0"
},
"runtime": {
"AAIntegration.SimmonsBank.API.dll": {}
}
},
"Humanizer.Core/2.14.1": {
"runtime": {
"lib/net6.0/Humanizer.dll": {
"assemblyVersion": "2.14.0.0",
"fileVersion": "2.14.1.48190"
}
}
},
"Microsoft.AspNetCore.Authorization/7.0.0": {
"dependencies": {
"Microsoft.AspNetCore.Metadata": "7.0.0",
"Microsoft.Extensions.Logging.Abstractions": "7.0.0",
"Microsoft.Extensions.Options": "7.0.0"
}
},
"Microsoft.AspNetCore.Metadata/7.0.0": {},
"Microsoft.AspNetCore.OpenApi/7.0.15": {
"dependencies": {
"Microsoft.OpenApi": "1.4.3"
@ -26,7 +47,140 @@
}
}
},
"Microsoft.EntityFrameworkCore/7.0.0": {
"dependencies": {
"Microsoft.EntityFrameworkCore.Abstractions": "7.0.0",
"Microsoft.EntityFrameworkCore.Analyzers": "7.0.0",
"Microsoft.Extensions.Caching.Memory": "7.0.0",
"Microsoft.Extensions.DependencyInjection": "7.0.0",
"Microsoft.Extensions.Logging": "7.0.0"
},
"runtime": {
"lib/net6.0/Microsoft.EntityFrameworkCore.dll": {
"assemblyVersion": "7.0.0.0",
"fileVersion": "7.0.22.51807"
}
}
},
"Microsoft.EntityFrameworkCore.Abstractions/7.0.0": {
"runtime": {
"lib/net6.0/Microsoft.EntityFrameworkCore.Abstractions.dll": {
"assemblyVersion": "7.0.0.0",
"fileVersion": "7.0.22.51807"
}
}
},
"Microsoft.EntityFrameworkCore.Analyzers/7.0.0": {},
"Microsoft.EntityFrameworkCore.Design/7.0.0": {
"dependencies": {
"Humanizer.Core": "2.14.1",
"Microsoft.EntityFrameworkCore.Relational": "7.0.0",
"Microsoft.Extensions.DependencyModel": "7.0.0",
"Mono.TextTemplating": "2.2.1"
},
"runtime": {
"lib/net6.0/Microsoft.EntityFrameworkCore.Design.dll": {
"assemblyVersion": "7.0.0.0",
"fileVersion": "7.0.22.51807"
}
}
},
"Microsoft.EntityFrameworkCore.Relational/7.0.0": {
"dependencies": {
"Microsoft.EntityFrameworkCore": "7.0.0",
"Microsoft.Extensions.Configuration.Abstractions": "7.0.0"
},
"runtime": {
"lib/net6.0/Microsoft.EntityFrameworkCore.Relational.dll": {
"assemblyVersion": "7.0.0.0",
"fileVersion": "7.0.22.51807"
}
}
},
"Microsoft.Extensions.ApiDescription.Server/6.0.5": {},
"Microsoft.Extensions.Caching.Abstractions/7.0.0": {
"dependencies": {
"Microsoft.Extensions.Primitives": "7.0.0"
}
},
"Microsoft.Extensions.Caching.Memory/7.0.0": {
"dependencies": {
"Microsoft.Extensions.Caching.Abstractions": "7.0.0",
"Microsoft.Extensions.DependencyInjection.Abstractions": "7.0.0",
"Microsoft.Extensions.Logging.Abstractions": "7.0.0",
"Microsoft.Extensions.Options": "7.0.0",
"Microsoft.Extensions.Primitives": "7.0.0"
}
},
"Microsoft.Extensions.Configuration.Abstractions/7.0.0": {
"dependencies": {
"Microsoft.Extensions.Primitives": "7.0.0"
}
},
"Microsoft.Extensions.DependencyInjection/7.0.0": {
"dependencies": {
"Microsoft.Extensions.DependencyInjection.Abstractions": "7.0.0"
}
},
"Microsoft.Extensions.DependencyInjection.Abstractions/7.0.0": {},
"Microsoft.Extensions.DependencyModel/7.0.0": {
"dependencies": {
"System.Text.Encodings.Web": "7.0.0",
"System.Text.Json": "7.0.0"
},
"runtime": {
"lib/net7.0/Microsoft.Extensions.DependencyModel.dll": {
"assemblyVersion": "7.0.0.0",
"fileVersion": "7.0.22.51805"
}
}
},
"Microsoft.Extensions.Logging/7.0.0": {
"dependencies": {
"Microsoft.Extensions.DependencyInjection": "7.0.0",
"Microsoft.Extensions.DependencyInjection.Abstractions": "7.0.0",
"Microsoft.Extensions.Logging.Abstractions": "7.0.0",
"Microsoft.Extensions.Options": "7.0.0"
}
},
"Microsoft.Extensions.Logging.Abstractions/7.0.0": {},
"Microsoft.Extensions.Options/7.0.0": {
"dependencies": {
"Microsoft.Extensions.DependencyInjection.Abstractions": "7.0.0",
"Microsoft.Extensions.Primitives": "7.0.0"
}
},
"Microsoft.Extensions.Primitives/7.0.0": {},
"Microsoft.IdentityModel.Abstractions/7.0.0": {
"runtime": {
"lib/net6.0/Microsoft.IdentityModel.Abstractions.dll": {
"assemblyVersion": "7.0.0.0",
"fileVersion": "7.0.0.40911"
}
}
},
"Microsoft.IdentityModel.Logging/7.0.0": {
"dependencies": {
"Microsoft.IdentityModel.Abstractions": "7.0.0"
},
"runtime": {
"lib/net6.0/Microsoft.IdentityModel.Logging.dll": {
"assemblyVersion": "7.0.0.0",
"fileVersion": "7.0.0.40911"
}
}
},
"Microsoft.IdentityModel.Tokens/7.0.0": {
"dependencies": {
"Microsoft.IdentityModel.Logging": "7.0.0"
},
"runtime": {
"lib/net6.0/Microsoft.IdentityModel.Tokens.dll": {
"assemblyVersion": "7.0.0.0",
"fileVersion": "7.0.0.40911"
}
}
},
"Microsoft.OpenApi/1.4.3": {
"runtime": {
"lib/netstandard2.0/Microsoft.OpenApi.dll": {
@ -35,6 +189,43 @@
}
}
},
"Mono.TextTemplating/2.2.1": {
"dependencies": {
"System.CodeDom": "4.4.0"
},
"runtime": {
"lib/netstandard2.0/Mono.TextTemplating.dll": {
"assemblyVersion": "2.2.0.0",
"fileVersion": "2.2.1.1"
}
}
},
"Npgsql/7.0.0": {
"dependencies": {
"Microsoft.Extensions.Logging.Abstractions": "7.0.0",
"System.Runtime.CompilerServices.Unsafe": "6.0.0"
},
"runtime": {
"lib/net7.0/Npgsql.dll": {
"assemblyVersion": "7.0.0.0",
"fileVersion": "7.0.0.0"
}
}
},
"Npgsql.EntityFrameworkCore.PostgreSQL/7.0.0": {
"dependencies": {
"Microsoft.EntityFrameworkCore": "7.0.0",
"Microsoft.EntityFrameworkCore.Abstractions": "7.0.0",
"Microsoft.EntityFrameworkCore.Relational": "7.0.0",
"Npgsql": "7.0.0"
},
"runtime": {
"lib/net7.0/Npgsql.EntityFrameworkCore.PostgreSQL.dll": {
"assemblyVersion": "7.0.0.0",
"fileVersion": "7.0.0.0"
}
}
},
"Swashbuckle.AspNetCore/6.5.0": {
"dependencies": {
"Microsoft.Extensions.ApiDescription.Server": "6.0.5",
@ -72,6 +263,21 @@
"fileVersion": "6.5.0.0"
}
}
},
"System.CodeDom/4.4.0": {
"runtime": {
"lib/netstandard2.0/System.CodeDom.dll": {
"assemblyVersion": "4.0.0.0",
"fileVersion": "4.6.25519.3"
}
}
},
"System.Runtime.CompilerServices.Unsafe/6.0.0": {},
"System.Text.Encodings.Web/7.0.0": {},
"System.Text.Json/7.0.0": {
"dependencies": {
"System.Text.Encodings.Web": "7.0.0"
}
}
}
},
@ -81,6 +287,27 @@
"serviceable": false,
"sha512": ""
},
"Humanizer.Core/2.14.1": {
"type": "package",
"serviceable": true,
"sha512": "sha512-lQKvtaTDOXnoVJ20ibTuSIOf2i0uO0MPbDhd1jm238I+U/2ZnRENj0cktKZhtchBMtCUSRQ5v4xBCUbKNmyVMw==",
"path": "humanizer.core/2.14.1",
"hashPath": "humanizer.core.2.14.1.nupkg.sha512"
},
"Microsoft.AspNetCore.Authorization/7.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-0O7C7XHj+17Q0geMpnpRC0fnnALH2Yhaa2SAzX00OkeF2NZ/+zWoDymbSnepg1qhueufUivihZiVGtMeq5Zywg==",
"path": "microsoft.aspnetcore.authorization/7.0.0",
"hashPath": "microsoft.aspnetcore.authorization.7.0.0.nupkg.sha512"
},
"Microsoft.AspNetCore.Metadata/7.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-ut2azlKz7BQpCKu6AiwKEjMHpRWoD4qu2Ff/n6KagjFsyDAfZY7lgYJ158vr4O0jXet6pV1uF1q3jmXvki0OlA==",
"path": "microsoft.aspnetcore.metadata/7.0.0",
"hashPath": "microsoft.aspnetcore.metadata.7.0.0.nupkg.sha512"
},
"Microsoft.AspNetCore.OpenApi/7.0.15": {
"type": "package",
"serviceable": true,
@ -88,6 +315,41 @@
"path": "microsoft.aspnetcore.openapi/7.0.15",
"hashPath": "microsoft.aspnetcore.openapi.7.0.15.nupkg.sha512"
},
"Microsoft.EntityFrameworkCore/7.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-9W+IfmAzMrp2ZpKZLhgTlWljSBM9Erldis1us61DAGi+L7Q6vilTbe1G2zDxtYO8F2H0I0Qnupdx5Cp4s2xoZw==",
"path": "microsoft.entityframeworkcore/7.0.0",
"hashPath": "microsoft.entityframeworkcore.7.0.0.nupkg.sha512"
},
"Microsoft.EntityFrameworkCore.Abstractions/7.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-Pfu3Zjj5+d2Gt27oE9dpGiF/VobBB+s5ogrfI9sBsXQE1SG49RqVz5+IyeNnzhyejFrPIQsPDRMchhcojy4Hbw==",
"path": "microsoft.entityframeworkcore.abstractions/7.0.0",
"hashPath": "microsoft.entityframeworkcore.abstractions.7.0.0.nupkg.sha512"
},
"Microsoft.EntityFrameworkCore.Analyzers/7.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-Qkd2H+jLe37o5ku+LjT6qf7kAHY75Yfn2bBDQgqr13DTOLYpEy1Mt93KPFjaZvIu/srEcbfGGMRL7urKm5zN8Q==",
"path": "microsoft.entityframeworkcore.analyzers/7.0.0",
"hashPath": "microsoft.entityframeworkcore.analyzers.7.0.0.nupkg.sha512"
},
"Microsoft.EntityFrameworkCore.Design/7.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-fEEU/zZ/VblZRQxHNZxgGKVtEtOGqEAmuHkACV1i0H031bM8PQKTS7PlKPVOgg0C1v+6yeHoIAGGgbAvG9f7kw==",
"path": "microsoft.entityframeworkcore.design/7.0.0",
"hashPath": "microsoft.entityframeworkcore.design.7.0.0.nupkg.sha512"
},
"Microsoft.EntityFrameworkCore.Relational/7.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-eQiYygtR2xZ0Uy7KtiFRHpoEx/U8xNwbNRgu1pEJgSxbJLtg6tDL1y2YcIbSuIRSNEljXIIHq/apEhGm1QL70g==",
"path": "microsoft.entityframeworkcore.relational/7.0.0",
"hashPath": "microsoft.entityframeworkcore.relational.7.0.0.nupkg.sha512"
},
"Microsoft.Extensions.ApiDescription.Server/6.0.5": {
"type": "package",
"serviceable": true,
@ -95,6 +357,97 @@
"path": "microsoft.extensions.apidescription.server/6.0.5",
"hashPath": "microsoft.extensions.apidescription.server.6.0.5.nupkg.sha512"
},
"Microsoft.Extensions.Caching.Abstractions/7.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-IeimUd0TNbhB4ded3AbgBLQv2SnsiVugDyGV1MvspQFVlA07nDC7Zul7kcwH5jWN3JiTcp/ySE83AIJo8yfKjg==",
"path": "microsoft.extensions.caching.abstractions/7.0.0",
"hashPath": "microsoft.extensions.caching.abstractions.7.0.0.nupkg.sha512"
},
"Microsoft.Extensions.Caching.Memory/7.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-xpidBs2KCE2gw1JrD0quHE72kvCaI3xFql5/Peb2GRtUuZX+dYPoK/NTdVMiM67Svym0M0Df9A3xyU0FbMQhHw==",
"path": "microsoft.extensions.caching.memory/7.0.0",
"hashPath": "microsoft.extensions.caching.memory.7.0.0.nupkg.sha512"
},
"Microsoft.Extensions.Configuration.Abstractions/7.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-f34u2eaqIjNO9YLHBz8rozVZ+TcFiFs0F3r7nUJd7FRkVSxk8u4OpoK226mi49MwexHOR2ibP9MFvRUaLilcQQ==",
"path": "microsoft.extensions.configuration.abstractions/7.0.0",
"hashPath": "microsoft.extensions.configuration.abstractions.7.0.0.nupkg.sha512"
},
"Microsoft.Extensions.DependencyInjection/7.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-elNeOmkeX3eDVG6pYVeV82p29hr+UKDaBhrZyWvWLw/EVZSYEkZlQdkp0V39k/Xehs2Qa0mvoCvkVj3eQxNQ1Q==",
"path": "microsoft.extensions.dependencyinjection/7.0.0",
"hashPath": "microsoft.extensions.dependencyinjection.7.0.0.nupkg.sha512"
},
"Microsoft.Extensions.DependencyInjection.Abstractions/7.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-h3j/QfmFN4S0w4C2A6X7arXij/M/OVw3uQHSOFxnND4DyAzO1F9eMX7Eti7lU/OkSthEE0WzRsfT/Dmx86jzCw==",
"path": "microsoft.extensions.dependencyinjection.abstractions/7.0.0",
"hashPath": "microsoft.extensions.dependencyinjection.abstractions.7.0.0.nupkg.sha512"
},
"Microsoft.Extensions.DependencyModel/7.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-oONNYd71J3LzkWc4fUHl3SvMfiQMYUCo/mDHDEu76hYYxdhdrPYv6fvGv9nnKVyhE9P0h20AU8RZB5OOWQcAXg==",
"path": "microsoft.extensions.dependencymodel/7.0.0",
"hashPath": "microsoft.extensions.dependencymodel.7.0.0.nupkg.sha512"
},
"Microsoft.Extensions.Logging/7.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-Nw2muoNrOG5U5qa2ZekXwudUn2BJcD41e65zwmDHb1fQegTX66UokLWZkJRpqSSHXDOWZ5V0iqhbxOEky91atA==",
"path": "microsoft.extensions.logging/7.0.0",
"hashPath": "microsoft.extensions.logging.7.0.0.nupkg.sha512"
},
"Microsoft.Extensions.Logging.Abstractions/7.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-kmn78+LPVMOWeITUjIlfxUPDsI0R6G0RkeAMBmQxAJ7vBJn4q2dTva7pWi65ceN5vPGjJ9q/Uae2WKgvfktJAw==",
"path": "microsoft.extensions.logging.abstractions/7.0.0",
"hashPath": "microsoft.extensions.logging.abstractions.7.0.0.nupkg.sha512"
},
"Microsoft.Extensions.Options/7.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-lP1yBnTTU42cKpMozuafbvNtQ7QcBjr/CcK3bYOGEMH55Fjt+iecXjT6chR7vbgCMqy3PG3aNQSZgo/EuY/9qQ==",
"path": "microsoft.extensions.options/7.0.0",
"hashPath": "microsoft.extensions.options.7.0.0.nupkg.sha512"
},
"Microsoft.Extensions.Primitives/7.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-um1KU5kxcRp3CNuI8o/GrZtD4AIOXDk+RLsytjZ9QPok3ttLUelLKpilVPuaFT3TFjOhSibUAso0odbOaCDj3Q==",
"path": "microsoft.extensions.primitives/7.0.0",
"hashPath": "microsoft.extensions.primitives.7.0.0.nupkg.sha512"
},
"Microsoft.IdentityModel.Abstractions/7.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-7iSWSRR72VKeonFdfDi43Lvkca98Y0F3TmmWhRSuHbkjk/IKUSO0Qd272LQFZpi5eDNQNbUXy3o4THXhOAU6cw==",
"path": "microsoft.identitymodel.abstractions/7.0.0",
"hashPath": "microsoft.identitymodel.abstractions.7.0.0.nupkg.sha512"
},
"Microsoft.IdentityModel.Logging/7.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-6I35Kt2/PQZAyUYLo3+QgT/LubZ5/4Ojelkbyo8KKdDgjMbVocAx2B3P5V7iMCz+rsAe/RLr6ql87QKnHtI+aw==",
"path": "microsoft.identitymodel.logging/7.0.0",
"hashPath": "microsoft.identitymodel.logging.7.0.0.nupkg.sha512"
},
"Microsoft.IdentityModel.Tokens/7.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-dxYqmmFLsjBQZ6F6a4XDzrZ1CTxBRFVigJvWiNtXiIsT6UlYMxs9ONMaGx9XKzcxmcgEQ2ADuCqKZduz0LR9Hw==",
"path": "microsoft.identitymodel.tokens/7.0.0",
"hashPath": "microsoft.identitymodel.tokens.7.0.0.nupkg.sha512"
},
"Microsoft.OpenApi/1.4.3": {
"type": "package",
"serviceable": true,
@ -102,6 +455,27 @@
"path": "microsoft.openapi/1.4.3",
"hashPath": "microsoft.openapi.1.4.3.nupkg.sha512"
},
"Mono.TextTemplating/2.2.1": {
"type": "package",
"serviceable": true,
"sha512": "sha512-KZYeKBET/2Z0gY1WlTAK7+RHTl7GSbtvTLDXEZZojUdAPqpQNDL6tHv7VUpqfX5VEOh+uRGKaZXkuD253nEOBQ==",
"path": "mono.texttemplating/2.2.1",
"hashPath": "mono.texttemplating.2.2.1.nupkg.sha512"
},
"Npgsql/7.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-tOBFksJZ2MiEz8xtDUgS5IG19jVO3nSP15QDYWiiGpXHe0PsLoQBts2Sg3hHKrrLTuw+AjsJz9iKvvGNHyKDIg==",
"path": "npgsql/7.0.0",
"hashPath": "npgsql.7.0.0.nupkg.sha512"
},
"Npgsql.EntityFrameworkCore.PostgreSQL/7.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-CyUNlFZmtX2Kmw8XK5Tlx5eVUCzWJ+zJHErxZiMo2Y8zCRuH9+/OMGwG+9Mmp5zD5p3Ifbi5Pp3btsqoDDkSZQ==",
"path": "npgsql.entityframeworkcore.postgresql/7.0.0",
"hashPath": "npgsql.entityframeworkcore.postgresql.7.0.0.nupkg.sha512"
},
"Swashbuckle.AspNetCore/6.5.0": {
"type": "package",
"serviceable": true,
@ -129,6 +503,34 @@
"sha512": "sha512-OvbvxX+wL8skxTBttcBsVxdh73Fag4xwqEU2edh4JMn7Ws/xJHnY/JB1e9RoCb6XpDxUF3hD9A0Z1lEUx40Pfw==",
"path": "swashbuckle.aspnetcore.swaggerui/6.5.0",
"hashPath": "swashbuckle.aspnetcore.swaggerui.6.5.0.nupkg.sha512"
},
"System.CodeDom/4.4.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-2sCCb7doXEwtYAbqzbF/8UAeDRMNmPaQbU2q50Psg1J9KzumyVVCgKQY8s53WIPTufNT0DpSe9QRvVjOzfDWBA==",
"path": "system.codedom/4.4.0",
"hashPath": "system.codedom.4.4.0.nupkg.sha512"
},
"System.Runtime.CompilerServices.Unsafe/6.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-/iUeP3tq1S0XdNNoMz5C9twLSrM/TH+qElHkXWaPvuNOt+99G75NrV0OS2EqHx5wMN7popYjpc8oTjC1y16DLg==",
"path": "system.runtime.compilerservices.unsafe/6.0.0",
"hashPath": "system.runtime.compilerservices.unsafe.6.0.0.nupkg.sha512"
},
"System.Text.Encodings.Web/7.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-OP6umVGxc0Z0MvZQBVigj4/U31Pw72ITihDWP9WiWDm+q5aoe0GaJivsfYGq53o6dxH7DcXWiCTl7+0o2CGdmg==",
"path": "system.text.encodings.web/7.0.0",
"hashPath": "system.text.encodings.web.7.0.0.nupkg.sha512"
},
"System.Text.Json/7.0.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-DaGSsVqKsn/ia6RG8frjwmJonfos0srquhw09TlT8KRw5I43E+4gs+/bZj4K0vShJ5H9imCuXupb4RmS+dBy3w==",
"path": "system.text.json/7.0.0",
"hashPath": "system.text.json.7.0.0.nupkg.sha512"
}
}
}

View File

@ -13,6 +13,7 @@
],
"configProperties": {
"System.GC.Server": true,
"System.Reflection.NullabilityInfoContext.IsSupported": true,
"System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": false
}
}

Binary file not shown.

Binary file not shown.

View File

@ -5,5 +5,16 @@
"Microsoft.AspNetCore": "Warning"
}
},
"AllowedHosts": "*"
"AllowedHosts": "*",
"AppSettings": {
"Secret": "5de80277015f9fd564c4d1cc2cf827dbb1774cd66e7d79aa258d9c35a9f67f32fc6cf0dc24244242bd9501288e0fd69e315b",
"APIUrl": "https://localhost:5279"
},
"Database": {
"Host": "localhost",
"Name": "AAISB_DB",
"User": "postgres",
"Password": "nqA3UV3CliLLHpLL",
"Port": "15432"
}
}

View File

@ -38,10 +38,32 @@
"net7.0": {
"targetAlias": "net7.0",
"dependencies": {
"Microsoft.AspNetCore.Authorization": {
"target": "Package",
"version": "[7.0.0, )"
},
"Microsoft.AspNetCore.OpenApi": {
"target": "Package",
"version": "[7.0.15, )"
},
"Microsoft.EntityFrameworkCore": {
"target": "Package",
"version": "[7.0.0, )"
},
"Microsoft.EntityFrameworkCore.Design": {
"include": "Runtime, Build, Native, ContentFiles, Analyzers, BuildTransitive",
"suppressParent": "All",
"target": "Package",
"version": "[7.0.0, )"
},
"Microsoft.IdentityModel.Tokens": {
"target": "Package",
"version": "[7.0.0, )"
},
"Npgsql.EntityFrameworkCore.PostgreSQL": {
"target": "Package",
"version": "[7.0.0, )"
},
"Swashbuckle.AspNetCore": {
"target": "Package",
"version": "[6.5.0, )"

View File

@ -15,6 +15,8 @@
<ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
<Import Project="$(NuGetPackageRoot)microsoft.extensions.apidescription.server/6.0.5/build/Microsoft.Extensions.ApiDescription.Server.props" Condition="Exists('$(NuGetPackageRoot)microsoft.extensions.apidescription.server/6.0.5/build/Microsoft.Extensions.ApiDescription.Server.props')" />
<Import Project="$(NuGetPackageRoot)swashbuckle.aspnetcore/6.5.0/build/Swashbuckle.AspNetCore.props" Condition="Exists('$(NuGetPackageRoot)swashbuckle.aspnetcore/6.5.0/build/Swashbuckle.AspNetCore.props')" />
<Import Project="$(NuGetPackageRoot)microsoft.entityframeworkcore/7.0.0/buildTransitive/net6.0/Microsoft.EntityFrameworkCore.props" Condition="Exists('$(NuGetPackageRoot)microsoft.entityframeworkcore/7.0.0/buildTransitive/net6.0/Microsoft.EntityFrameworkCore.props')" />
<Import Project="$(NuGetPackageRoot)microsoft.entityframeworkcore.design/7.0.0/build/net6.0/Microsoft.EntityFrameworkCore.Design.props" Condition="Exists('$(NuGetPackageRoot)microsoft.entityframeworkcore.design/7.0.0/build/net6.0/Microsoft.EntityFrameworkCore.Design.props')" />
</ImportGroup>
<PropertyGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
<PkgMicrosoft_Extensions_ApiDescription_Server Condition=" '$(PkgMicrosoft_Extensions_ApiDescription_Server)' == '' ">/home/william/.nuget/packages/microsoft.extensions.apidescription.server/6.0.5</PkgMicrosoft_Extensions_ApiDescription_Server>

View File

@ -1,6 +1,8 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
<Import Project="$(NuGetPackageRoot)system.text.json/7.0.0/buildTransitive/net6.0/System.Text.Json.targets" Condition="Exists('$(NuGetPackageRoot)system.text.json/7.0.0/buildTransitive/net6.0/System.Text.Json.targets')" />
<Import Project="$(NuGetPackageRoot)microsoft.extensions.apidescription.server/6.0.5/build/Microsoft.Extensions.ApiDescription.Server.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.extensions.apidescription.server/6.0.5/build/Microsoft.Extensions.ApiDescription.Server.targets')" />
<Import Project="$(NuGetPackageRoot)microsoft.extensions.logging.abstractions/7.0.0/buildTransitive/net6.0/Microsoft.Extensions.Logging.Abstractions.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.extensions.logging.abstractions/7.0.0/buildTransitive/net6.0/Microsoft.Extensions.Logging.Abstractions.targets')" />
</ImportGroup>
</Project>

View File

@ -1 +1 @@
eb9b1d086ec886252a72e514a1cf10cc4b5bd587
bd7d70d00f668e0d8bf64847deff236ad4b0c3cc

View File

@ -5,11 +5,24 @@
/home/william/Git/Integration-TransactionImporter-SimmonsBank/AAIntegration.SimmonsBank.API/bin/Debug/net7.0/AAIntegration.SimmonsBank.API.runtimeconfig.json
/home/william/Git/Integration-TransactionImporter-SimmonsBank/AAIntegration.SimmonsBank.API/bin/Debug/net7.0/AAIntegration.SimmonsBank.API.dll
/home/william/Git/Integration-TransactionImporter-SimmonsBank/AAIntegration.SimmonsBank.API/bin/Debug/net7.0/AAIntegration.SimmonsBank.API.pdb
/home/william/Git/Integration-TransactionImporter-SimmonsBank/AAIntegration.SimmonsBank.API/bin/Debug/net7.0/Humanizer.dll
/home/william/Git/Integration-TransactionImporter-SimmonsBank/AAIntegration.SimmonsBank.API/bin/Debug/net7.0/Microsoft.AspNetCore.OpenApi.dll
/home/william/Git/Integration-TransactionImporter-SimmonsBank/AAIntegration.SimmonsBank.API/bin/Debug/net7.0/Microsoft.EntityFrameworkCore.dll
/home/william/Git/Integration-TransactionImporter-SimmonsBank/AAIntegration.SimmonsBank.API/bin/Debug/net7.0/Microsoft.EntityFrameworkCore.Abstractions.dll
/home/william/Git/Integration-TransactionImporter-SimmonsBank/AAIntegration.SimmonsBank.API/bin/Debug/net7.0/Microsoft.EntityFrameworkCore.Design.dll
/home/william/Git/Integration-TransactionImporter-SimmonsBank/AAIntegration.SimmonsBank.API/bin/Debug/net7.0/Microsoft.EntityFrameworkCore.Relational.dll
/home/william/Git/Integration-TransactionImporter-SimmonsBank/AAIntegration.SimmonsBank.API/bin/Debug/net7.0/Microsoft.Extensions.DependencyModel.dll
/home/william/Git/Integration-TransactionImporter-SimmonsBank/AAIntegration.SimmonsBank.API/bin/Debug/net7.0/Microsoft.IdentityModel.Abstractions.dll
/home/william/Git/Integration-TransactionImporter-SimmonsBank/AAIntegration.SimmonsBank.API/bin/Debug/net7.0/Microsoft.IdentityModel.Logging.dll
/home/william/Git/Integration-TransactionImporter-SimmonsBank/AAIntegration.SimmonsBank.API/bin/Debug/net7.0/Microsoft.IdentityModel.Tokens.dll
/home/william/Git/Integration-TransactionImporter-SimmonsBank/AAIntegration.SimmonsBank.API/bin/Debug/net7.0/Microsoft.OpenApi.dll
/home/william/Git/Integration-TransactionImporter-SimmonsBank/AAIntegration.SimmonsBank.API/bin/Debug/net7.0/Mono.TextTemplating.dll
/home/william/Git/Integration-TransactionImporter-SimmonsBank/AAIntegration.SimmonsBank.API/bin/Debug/net7.0/Npgsql.dll
/home/william/Git/Integration-TransactionImporter-SimmonsBank/AAIntegration.SimmonsBank.API/bin/Debug/net7.0/Npgsql.EntityFrameworkCore.PostgreSQL.dll
/home/william/Git/Integration-TransactionImporter-SimmonsBank/AAIntegration.SimmonsBank.API/bin/Debug/net7.0/Swashbuckle.AspNetCore.Swagger.dll
/home/william/Git/Integration-TransactionImporter-SimmonsBank/AAIntegration.SimmonsBank.API/bin/Debug/net7.0/Swashbuckle.AspNetCore.SwaggerGen.dll
/home/william/Git/Integration-TransactionImporter-SimmonsBank/AAIntegration.SimmonsBank.API/bin/Debug/net7.0/Swashbuckle.AspNetCore.SwaggerUI.dll
/home/william/Git/Integration-TransactionImporter-SimmonsBank/AAIntegration.SimmonsBank.API/bin/Debug/net7.0/System.CodeDom.dll
/home/william/Git/Integration-TransactionImporter-SimmonsBank/AAIntegration.SimmonsBank.API/obj/Debug/net7.0/AAIntegration.SimmonsBank.API.csproj.AssemblyReference.cache
/home/william/Git/Integration-TransactionImporter-SimmonsBank/AAIntegration.SimmonsBank.API/obj/Debug/net7.0/AAIntegration.SimmonsBank.API.GeneratedMSBuildEditorConfig.editorconfig
/home/william/Git/Integration-TransactionImporter-SimmonsBank/AAIntegration.SimmonsBank.API/obj/Debug/net7.0/AAIntegration.SimmonsBank.API.AssemblyInfoInputs.cache

View File

@ -1 +1 @@
702df8d1d86e128e342486c48a85116b6fdc96e1
73736abff76b35e69e45e19ba4a468a4281d3a6a

File diff suppressed because it is too large Load Diff

View File

@ -1,16 +1,44 @@
{
"version": 2,
"dgSpecHash": "XQrq5LBJp+1kT3+rj0AHhB8AHpRyUUUinZzEJ/+2HgUt/elY0PG2VzNm+fyVtUTHGtWNVXVkgTkQY4KV3eBuoQ==",
"dgSpecHash": "+YzPVm6dCqls1vMVNzEq7Me1vMtNZci2DFK/dzhgGd7F3oUcG2jW1uWdu7yR4roqWl4E1HzertAKQW8S2e71Yw==",
"success": true,
"projectFilePath": "/home/william/Git/Integration-TransactionImporter-SimmonsBank/AAIntegration.SimmonsBank.API/AAIntegration.SimmonsBank.API.csproj",
"expectedPackageFiles": [
"/home/william/.nuget/packages/humanizer.core/2.14.1/humanizer.core.2.14.1.nupkg.sha512",
"/home/william/.nuget/packages/microsoft.aspnetcore.authorization/7.0.0/microsoft.aspnetcore.authorization.7.0.0.nupkg.sha512",
"/home/william/.nuget/packages/microsoft.aspnetcore.metadata/7.0.0/microsoft.aspnetcore.metadata.7.0.0.nupkg.sha512",
"/home/william/.nuget/packages/microsoft.aspnetcore.openapi/7.0.15/microsoft.aspnetcore.openapi.7.0.15.nupkg.sha512",
"/home/william/.nuget/packages/microsoft.entityframeworkcore/7.0.0/microsoft.entityframeworkcore.7.0.0.nupkg.sha512",
"/home/william/.nuget/packages/microsoft.entityframeworkcore.abstractions/7.0.0/microsoft.entityframeworkcore.abstractions.7.0.0.nupkg.sha512",
"/home/william/.nuget/packages/microsoft.entityframeworkcore.analyzers/7.0.0/microsoft.entityframeworkcore.analyzers.7.0.0.nupkg.sha512",
"/home/william/.nuget/packages/microsoft.entityframeworkcore.design/7.0.0/microsoft.entityframeworkcore.design.7.0.0.nupkg.sha512",
"/home/william/.nuget/packages/microsoft.entityframeworkcore.relational/7.0.0/microsoft.entityframeworkcore.relational.7.0.0.nupkg.sha512",
"/home/william/.nuget/packages/microsoft.extensions.apidescription.server/6.0.5/microsoft.extensions.apidescription.server.6.0.5.nupkg.sha512",
"/home/william/.nuget/packages/microsoft.extensions.caching.abstractions/7.0.0/microsoft.extensions.caching.abstractions.7.0.0.nupkg.sha512",
"/home/william/.nuget/packages/microsoft.extensions.caching.memory/7.0.0/microsoft.extensions.caching.memory.7.0.0.nupkg.sha512",
"/home/william/.nuget/packages/microsoft.extensions.configuration.abstractions/7.0.0/microsoft.extensions.configuration.abstractions.7.0.0.nupkg.sha512",
"/home/william/.nuget/packages/microsoft.extensions.dependencyinjection/7.0.0/microsoft.extensions.dependencyinjection.7.0.0.nupkg.sha512",
"/home/william/.nuget/packages/microsoft.extensions.dependencyinjection.abstractions/7.0.0/microsoft.extensions.dependencyinjection.abstractions.7.0.0.nupkg.sha512",
"/home/william/.nuget/packages/microsoft.extensions.dependencymodel/7.0.0/microsoft.extensions.dependencymodel.7.0.0.nupkg.sha512",
"/home/william/.nuget/packages/microsoft.extensions.logging/7.0.0/microsoft.extensions.logging.7.0.0.nupkg.sha512",
"/home/william/.nuget/packages/microsoft.extensions.logging.abstractions/7.0.0/microsoft.extensions.logging.abstractions.7.0.0.nupkg.sha512",
"/home/william/.nuget/packages/microsoft.extensions.options/7.0.0/microsoft.extensions.options.7.0.0.nupkg.sha512",
"/home/william/.nuget/packages/microsoft.extensions.primitives/7.0.0/microsoft.extensions.primitives.7.0.0.nupkg.sha512",
"/home/william/.nuget/packages/microsoft.identitymodel.abstractions/7.0.0/microsoft.identitymodel.abstractions.7.0.0.nupkg.sha512",
"/home/william/.nuget/packages/microsoft.identitymodel.logging/7.0.0/microsoft.identitymodel.logging.7.0.0.nupkg.sha512",
"/home/william/.nuget/packages/microsoft.identitymodel.tokens/7.0.0/microsoft.identitymodel.tokens.7.0.0.nupkg.sha512",
"/home/william/.nuget/packages/microsoft.openapi/1.4.3/microsoft.openapi.1.4.3.nupkg.sha512",
"/home/william/.nuget/packages/mono.texttemplating/2.2.1/mono.texttemplating.2.2.1.nupkg.sha512",
"/home/william/.nuget/packages/npgsql/7.0.0/npgsql.7.0.0.nupkg.sha512",
"/home/william/.nuget/packages/npgsql.entityframeworkcore.postgresql/7.0.0/npgsql.entityframeworkcore.postgresql.7.0.0.nupkg.sha512",
"/home/william/.nuget/packages/swashbuckle.aspnetcore/6.5.0/swashbuckle.aspnetcore.6.5.0.nupkg.sha512",
"/home/william/.nuget/packages/swashbuckle.aspnetcore.swagger/6.5.0/swashbuckle.aspnetcore.swagger.6.5.0.nupkg.sha512",
"/home/william/.nuget/packages/swashbuckle.aspnetcore.swaggergen/6.5.0/swashbuckle.aspnetcore.swaggergen.6.5.0.nupkg.sha512",
"/home/william/.nuget/packages/swashbuckle.aspnetcore.swaggerui/6.5.0/swashbuckle.aspnetcore.swaggerui.6.5.0.nupkg.sha512",
"/home/william/.nuget/packages/system.codedom/4.4.0/system.codedom.4.4.0.nupkg.sha512",
"/home/william/.nuget/packages/system.runtime.compilerservices.unsafe/6.0.0/system.runtime.compilerservices.unsafe.6.0.0.nupkg.sha512",
"/home/william/.nuget/packages/system.text.encodings.web/7.0.0/system.text.encodings.web.7.0.0.nupkg.sha512",
"/home/william/.nuget/packages/system.text.json/7.0.0/system.text.json.7.0.0.nupkg.sha512",
"/home/william/.nuget/packages/microsoft.aspnetcore.app.ref/7.0.15/microsoft.aspnetcore.app.ref.7.0.15.nupkg.sha512"
],
"logs": []

View File

@ -18,4 +18,8 @@ When running pgAdmin (a container in the docker compose stack) if there are erro
You may also need to allow full rwx (Read, Write, and Execute) rights on the directory.
```sudo chmod -R 777 ./Postgres/pg-admin_data```
```sudo chmod -R 777 ./Postgres/pg-admin_data```
## Namespace
AAIntegration.SimmonsBank.API