Update Features
This commit is contained in:
parent
23690cc6cf
commit
235050705d
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Binary file not shown.
|
@ -1,6 +1,6 @@
|
||||||
using AutoMapper;
|
using AutoMapper;
|
||||||
using MiniSkeletonAPI.Application.Common.Interfaces;
|
using MiniSkeletonAPI.Application.Common.Interfaces;
|
||||||
using MiniSkeletonAPI.Application.Identity.Roles.Queries.GetRolesWithPagination;
|
using MiniSkeletonAPI.Application.Identity.Roles.Dtos;
|
||||||
using MiniSkeletonAPI.Application.Identity.Users.Queries.GetUsersWithPagination;
|
using MiniSkeletonAPI.Application.Identity.Users.Queries.GetUsersWithPagination;
|
||||||
using MiniSkeletonAPI.Domain.Entities;
|
using MiniSkeletonAPI.Domain.Entities;
|
||||||
using MiniSkeletonAPI.Infrastructure.Identity;
|
using MiniSkeletonAPI.Infrastructure.Identity;
|
||||||
|
@ -12,7 +12,7 @@ using System.Security.Principal;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
namespace MiniSkeletonAPI.Application.Common.Mappings
|
namespace MiniSkeletonAPI.Infrastructure.Common.Mappings
|
||||||
{
|
{
|
||||||
public class MappingProfile : Profile
|
public class MappingProfile : Profile
|
||||||
{
|
{
|
||||||
|
|
|
@ -107,8 +107,8 @@ public class ApplicationDbContextInitialiser
|
||||||
//await _roleManager.CreateAsync(new IdentityRole("Administrators"));
|
//await _roleManager.CreateAsync(new IdentityRole("Administrators"));
|
||||||
var adminRole = await _roleManager.FindByNameAsync("Administrator");
|
var adminRole = await _roleManager.FindByNameAsync("Administrator");
|
||||||
|
|
||||||
//await _roleManager.AddClaimAsync(adminRole, new Claim(CustomClaimTypes.Permission, Permissions.Dashboards.View));
|
await _roleManager.AddClaimAsync(adminRole, new Claim(CustomClaimTypes.Permission, Permissions.Dashboards.View));
|
||||||
//await _roleManager.AddClaimAsync(adminRole, new Claim(CustomClaimTypes.Permission, Permissions.Dashboards.Create));
|
await _roleManager.AddClaimAsync(adminRole, new Claim(CustomClaimTypes.Permission, Permissions.Dashboards.Create));
|
||||||
// Default data
|
// Default data
|
||||||
// Seed, if necessary
|
// Seed, if necessary
|
||||||
if (!_context.TodoLists.Any())
|
if (!_context.TodoLists.Any())
|
||||||
|
|
|
@ -1,21 +1,21 @@
|
||||||
using Microsoft.AspNetCore.Authorization;
|
using Microsoft.AspNetCore.Authorization;
|
||||||
using Microsoft.AspNetCore.Identity;
|
using Microsoft.AspNetCore.Identity;
|
||||||
using Microsoft.EntityFrameworkCore;
|
|
||||||
using MiniSkeletonAPI.Application.Common.Models;
|
using MiniSkeletonAPI.Application.Common.Models;
|
||||||
using MiniSkeletonAPI.Infrastructure.Identity;
|
|
||||||
using Microsoft.AspNetCore.Authorization;
|
|
||||||
using Microsoft.AspNetCore.Identity;
|
|
||||||
using MiniSkeletonAPI.Application.Common.Interfaces;
|
using MiniSkeletonAPI.Application.Common.Interfaces;
|
||||||
using MiniSkeletonAPI.Domain.Entities;
|
using MiniSkeletonAPI.Domain.Entities;
|
||||||
using MiniSkeletonAPI.Infrastructure.Data;
|
using MiniSkeletonAPI.Infrastructure.Data;
|
||||||
using System.Text.Json;
|
|
||||||
using static System.Runtime.InteropServices.JavaScript.JSType;
|
|
||||||
using AutoMapper;
|
using AutoMapper;
|
||||||
using AutoMapper.QueryableExtensions;
|
using AutoMapper.QueryableExtensions;
|
||||||
using MiniSkeletonAPI.Application.Common.Mappings;
|
using MiniSkeletonAPI.Application.Common.Mappings;
|
||||||
using MiniSkeletonAPI.Application.Identity.Users.Queries.GetUsersWithPagination;
|
using MiniSkeletonAPI.Application.Identity.Users.Queries.GetUsersWithPagination;
|
||||||
using MiniSkeletonAPI.Application.Identity.Roles.Queries.GetRolesWithPagination;
|
using MiniSkeletonAPI.Application.Identity.Roles.Queries.GetRolesWithPagination;
|
||||||
|
using MiniSkeletonAPI.Application.Identity.Permissions.Dtos;
|
||||||
|
using MiniSkeletonAPI.Infrastructure.Common.Helpers;
|
||||||
|
using System.Reflection;
|
||||||
|
using System.Security.Claims;
|
||||||
|
using MiniSkeletonAPI.Application.Identity.Users.Dtos;
|
||||||
|
using MiniSkeletonAPI.Application.Identity.Roles.Dtos;
|
||||||
namespace MiniSkeletonAPI.Infrastructure.Identity;
|
namespace MiniSkeletonAPI.Infrastructure.Identity;
|
||||||
|
|
||||||
public class IdentityService : IIdentityService
|
public class IdentityService : IIdentityService
|
||||||
|
@ -211,4 +211,37 @@ public class IdentityService : IIdentityService
|
||||||
|
|
||||||
return result.ToApplicationResult();
|
return result.ToApplicationResult();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public async Task<(Result Result, string UserId)> AddUserRolesAsync(UserRolesDto userRoles)
|
||||||
|
{
|
||||||
|
|
||||||
|
var user = await _userManager.FindByIdAsync(userRoles.UserId);
|
||||||
|
foreach (var role in userRoles.RoleIds)
|
||||||
|
{
|
||||||
|
var entityrole = await _roleManager.FindByIdAsync(role);
|
||||||
|
_userManager.AddToRoleAsync(user,entityrole.Name);
|
||||||
|
}
|
||||||
|
return (Result.Success(), user.Id);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task<(Result Result, string UserId)> AddUserPermissionsAsync(UserPermissionsDto pmsRole)
|
||||||
|
{
|
||||||
|
var user = await _userManager.FindByIdAsync(pmsRole.UserId);
|
||||||
|
foreach (var permission in pmsRole.Permissions)
|
||||||
|
{
|
||||||
|
await _userManager.AddPermissionClaim(user,permission);
|
||||||
|
}
|
||||||
|
return (Result.Success(), user.Id);
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task<(Result Result, string RoleId)> AddRolePermissionsAsync(RolePermissionsDto pmsRole)
|
||||||
|
{
|
||||||
|
var role = await _roleManager.FindByIdAsync(pmsRole.RoleId);
|
||||||
|
foreach (var permission in pmsRole.Permissions)
|
||||||
|
{
|
||||||
|
await _roleManager.AddPermissionClaim(role, permission);
|
||||||
|
}
|
||||||
|
return (Result.Success(), role.Id);
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -1,4 +1,10 @@
|
||||||
namespace MiniSkeletonAPI.Infrastructure.Identity.Permission
|
using Microsoft.VisualBasic;
|
||||||
|
using Newtonsoft.Json.Linq;
|
||||||
|
using System.Reflection;
|
||||||
|
using System.Text.Json;
|
||||||
|
using System.Text.Json.Nodes;
|
||||||
|
|
||||||
|
namespace MiniSkeletonAPI.Infrastructure.Identity.Permission
|
||||||
{
|
{
|
||||||
public static class Permissions
|
public static class Permissions
|
||||||
{
|
{
|
||||||
|
@ -28,16 +34,100 @@
|
||||||
public const string Edit = "Permissions.Users.Edit";
|
public const string Edit = "Permissions.Users.Edit";
|
||||||
public const string Delete = "Permissions.Users.Delete";
|
public const string Delete = "Permissions.Users.Delete";
|
||||||
}
|
}
|
||||||
//public static class Products
|
|
||||||
//{
|
public static class Roles
|
||||||
// public const string View = "Permissions.Products.View";
|
{
|
||||||
// public const string Create = "Permissions.Products.Create";
|
public const string View = "Permissions.Roles.View";
|
||||||
// public const string Edit = "Permissions.Products.Edit";
|
public const string Create = "Permissions.Roles.Create";
|
||||||
// public const string Delete = "Permissions.Products.Delete";
|
public const string Edit = "Permissions.Roles.Edit";
|
||||||
//}
|
public const string Delete = "Permissions.Roles.Delete";
|
||||||
|
}
|
||||||
|
|
||||||
|
public static class TodoItems
|
||||||
|
{
|
||||||
|
public const string View = "Permissions.TodoItems.View";
|
||||||
|
public const string Create = "Permissions.TodoItems.Create";
|
||||||
|
public const string Edit = "Permissions.TodoItems.Edit";
|
||||||
|
public const string Delete = "Permissions.TodoItems.Delete";
|
||||||
|
}
|
||||||
|
|
||||||
|
public static class GetPermissions
|
||||||
|
{
|
||||||
|
public const string View = "Permissions.GetPermissions.View";
|
||||||
|
public const string Create = "Permissions.GetPermissions.Create";
|
||||||
|
public const string Edit = "Permissions.GetPermissions.Edit";
|
||||||
|
public const string Delete = "Permissions.GetPermissions.Delete";
|
||||||
|
}
|
||||||
|
|
||||||
|
public static class TodoLists
|
||||||
|
{
|
||||||
|
public const string View = "Permissions.TodoLists.View";
|
||||||
|
public const string Create = "Permissions.TodoLists.Create";
|
||||||
|
public const string Edit = "Permissions.TodoLists.Edit";
|
||||||
|
public const string Delete = "Permissions.TodoLists.Delete";
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
public class CustomClaimTypes
|
public class CustomClaimTypes
|
||||||
{
|
{
|
||||||
public const string Permission = "Permission";
|
public const string Permission = "Permission";
|
||||||
}
|
}
|
||||||
|
public class StaticSerialization
|
||||||
|
{
|
||||||
|
//public static JObject Serialize(Type staticClass)
|
||||||
|
//{
|
||||||
|
// //var props = staticClass.GetProperties(BindingFlags.Static | BindingFlags.Public);
|
||||||
|
// var props = staticClass.GetFields(BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static);
|
||||||
|
// //Console.WriteLine(JsonSerializer.Serialize(staticClass.));
|
||||||
|
|
||||||
|
// var json = new JObject();
|
||||||
|
// foreach (var p in props)
|
||||||
|
// {
|
||||||
|
// var value = p.GetValue(null);
|
||||||
|
// //if (value == null || !p.CanWrite || !p.CanRead) continue;
|
||||||
|
// json[p.Name] = JToken.FromObject(value);
|
||||||
|
// }
|
||||||
|
|
||||||
|
// foreach (var t in staticClass.GetNestedTypes())
|
||||||
|
// json[t.Name] = Serialize(t);
|
||||||
|
// return json;
|
||||||
|
//}
|
||||||
|
public static IEnumerable<string> GetFieldFromStaticClass(Type staticClass)
|
||||||
|
{
|
||||||
|
|
||||||
|
var nestedTypes = staticClass.GetNestedTypes(BindingFlags.Public);
|
||||||
|
var sClass = new List<FieldInfo[]>();
|
||||||
|
foreach (Type type in nestedTypes)
|
||||||
|
{
|
||||||
|
sClass.Add(type.GetFields(BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
var permissions = new List<string>();
|
||||||
|
|
||||||
|
var values = sClass.SelectMany(x => x).ToList();
|
||||||
|
foreach(var value in values)
|
||||||
|
{
|
||||||
|
permissions.Add(value.GetValue(null).ToString());
|
||||||
|
}
|
||||||
|
return permissions;
|
||||||
|
}
|
||||||
|
|
||||||
|
//public static void Deserialize(Type staticClass, JObject json)
|
||||||
|
//{
|
||||||
|
// if (json == null) return;
|
||||||
|
// var props = staticClass.GetProperties(BindingFlags.Static | BindingFlags.Public);
|
||||||
|
// foreach (var p in props)
|
||||||
|
// {
|
||||||
|
// if (!json.ContainsKey(p.Name) || !p.CanWrite) continue;
|
||||||
|
// p.SetValue(null, Convert.ChangeType(json[p.Name], p.PropertyType));
|
||||||
|
// }
|
||||||
|
// foreach (var t in staticClass.GetNestedTypes())
|
||||||
|
// {
|
||||||
|
// if (!json.ContainsKey(t.Name)) continue;
|
||||||
|
// Deserialize(t, json[t.Name] as JObject);
|
||||||
|
// }
|
||||||
|
//}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,6 +20,7 @@
|
||||||
<PrivateAssets>all</PrivateAssets>
|
<PrivateAssets>all</PrivateAssets>
|
||||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||||
</PackageReference>
|
</PackageReference>
|
||||||
|
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -15,7 +15,8 @@
|
||||||
"Microsoft.EntityFrameworkCore.Design": "8.0.5",
|
"Microsoft.EntityFrameworkCore.Design": "8.0.5",
|
||||||
"Microsoft.EntityFrameworkCore.Sqlite": "8.0.5",
|
"Microsoft.EntityFrameworkCore.Sqlite": "8.0.5",
|
||||||
"Microsoft.EntityFrameworkCore.Tools": "8.0.5",
|
"Microsoft.EntityFrameworkCore.Tools": "8.0.5",
|
||||||
"MiniSkeletonAPI.Application": "1.0.0"
|
"MiniSkeletonAPI.Application": "1.0.0",
|
||||||
|
"Newtonsoft.Json": "13.0.3"
|
||||||
},
|
},
|
||||||
"runtime": {
|
"runtime": {
|
||||||
"MiniSkeletonAPI.Infrastructure.dll": {}
|
"MiniSkeletonAPI.Infrastructure.dll": {}
|
||||||
|
@ -645,6 +646,14 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"Newtonsoft.Json/13.0.3": {
|
||||||
|
"runtime": {
|
||||||
|
"lib/net6.0/Newtonsoft.Json.dll": {
|
||||||
|
"assemblyVersion": "13.0.0.0",
|
||||||
|
"fileVersion": "13.0.3.27908"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"SQLitePCLRaw.bundle_e_sqlite3/2.1.6": {
|
"SQLitePCLRaw.bundle_e_sqlite3/2.1.6": {
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"SQLitePCLRaw.lib.e_sqlite3": "2.1.6",
|
"SQLitePCLRaw.lib.e_sqlite3": "2.1.6",
|
||||||
|
@ -1245,6 +1254,13 @@
|
||||||
"path": "mono.texttemplating/2.2.1",
|
"path": "mono.texttemplating/2.2.1",
|
||||||
"hashPath": "mono.texttemplating.2.2.1.nupkg.sha512"
|
"hashPath": "mono.texttemplating.2.2.1.nupkg.sha512"
|
||||||
},
|
},
|
||||||
|
"Newtonsoft.Json/13.0.3": {
|
||||||
|
"type": "package",
|
||||||
|
"serviceable": true,
|
||||||
|
"sha512": "sha512-HrC5BXdl00IP9zeV+0Z848QWPAoCr9P3bDEZguI+gkLcBKAOxix/tLEAAHC+UvDNPv4a2d18lOReHMOagPa+zQ==",
|
||||||
|
"path": "newtonsoft.json/13.0.3",
|
||||||
|
"hashPath": "newtonsoft.json.13.0.3.nupkg.sha512"
|
||||||
|
},
|
||||||
"SQLitePCLRaw.bundle_e_sqlite3/2.1.6": {
|
"SQLitePCLRaw.bundle_e_sqlite3/2.1.6": {
|
||||||
"type": "package",
|
"type": "package",
|
||||||
"serviceable": true,
|
"serviceable": true,
|
||||||
|
|
Binary file not shown.
Binary file not shown.
|
@ -14,7 +14,7 @@ using System.Reflection;
|
||||||
[assembly: System.Reflection.AssemblyCompanyAttribute("MiniSkeletonAPI.Infrastructure")]
|
[assembly: System.Reflection.AssemblyCompanyAttribute("MiniSkeletonAPI.Infrastructure")]
|
||||||
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
|
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
|
||||||
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
|
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
|
||||||
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+7a653f6d34571cc2890f52ce8f5420bdf838ad31")]
|
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+23690cc6cfd1a2e53e900ac2af495188aec711a8")]
|
||||||
[assembly: System.Reflection.AssemblyProductAttribute("MiniSkeletonAPI.Infrastructure")]
|
[assembly: System.Reflection.AssemblyProductAttribute("MiniSkeletonAPI.Infrastructure")]
|
||||||
[assembly: System.Reflection.AssemblyTitleAttribute("MiniSkeletonAPI.Infrastructure")]
|
[assembly: System.Reflection.AssemblyTitleAttribute("MiniSkeletonAPI.Infrastructure")]
|
||||||
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
c63860dc5e694cd2f494ad227b44fa95a441b2e96bac32623d7f951254dd81ff
|
9a141473a6c4e9e442c12a22fc8f244939166b7f21e146d0f8bac682dd56d497
|
||||||
|
|
Binary file not shown.
Binary file not shown.
|
@ -1 +1 @@
|
||||||
31ec96ef62c2578f82b3ffb599b310d4a2b9a9ca98a54ccedcec732bf6534c94
|
0e974f1d6e9bc5b35684d98168fa215012043dcc9cdf503e2ee07581666a8991
|
||||||
|
|
|
@ -17,3 +17,4 @@ D:\DevPT3\MiniSkeletonAPI\src\MiniSkeletonAPI.Infrastructure\obj\Debug\net8.0\re
|
||||||
D:\DevPT3\MiniSkeletonAPI\src\MiniSkeletonAPI.Infrastructure\obj\Debug\net8.0\MiniSkeletonAPI.Infrastructure.pdb
|
D:\DevPT3\MiniSkeletonAPI\src\MiniSkeletonAPI.Infrastructure\obj\Debug\net8.0\MiniSkeletonAPI.Infrastructure.pdb
|
||||||
D:\DevPT3\MiniSkeletonAPI\src\MiniSkeletonAPI.Infrastructure\obj\Debug\net8.0\MiniSkeletonAPI.Infrastructure.genruntimeconfig.cache
|
D:\DevPT3\MiniSkeletonAPI\src\MiniSkeletonAPI.Infrastructure\obj\Debug\net8.0\MiniSkeletonAPI.Infrastructure.genruntimeconfig.cache
|
||||||
D:\DevPT3\MiniSkeletonAPI\src\MiniSkeletonAPI.Infrastructure\obj\Debug\net8.0\ref\MiniSkeletonAPI.Infrastructure.dll
|
D:\DevPT3\MiniSkeletonAPI\src\MiniSkeletonAPI.Infrastructure\obj\Debug\net8.0\ref\MiniSkeletonAPI.Infrastructure.dll
|
||||||
|
D:\DevPT3\MiniSkeletonAPI\src\MiniSkeletonAPI.Infrastructure\obj\Debug\net8.0\MiniSkeletonAPI.Infrastructure.sourcelink.json
|
||||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -243,6 +243,10 @@
|
||||||
"suppressParent": "All",
|
"suppressParent": "All",
|
||||||
"target": "Package",
|
"target": "Package",
|
||||||
"version": "[8.0.5, )"
|
"version": "[8.0.5, )"
|
||||||
|
},
|
||||||
|
"Newtonsoft.Json": {
|
||||||
|
"target": "Package",
|
||||||
|
"version": "[13.0.3, )"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"imports": [
|
"imports": [
|
||||||
|
|
|
@ -943,6 +943,19 @@
|
||||||
"lib/netstandard2.0/Mono.TextTemplating.dll": {}
|
"lib/netstandard2.0/Mono.TextTemplating.dll": {}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"Newtonsoft.Json/13.0.3": {
|
||||||
|
"type": "package",
|
||||||
|
"compile": {
|
||||||
|
"lib/net6.0/Newtonsoft.Json.dll": {
|
||||||
|
"related": ".xml"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"runtime": {
|
||||||
|
"lib/net6.0/Newtonsoft.Json.dll": {
|
||||||
|
"related": ".xml"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"SQLitePCLRaw.bundle_e_sqlite3/2.1.6": {
|
"SQLitePCLRaw.bundle_e_sqlite3/2.1.6": {
|
||||||
"type": "package",
|
"type": "package",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
@ -2784,6 +2797,36 @@
|
||||||
"mono.texttemplating.nuspec"
|
"mono.texttemplating.nuspec"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
"Newtonsoft.Json/13.0.3": {
|
||||||
|
"sha512": "HrC5BXdl00IP9zeV+0Z848QWPAoCr9P3bDEZguI+gkLcBKAOxix/tLEAAHC+UvDNPv4a2d18lOReHMOagPa+zQ==",
|
||||||
|
"type": "package",
|
||||||
|
"path": "newtonsoft.json/13.0.3",
|
||||||
|
"files": [
|
||||||
|
".nupkg.metadata",
|
||||||
|
".signature.p7s",
|
||||||
|
"LICENSE.md",
|
||||||
|
"README.md",
|
||||||
|
"lib/net20/Newtonsoft.Json.dll",
|
||||||
|
"lib/net20/Newtonsoft.Json.xml",
|
||||||
|
"lib/net35/Newtonsoft.Json.dll",
|
||||||
|
"lib/net35/Newtonsoft.Json.xml",
|
||||||
|
"lib/net40/Newtonsoft.Json.dll",
|
||||||
|
"lib/net40/Newtonsoft.Json.xml",
|
||||||
|
"lib/net45/Newtonsoft.Json.dll",
|
||||||
|
"lib/net45/Newtonsoft.Json.xml",
|
||||||
|
"lib/net6.0/Newtonsoft.Json.dll",
|
||||||
|
"lib/net6.0/Newtonsoft.Json.xml",
|
||||||
|
"lib/netstandard1.0/Newtonsoft.Json.dll",
|
||||||
|
"lib/netstandard1.0/Newtonsoft.Json.xml",
|
||||||
|
"lib/netstandard1.3/Newtonsoft.Json.dll",
|
||||||
|
"lib/netstandard1.3/Newtonsoft.Json.xml",
|
||||||
|
"lib/netstandard2.0/Newtonsoft.Json.dll",
|
||||||
|
"lib/netstandard2.0/Newtonsoft.Json.xml",
|
||||||
|
"newtonsoft.json.13.0.3.nupkg.sha512",
|
||||||
|
"newtonsoft.json.nuspec",
|
||||||
|
"packageIcon.png"
|
||||||
|
]
|
||||||
|
},
|
||||||
"SQLitePCLRaw.bundle_e_sqlite3/2.1.6": {
|
"SQLitePCLRaw.bundle_e_sqlite3/2.1.6": {
|
||||||
"sha512": "BmAf6XWt4TqtowmiWe4/5rRot6GerAeklmOPfviOvwLoF5WwgxcJHAxZtySuyW9r9w+HLILnm8VfJFLCUJYW8A==",
|
"sha512": "BmAf6XWt4TqtowmiWe4/5rRot6GerAeklmOPfviOvwLoF5WwgxcJHAxZtySuyW9r9w+HLILnm8VfJFLCUJYW8A==",
|
||||||
"type": "package",
|
"type": "package",
|
||||||
|
@ -3360,7 +3403,8 @@
|
||||||
"Microsoft.EntityFrameworkCore.Design >= 8.0.5",
|
"Microsoft.EntityFrameworkCore.Design >= 8.0.5",
|
||||||
"Microsoft.EntityFrameworkCore.Sqlite >= 8.0.5",
|
"Microsoft.EntityFrameworkCore.Sqlite >= 8.0.5",
|
||||||
"Microsoft.EntityFrameworkCore.Tools >= 8.0.5",
|
"Microsoft.EntityFrameworkCore.Tools >= 8.0.5",
|
||||||
"MiniSkeletonAPI.Application >= 1.0.0"
|
"MiniSkeletonAPI.Application >= 1.0.0",
|
||||||
|
"Newtonsoft.Json >= 13.0.3"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"packageFolders": {
|
"packageFolders": {
|
||||||
|
@ -3448,6 +3492,10 @@
|
||||||
"suppressParent": "All",
|
"suppressParent": "All",
|
||||||
"target": "Package",
|
"target": "Package",
|
||||||
"version": "[8.0.5, )"
|
"version": "[8.0.5, )"
|
||||||
|
},
|
||||||
|
"Newtonsoft.Json": {
|
||||||
|
"target": "Package",
|
||||||
|
"version": "[13.0.3, )"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"imports": [
|
"imports": [
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"version": 2,
|
"version": 2,
|
||||||
"dgSpecHash": "7cWD2G2Fj+dIy96NiIYaAVV8Bk/T+solMMx+2nzCqMDZcsZ0pjOHPHqcPtDi9S4956MtQykyCcVgB5Z4MJlqxA==",
|
"dgSpecHash": "ze2dJzSocydnhHD9EWo8SVMdFGTpMG2sjnDxpHpdDy0kd3Dx+MoifJJtuwMv91aBwWadNv9un2YNNLwM33XbNw==",
|
||||||
"success": true,
|
"success": true,
|
||||||
"projectFilePath": "D:\\DevPT3\\MiniSkeletonAPI\\src\\MiniSkeletonAPI.Infrastructure\\MiniSkeletonAPI.Infrastructure.csproj",
|
"projectFilePath": "D:\\DevPT3\\MiniSkeletonAPI\\src\\MiniSkeletonAPI.Infrastructure\\MiniSkeletonAPI.Infrastructure.csproj",
|
||||||
"expectedPackageFiles": [
|
"expectedPackageFiles": [
|
||||||
|
@ -51,6 +51,7 @@
|
||||||
"C:\\Users\\muham\\.nuget\\packages\\microsoft.identitymodel.protocols.openidconnect\\7.1.2\\microsoft.identitymodel.protocols.openidconnect.7.1.2.nupkg.sha512",
|
"C:\\Users\\muham\\.nuget\\packages\\microsoft.identitymodel.protocols.openidconnect\\7.1.2\\microsoft.identitymodel.protocols.openidconnect.7.1.2.nupkg.sha512",
|
||||||
"C:\\Users\\muham\\.nuget\\packages\\microsoft.identitymodel.tokens\\7.1.2\\microsoft.identitymodel.tokens.7.1.2.nupkg.sha512",
|
"C:\\Users\\muham\\.nuget\\packages\\microsoft.identitymodel.tokens\\7.1.2\\microsoft.identitymodel.tokens.7.1.2.nupkg.sha512",
|
||||||
"C:\\Users\\muham\\.nuget\\packages\\mono.texttemplating\\2.2.1\\mono.texttemplating.2.2.1.nupkg.sha512",
|
"C:\\Users\\muham\\.nuget\\packages\\mono.texttemplating\\2.2.1\\mono.texttemplating.2.2.1.nupkg.sha512",
|
||||||
|
"C:\\Users\\muham\\.nuget\\packages\\newtonsoft.json\\13.0.3\\newtonsoft.json.13.0.3.nupkg.sha512",
|
||||||
"C:\\Users\\muham\\.nuget\\packages\\sqlitepclraw.bundle_e_sqlite3\\2.1.6\\sqlitepclraw.bundle_e_sqlite3.2.1.6.nupkg.sha512",
|
"C:\\Users\\muham\\.nuget\\packages\\sqlitepclraw.bundle_e_sqlite3\\2.1.6\\sqlitepclraw.bundle_e_sqlite3.2.1.6.nupkg.sha512",
|
||||||
"C:\\Users\\muham\\.nuget\\packages\\sqlitepclraw.core\\2.1.6\\sqlitepclraw.core.2.1.6.nupkg.sha512",
|
"C:\\Users\\muham\\.nuget\\packages\\sqlitepclraw.core\\2.1.6\\sqlitepclraw.core.2.1.6.nupkg.sha512",
|
||||||
"C:\\Users\\muham\\.nuget\\packages\\sqlitepclraw.lib.e_sqlite3\\2.1.6\\sqlitepclraw.lib.e_sqlite3.2.1.6.nupkg.sha512",
|
"C:\\Users\\muham\\.nuget\\packages\\sqlitepclraw.lib.e_sqlite3\\2.1.6\\sqlitepclraw.lib.e_sqlite3.2.1.6.nupkg.sha512",
|
||||||
|
|
|
@ -19,8 +19,8 @@ public static class DependencyInjection
|
||||||
|
|
||||||
services.AddHealthChecks()
|
services.AddHealthChecks()
|
||||||
.AddDbContextCheck<ApplicationDbContext>();
|
.AddDbContextCheck<ApplicationDbContext>();
|
||||||
|
|
||||||
services.AddExceptionHandler<CustomExceptionHandler>();
|
services.AddExceptionHandler<CustomExceptionHandler>();
|
||||||
|
//services.AddProblemDetails();
|
||||||
// Customise default API behaviour
|
// Customise default API behaviour
|
||||||
services.Configure<ApiBehaviorOptions>(options =>
|
services.Configure<ApiBehaviorOptions>(options =>
|
||||||
options.SuppressModelStateInvalidFilter = true);
|
options.SuppressModelStateInvalidFilter = true);
|
||||||
|
|
|
@ -1,6 +0,0 @@
|
||||||
//namespace MiniSkeletonAPI.Presentation.Endpoints
|
|
||||||
//{
|
|
||||||
// public class Permissions
|
|
||||||
// {
|
|
||||||
// }
|
|
||||||
//}
|
|
|
@ -5,6 +5,9 @@ using MiniSkeletonAPI.Application.Identity.Roles.Commands.UpdateRole;
|
||||||
using MiniSkeletonAPI.Application.Identity.Roles.Commands.DeleteRole;
|
using MiniSkeletonAPI.Application.Identity.Roles.Commands.DeleteRole;
|
||||||
using MiniSkeletonAPI.Application.Common.Models;
|
using MiniSkeletonAPI.Application.Common.Models;
|
||||||
using MiniSkeletonAPI.Application.Identity.Roles.Queries.GetRolesWithPagination;
|
using MiniSkeletonAPI.Application.Identity.Roles.Queries.GetRolesWithPagination;
|
||||||
|
using MiniSkeletonAPI.Application.Identity.Permissions.Commands;
|
||||||
|
using MiniSkeletonAPI.Application.Identity.Roles.Dtos;
|
||||||
|
using MiniSkeletonAPI.Application.Identity.Users.Commands.AddUserRoles;
|
||||||
|
|
||||||
namespace MiniSkeletonAPI.Presentation.Endpoints;
|
namespace MiniSkeletonAPI.Presentation.Endpoints;
|
||||||
|
|
||||||
|
@ -15,24 +18,26 @@ public class Roles : EndpointGroupBase
|
||||||
app.MapGroup(this)
|
app.MapGroup(this)
|
||||||
.MapGet(GetRolesWithPagination)
|
.MapGet(GetRolesWithPagination)
|
||||||
.MapPost(CreateRole)
|
.MapPost(CreateRole)
|
||||||
|
.MapPut(AddRolePermissions, "Permissions/{roleId}")
|
||||||
|
.MapPut(AddUserRoles, "User/{userId}")
|
||||||
.MapPut(UpdateRole, "{id}")
|
.MapPut(UpdateRole, "{id}")
|
||||||
.MapDelete(DeleteRole, "{id}")
|
.MapDelete(DeleteRole, "{id}")
|
||||||
;
|
;
|
||||||
}
|
}
|
||||||
|
|
||||||
[Authorize(Permissions.Dashboards.View)]
|
[Authorize(Permissions.Roles.View)]
|
||||||
public Task<PaginatedList<RoleBriefDto>> GetRolesWithPagination(ISender sender, [AsParameters] GetRolesWithPaginationQuery query)
|
public async Task<PaginatedList<RoleBriefDto>> GetRolesWithPagination(ISender sender, [AsParameters] GetRolesWithPaginationQuery query)
|
||||||
{
|
{
|
||||||
return sender.Send(query);
|
return await sender.Send(query);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Authorize(Permissions.Dashboards.Create)]
|
[Authorize(Permissions.Roles.Create)]
|
||||||
public Task<Guid> CreateRole(ISender sender, CreateRoleCommand command)
|
public async Task<Guid> CreateRole(ISender sender, CreateRoleCommand command)
|
||||||
{
|
{
|
||||||
return sender.Send(command);
|
return await sender.Send(command);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Authorize(Permissions.Dashboards.Create)]
|
[Authorize(Permissions.Roles.Edit)]
|
||||||
public async Task<IResult> UpdateRole(ISender sender, Guid id, UpdateRoleCommand command)
|
public async Task<IResult> UpdateRole(ISender sender, Guid id, UpdateRoleCommand command)
|
||||||
{
|
{
|
||||||
if (id != command.Id) return Results.BadRequest();
|
if (id != command.Id) return Results.BadRequest();
|
||||||
|
@ -40,9 +45,24 @@ public class Roles : EndpointGroupBase
|
||||||
return Results.NoContent();
|
return Results.NoContent();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Authorize(Permissions.Roles.Delete)]
|
||||||
public async Task<IResult> DeleteRole(ISender sender, Guid id)
|
public async Task<IResult> DeleteRole(ISender sender, Guid id)
|
||||||
{
|
{
|
||||||
await sender.Send(new DeleteRoleCommand(id));
|
await sender.Send(new DeleteRoleCommand(id));
|
||||||
return Results.NoContent();
|
return Results.NoContent();
|
||||||
}
|
}
|
||||||
|
[Authorize(Permissions.Roles.Edit)]
|
||||||
|
public async Task<IResult> AddUserRoles(ISender sender, Guid userId, AddUserRolesCommand command)
|
||||||
|
{
|
||||||
|
if (userId != command.UserId) return Results.BadRequest();
|
||||||
|
await sender.Send(command);
|
||||||
|
return Results.NoContent();
|
||||||
|
}
|
||||||
|
[Authorize(Permissions.Roles.Edit)]
|
||||||
|
public async Task<IResult> AddRolePermissions(ISender sender, Guid roleId, AddRolePermissionsCommand command)
|
||||||
|
{
|
||||||
|
if (roleId != command.RoleId) return Results.BadRequest();
|
||||||
|
await sender.Send(command);
|
||||||
|
return Results.NoContent();
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -6,6 +6,7 @@ using MiniSkeletonAPI.Application.TodoItems.Commands.UpdateTodoItem;
|
||||||
using MiniSkeletonAPI.Application.TodoItems.Commands.UpdateTodoItemDetail;
|
using MiniSkeletonAPI.Application.TodoItems.Commands.UpdateTodoItemDetail;
|
||||||
using MiniSkeletonAPI.Application.TodoItems.Queries.GetTodoItemsWIthPagination;
|
using MiniSkeletonAPI.Application.TodoItems.Queries.GetTodoItemsWIthPagination;
|
||||||
using MiniSkeletonAPI.Infrastructure.Identity.Permission;
|
using MiniSkeletonAPI.Infrastructure.Identity.Permission;
|
||||||
|
using System.Text.Json;
|
||||||
|
|
||||||
namespace MiniSkeletonAPI.Presentation.Endpoints;
|
namespace MiniSkeletonAPI.Presentation.Endpoints;
|
||||||
|
|
||||||
|
@ -21,16 +22,18 @@ public class TodoItems : EndpointGroupBase
|
||||||
.MapDelete(DeleteTodoItem, "{id}");
|
.MapDelete(DeleteTodoItem, "{id}");
|
||||||
}
|
}
|
||||||
|
|
||||||
[Authorize(Permissions.Dashboards.View)]
|
[Authorize(Permissions.TodoItems.View)]
|
||||||
public Task<PaginatedList<TodoItemBriefDto>> GetTodoItemsWithPagination(ISender sender, [AsParameters] GetTodoItemsWithPaginationQuery query)
|
public Task<PaginatedList<TodoItemBriefDto>> GetTodoItemsWithPagination(ISender sender, [AsParameters] GetTodoItemsWithPaginationQuery query)
|
||||||
{
|
{
|
||||||
return sender.Send(query);
|
return sender.Send(query);
|
||||||
}
|
}
|
||||||
[Authorize(Permissions.Dashboards.Create)]
|
|
||||||
|
[Authorize(Permissions.TodoItems.Create)]
|
||||||
public Task<Guid> CreateTodoItem(ISender sender, CreateTodoItemCommand command)
|
public Task<Guid> CreateTodoItem(ISender sender, CreateTodoItemCommand command)
|
||||||
{
|
{
|
||||||
return sender.Send(command);
|
return sender.Send(command);
|
||||||
}
|
}
|
||||||
|
[Authorize(Permissions.TodoItems.Edit)]
|
||||||
|
|
||||||
public async Task<IResult> UpdateTodoItem(ISender sender, Guid id, UpdateTodoItemCommand command)
|
public async Task<IResult> UpdateTodoItem(ISender sender, Guid id, UpdateTodoItemCommand command)
|
||||||
{
|
{
|
||||||
|
@ -39,6 +42,7 @@ public class TodoItems : EndpointGroupBase
|
||||||
return Results.NoContent();
|
return Results.NoContent();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Authorize(Permissions.TodoItems.Edit)]
|
||||||
public async Task<IResult> UpdateTodoItemDetail(ISender sender, Guid id, UpdateTodoItemDetailCommand command)
|
public async Task<IResult> UpdateTodoItemDetail(ISender sender, Guid id, UpdateTodoItemDetailCommand command)
|
||||||
{
|
{
|
||||||
if (id != command.Id) return Results.BadRequest();
|
if (id != command.Id) return Results.BadRequest();
|
||||||
|
@ -46,6 +50,7 @@ public class TodoItems : EndpointGroupBase
|
||||||
return Results.NoContent();
|
return Results.NoContent();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Authorize(Permissions.TodoItems.Delete)]
|
||||||
public async Task<IResult> DeleteTodoItem(ISender sender, Guid id)
|
public async Task<IResult> DeleteTodoItem(ISender sender, Guid id)
|
||||||
{
|
{
|
||||||
await sender.Send(new DeleteTodoItemCommand(id));
|
await sender.Send(new DeleteTodoItemCommand(id));
|
||||||
|
|
|
@ -7,6 +7,8 @@ using MiniSkeletonAPI.Application.Identity.Users.Commands.DeleteUser;
|
||||||
using MiniSkeletonAPI.Application.Identity.Users.Commands.CreateUser;
|
using MiniSkeletonAPI.Application.Identity.Users.Commands.CreateUser;
|
||||||
using MiniSkeletonAPI.Application.Identity.Users.Commands.UpdateUser;
|
using MiniSkeletonAPI.Application.Identity.Users.Commands.UpdateUser;
|
||||||
using MiniSkeletonAPI.Application.Identity.Users.Queries.GetUsersWithPagination;
|
using MiniSkeletonAPI.Application.Identity.Users.Queries.GetUsersWithPagination;
|
||||||
|
using MiniSkeletonAPI.Application.Identity.Permissions.Commands;
|
||||||
|
using MiniSkeletonAPI.Application.Common.Exceptions;
|
||||||
|
|
||||||
namespace CleanArchitecture.Web.Endpoints;
|
namespace CleanArchitecture.Web.Endpoints;
|
||||||
|
|
||||||
|
@ -17,23 +19,27 @@ public class Users : EndpointGroupBase
|
||||||
app.MapGroup(this)
|
app.MapGroup(this)
|
||||||
.MapGet(GetUsersWithPagination)
|
.MapGet(GetUsersWithPagination)
|
||||||
.MapPost(CreateUser)
|
.MapPost(CreateUser)
|
||||||
|
.MapPut(AddUserPermissions, "Permissions/{userid}")
|
||||||
.MapPut(UpdateUser, "{id}")
|
.MapPut(UpdateUser, "{id}")
|
||||||
.MapDelete(DeleteUser, "{id}")
|
.MapDelete(DeleteUser, "{id}")
|
||||||
.MapCustomizedIdentityApi<ApplicationUser>();
|
.MapCustomizedIdentityApi<ApplicationUser>()
|
||||||
|
//.HasApiVersion(1.0)
|
||||||
|
;
|
||||||
}
|
}
|
||||||
|
|
||||||
[Authorize(Permissions.Dashboards.View)]
|
//[Authorize(Permissions.Users.View)]
|
||||||
public Task<PaginatedList<UserBriefDto>> GetUsersWithPagination(ISender sender, [AsParameters] GetUsersWithPaginationQuery query)
|
public Task<PaginatedList<UserBriefDto>> GetUsersWithPagination(ISender sender, [AsParameters] GetUsersWithPaginationQuery query)
|
||||||
{
|
{
|
||||||
|
throw new Exception();
|
||||||
return sender.Send(query);
|
return sender.Send(query);
|
||||||
}
|
}
|
||||||
[Authorize(Permissions.Dashboards.Create)]
|
[Authorize(Permissions.Users.Create)]
|
||||||
public Task<Guid> CreateUser(ISender sender, CreateUserCommand command)
|
public Task<Guid> CreateUser(ISender sender, CreateUserCommand command)
|
||||||
{
|
{
|
||||||
return sender.Send(command);
|
return sender.Send(command);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Authorize(Permissions.Dashboards.Create)]
|
[Authorize(Permissions.Users.Edit)]
|
||||||
public async Task<IResult> UpdateUser(ISender sender, Guid id, UpdateUserCommand command)
|
public async Task<IResult> UpdateUser(ISender sender, Guid id, UpdateUserCommand command)
|
||||||
{
|
{
|
||||||
if (id != command.Id) return Results.BadRequest();
|
if (id != command.Id) return Results.BadRequest();
|
||||||
|
@ -41,9 +47,18 @@ public class Users : EndpointGroupBase
|
||||||
return Results.NoContent();
|
return Results.NoContent();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Authorize(Permissions.Users.Delete)]
|
||||||
public async Task<IResult> DeleteUser(ISender sender, Guid id)
|
public async Task<IResult> DeleteUser(ISender sender, Guid id)
|
||||||
{
|
{
|
||||||
await sender.Send(new DeleteUserCommand(id));
|
await sender.Send(new DeleteUserCommand(id));
|
||||||
return Results.NoContent();
|
return Results.NoContent();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Authorize(Permissions.Users.Edit)]
|
||||||
|
public async Task<IResult> AddUserPermissions(ISender sender, Guid userId, AddUserPermissionsCommand command)
|
||||||
|
{
|
||||||
|
if (userId != command.UserId) return Results.BadRequest();
|
||||||
|
await sender.Send(command);
|
||||||
|
return Results.NoContent();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,33 +0,0 @@
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Reflection;
|
|
||||||
using System.Security.Claims;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
using Microsoft.AspNetCore.Identity;
|
|
||||||
|
|
||||||
namespace MiniSkeletonAPI.Presentation.Helpers
|
|
||||||
{
|
|
||||||
public static class ClaimsHelper
|
|
||||||
{
|
|
||||||
public static void GetPermissions(this List<RoleClaimsDto> allPermissions, Type policy, string roleId)
|
|
||||||
{
|
|
||||||
FieldInfo[] fields = policy.GetFields(BindingFlags.Static | BindingFlags.Public);
|
|
||||||
|
|
||||||
foreach (FieldInfo fi in fields)
|
|
||||||
{
|
|
||||||
allPermissions.Add(new RoleClaimsDto { Value = fi.GetValue(null).ToString(), Type = "Permissions" });
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static async Task AddPermissionClaim(this RoleManager<IdentityRole> roleManager, IdentityRole role, string permission)
|
|
||||||
{
|
|
||||||
var allClaims = await roleManager.GetClaimsAsync(role);
|
|
||||||
if (!allClaims.Any(a => a.Type == "Permission" && a.Value == permission))
|
|
||||||
{
|
|
||||||
await roleManager.AddClaimAsync(role, new Claim("Permission", permission));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,8 +0,0 @@
|
||||||
namespace MiniSkeletonAPI.Presentation.Helpers;
|
|
||||||
|
|
||||||
public class RoleClaimsDto
|
|
||||||
{
|
|
||||||
public string Type { get; set; }
|
|
||||||
public string Value { get; set; }
|
|
||||||
public bool Selected { get; set; }
|
|
||||||
}
|
|
|
@ -1,6 +1,7 @@
|
||||||
using MiniSkeletonAPI.Application.Common.Exceptions;
|
using MiniSkeletonAPI.Application.Common.Exceptions;
|
||||||
using Microsoft.AspNetCore.Diagnostics;
|
using Microsoft.AspNetCore.Diagnostics;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
|
using System.Text.Json;
|
||||||
|
|
||||||
namespace MiniSkeletonAPI.Presentation.Infrastructure;
|
namespace MiniSkeletonAPI.Presentation.Infrastructure;
|
||||||
|
|
||||||
|
@ -14,7 +15,8 @@ public class CustomExceptionHandler : IExceptionHandler
|
||||||
_exceptionHandlers = new()
|
_exceptionHandlers = new()
|
||||||
{
|
{
|
||||||
{ typeof(ValidationException), HandleValidationException },
|
{ typeof(ValidationException), HandleValidationException },
|
||||||
//{ typeof(NotFoundException), HandleNotFoundException },
|
{ typeof(NotFoundException), HandleNotFoundException },
|
||||||
|
{ typeof(NotImplementedException), HandleNotImplementedException },
|
||||||
{ typeof(UnauthorizedAccessException), HandleUnauthorizedAccessException },
|
{ typeof(UnauthorizedAccessException), HandleUnauthorizedAccessException },
|
||||||
{ typeof(ForbiddenAccessException), HandleForbiddenAccessException },
|
{ typeof(ForbiddenAccessException), HandleForbiddenAccessException },
|
||||||
};
|
};
|
||||||
|
@ -23,16 +25,33 @@ public class CustomExceptionHandler : IExceptionHandler
|
||||||
public async ValueTask<bool> TryHandleAsync(HttpContext httpContext, Exception exception, CancellationToken cancellationToken)
|
public async ValueTask<bool> TryHandleAsync(HttpContext httpContext, Exception exception, CancellationToken cancellationToken)
|
||||||
{
|
{
|
||||||
var exceptionType = exception.GetType();
|
var exceptionType = exception.GetType();
|
||||||
|
await Console.Out.WriteLineAsync(JsonSerializer.Serialize(exceptionType.Name));
|
||||||
if (_exceptionHandlers.ContainsKey(exceptionType))
|
if (_exceptionHandlers.ContainsKey(exceptionType))
|
||||||
{
|
{
|
||||||
await _exceptionHandlers[exceptionType].Invoke(httpContext, exception);
|
await _exceptionHandlers[exceptionType].Invoke(httpContext, exception);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
HandleException(httpContext, exception);
|
||||||
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private async Task HandleException(HttpContext httpContext, Exception ex)
|
||||||
|
{
|
||||||
|
httpContext.Response.StatusCode = StatusCodes.Status500InternalServerError;
|
||||||
|
|
||||||
|
await httpContext.Response.WriteAsJsonAsync(new ProblemDetails()
|
||||||
|
{
|
||||||
|
Status = StatusCodes.Status500InternalServerError,
|
||||||
|
Type = "https://tools.ietf.org/html/rfc7231#section-6.5.4",
|
||||||
|
Title = "Internal Server Error.",
|
||||||
|
Detail = "Internal Server Error."
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
private async Task HandleValidationException(HttpContext httpContext, Exception ex)
|
private async Task HandleValidationException(HttpContext httpContext, Exception ex)
|
||||||
{
|
{
|
||||||
var exception = (ValidationException)ex;
|
var exception = (ValidationException)ex;
|
||||||
|
@ -47,6 +66,18 @@ public class CustomExceptionHandler : IExceptionHandler
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task HandleNotFoundException(HttpContext httpContext, Exception ex)
|
private async Task HandleNotFoundException(HttpContext httpContext, Exception ex)
|
||||||
|
{
|
||||||
|
httpContext.Response.StatusCode = StatusCodes.Status404NotFound;
|
||||||
|
|
||||||
|
await httpContext.Response.WriteAsJsonAsync(new ProblemDetails()
|
||||||
|
{
|
||||||
|
Status = StatusCodes.Status404NotFound,
|
||||||
|
Type = "https://tools.ietf.org/html/rfc7231#section-6.5.4",
|
||||||
|
Title = "The specified resource was not found.",
|
||||||
|
Detail = "Not found"
|
||||||
|
});
|
||||||
|
}
|
||||||
|
private async Task HandleNotImplementedException(HttpContext httpContext, Exception ex)
|
||||||
{
|
{
|
||||||
//var exception = (NotFoundException)ex;
|
//var exception = (NotFoundException)ex;
|
||||||
|
|
||||||
|
@ -57,7 +88,7 @@ public class CustomExceptionHandler : IExceptionHandler
|
||||||
Status = StatusCodes.Status404NotFound,
|
Status = StatusCodes.Status404NotFound,
|
||||||
Type = "https://tools.ietf.org/html/rfc7231#section-6.5.4",
|
Type = "https://tools.ietf.org/html/rfc7231#section-6.5.4",
|
||||||
Title = "The specified resource was not found.",
|
Title = "The specified resource was not found.",
|
||||||
Detail = "Not found"
|
Detail = "The Function Not Implemented"
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Binary file not shown.
|
@ -7,6 +7,7 @@
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
<PackageReference Include="Asp.Versioning.Http" Version="8.1.0" />
|
||||||
<PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="8.0.5" />
|
<PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="8.0.5" />
|
||||||
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="8.0.5">
|
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="8.0.5">
|
||||||
<PrivateAssets>all</PrivateAssets>
|
<PrivateAssets>all</PrivateAssets>
|
||||||
|
|
|
@ -1,9 +1,8 @@
|
||||||
using Microsoft.AspNetCore.Authorization;
|
using Asp.Versioning;
|
||||||
|
using Asp.Versioning.Builder;
|
||||||
using MiniSkeletonAPI.Application;
|
using MiniSkeletonAPI.Application;
|
||||||
using MiniSkeletonAPI.Infrastructure;
|
using MiniSkeletonAPI.Infrastructure;
|
||||||
using MiniSkeletonAPI.Infrastructure.Data;
|
using MiniSkeletonAPI.Infrastructure.Data;
|
||||||
using MiniSkeletonAPI.Infrastructure.Identity;
|
|
||||||
using MiniSkeletonAPI.Infrastructure.Identity.Permission;
|
|
||||||
using MiniSkeletonAPI.Presentation;
|
using MiniSkeletonAPI.Presentation;
|
||||||
|
|
||||||
var builder = WebApplication.CreateBuilder(args);
|
var builder = WebApplication.CreateBuilder(args);
|
||||||
|
@ -27,17 +26,17 @@ builder.Services.AddWebServices();
|
||||||
// };
|
// };
|
||||||
// });
|
// });
|
||||||
var app = builder.Build();
|
var app = builder.Build();
|
||||||
//app.MapCustomizedIdentityApi<ApplicationUser>();
|
|
||||||
// Configure the HTTP request pipeline.
|
// Configure the HTTP request pipeline.
|
||||||
if (app.Environment.IsDevelopment())
|
if (app.Environment.IsDevelopment())
|
||||||
{
|
await app.InitialiseDatabaseAsync();
|
||||||
await app.InitialiseDatabaseAsync();
|
|
||||||
}
|
|
||||||
else
|
else
|
||||||
{
|
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
|
||||||
// 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.UseHsts();
|
ApiVersionSet apiVersionSet = app.NewApiVersionSet()
|
||||||
}
|
.HasApiVersion(new ApiVersion(1))
|
||||||
|
.HasApiVersion(new ApiVersion(2))
|
||||||
|
.ReportApiVersions()
|
||||||
|
.Build();
|
||||||
app.UseHealthChecks("/health");
|
app.UseHealthChecks("/health");
|
||||||
app.UseHttpsRedirection();
|
app.UseHttpsRedirection();
|
||||||
app.UseAuthorization();
|
app.UseAuthorization();
|
||||||
|
@ -55,4 +54,3 @@ app.UseExceptionHandler(options => { });
|
||||||
//app.MapGet("/", () => "Hello World!");
|
//app.MapGet("/", () => "Hello World!");
|
||||||
app.MapEndpoints();
|
app.MapEndpoints();
|
||||||
app.Run();
|
app.Run();
|
||||||
public partial class Program { }
|
|
||||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -8,6 +8,7 @@
|
||||||
".NETCoreApp,Version=v8.0": {
|
".NETCoreApp,Version=v8.0": {
|
||||||
"MiniSkeletonAPI.Presentation/1.0.0": {
|
"MiniSkeletonAPI.Presentation/1.0.0": {
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"Asp.Versioning.Http": "8.1.0",
|
||||||
"Microsoft.AspNetCore.OpenApi": "8.0.5",
|
"Microsoft.AspNetCore.OpenApi": "8.0.5",
|
||||||
"Microsoft.EntityFrameworkCore.Design": "8.0.5",
|
"Microsoft.EntityFrameworkCore.Design": "8.0.5",
|
||||||
"Microsoft.Extensions.Diagnostics.HealthChecks.EntityFrameworkCore": "8.0.5",
|
"Microsoft.Extensions.Diagnostics.HealthChecks.EntityFrameworkCore": "8.0.5",
|
||||||
|
@ -20,6 +21,28 @@
|
||||||
"MiniSkeletonAPI.Presentation.dll": {}
|
"MiniSkeletonAPI.Presentation.dll": {}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"Asp.Versioning.Abstractions/8.1.0": {
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.Extensions.Primitives": "8.0.0"
|
||||||
|
},
|
||||||
|
"runtime": {
|
||||||
|
"lib/net8.0/Asp.Versioning.Abstractions.dll": {
|
||||||
|
"assemblyVersion": "8.1.0.0",
|
||||||
|
"fileVersion": "8.1.8851.31619"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Asp.Versioning.Http/8.1.0": {
|
||||||
|
"dependencies": {
|
||||||
|
"Asp.Versioning.Abstractions": "8.1.0"
|
||||||
|
},
|
||||||
|
"runtime": {
|
||||||
|
"lib/net8.0/Asp.Versioning.Http.dll": {
|
||||||
|
"assemblyVersion": "8.1.0.0",
|
||||||
|
"fileVersion": "8.1.8851.31627"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"AutoMapper/13.0.1": {
|
"AutoMapper/13.0.1": {
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"Microsoft.Extensions.Options": "8.0.2"
|
"Microsoft.Extensions.Options": "8.0.2"
|
||||||
|
@ -1359,7 +1382,8 @@
|
||||||
"Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore": "8.0.5",
|
"Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore": "8.0.5",
|
||||||
"Microsoft.AspNetCore.Identity.EntityFrameworkCore": "8.0.6",
|
"Microsoft.AspNetCore.Identity.EntityFrameworkCore": "8.0.6",
|
||||||
"Microsoft.EntityFrameworkCore.Sqlite": "8.0.5",
|
"Microsoft.EntityFrameworkCore.Sqlite": "8.0.5",
|
||||||
"MiniSkeletonAPI.Application": "1.0.0"
|
"MiniSkeletonAPI.Application": "1.0.0",
|
||||||
|
"Newtonsoft.Json": "13.0.3"
|
||||||
},
|
},
|
||||||
"runtime": {
|
"runtime": {
|
||||||
"MiniSkeletonAPI.Infrastructure.dll": {}
|
"MiniSkeletonAPI.Infrastructure.dll": {}
|
||||||
|
@ -1373,6 +1397,20 @@
|
||||||
"serviceable": false,
|
"serviceable": false,
|
||||||
"sha512": ""
|
"sha512": ""
|
||||||
},
|
},
|
||||||
|
"Asp.Versioning.Abstractions/8.1.0": {
|
||||||
|
"type": "package",
|
||||||
|
"serviceable": true,
|
||||||
|
"sha512": "sha512-mpeNZyMdvrHztJwR1sXIUQ+3iioEU97YMBnFA9WLbsPOYhGwDJnqJMmEd8ny7kcmS9OjTHoEuX/bSXXY3brIFA==",
|
||||||
|
"path": "asp.versioning.abstractions/8.1.0",
|
||||||
|
"hashPath": "asp.versioning.abstractions.8.1.0.nupkg.sha512"
|
||||||
|
},
|
||||||
|
"Asp.Versioning.Http/8.1.0": {
|
||||||
|
"type": "package",
|
||||||
|
"serviceable": true,
|
||||||
|
"sha512": "sha512-Xu4xF62Cu9JqYi/CTa2TiK5kyHoa4EluPynj/bPFWDmlTIPzuJQbBI5RgFYVRFHjFVvWMoA77acRaFu7i7Wzqg==",
|
||||||
|
"path": "asp.versioning.http/8.1.0",
|
||||||
|
"hashPath": "asp.versioning.http.8.1.0.nupkg.sha512"
|
||||||
|
},
|
||||||
"AutoMapper/13.0.1": {
|
"AutoMapper/13.0.1": {
|
||||||
"type": "package",
|
"type": "package",
|
||||||
"serviceable": true,
|
"serviceable": true,
|
||||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -14,7 +14,7 @@ using System.Reflection;
|
||||||
[assembly: System.Reflection.AssemblyCompanyAttribute("MiniSkeletonAPI.Presentation")]
|
[assembly: System.Reflection.AssemblyCompanyAttribute("MiniSkeletonAPI.Presentation")]
|
||||||
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
|
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
|
||||||
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
|
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
|
||||||
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+7a653f6d34571cc2890f52ce8f5420bdf838ad31")]
|
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+23690cc6cfd1a2e53e900ac2af495188aec711a8")]
|
||||||
[assembly: System.Reflection.AssemblyProductAttribute("MiniSkeletonAPI.Presentation")]
|
[assembly: System.Reflection.AssemblyProductAttribute("MiniSkeletonAPI.Presentation")]
|
||||||
[assembly: System.Reflection.AssemblyTitleAttribute("MiniSkeletonAPI.Presentation")]
|
[assembly: System.Reflection.AssemblyTitleAttribute("MiniSkeletonAPI.Presentation")]
|
||||||
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
c84ece252e926a8d8db682d4bfdfcee76db67811612f73e7e8c4c3cdbffd4959
|
f11af4d06d5d5309d02728ceefe793f1eeac69aa03222dea09e3c730091b755d
|
||||||
|
|
Binary file not shown.
Binary file not shown.
|
@ -1 +1 @@
|
||||||
981ddd4ab5af31082a46721147caf582430470423fe1e2981af7dc26a8235467
|
20584d4b7787fc59386d7ed18434d4c434a9843f8e25dd4594afd06deab1dcf8
|
||||||
|
|
|
@ -169,3 +169,6 @@ D:\DevPT3\MiniSkeletonAPI\src\MiniSkeletonAPI.Presentation\bin\Debug\net8.0\Micr
|
||||||
D:\DevPT3\MiniSkeletonAPI\src\MiniSkeletonAPI.Presentation\bin\Debug\net8.0\Microsoft.IdentityModel.Protocols.OpenIdConnect.dll
|
D:\DevPT3\MiniSkeletonAPI\src\MiniSkeletonAPI.Presentation\bin\Debug\net8.0\Microsoft.IdentityModel.Protocols.OpenIdConnect.dll
|
||||||
D:\DevPT3\MiniSkeletonAPI\src\MiniSkeletonAPI.Presentation\bin\Debug\net8.0\Microsoft.IdentityModel.Tokens.dll
|
D:\DevPT3\MiniSkeletonAPI\src\MiniSkeletonAPI.Presentation\bin\Debug\net8.0\Microsoft.IdentityModel.Tokens.dll
|
||||||
D:\DevPT3\MiniSkeletonAPI\src\MiniSkeletonAPI.Presentation\bin\Debug\net8.0\System.IdentityModel.Tokens.Jwt.dll
|
D:\DevPT3\MiniSkeletonAPI\src\MiniSkeletonAPI.Presentation\bin\Debug\net8.0\System.IdentityModel.Tokens.Jwt.dll
|
||||||
|
D:\DevPT3\MiniSkeletonAPI\src\MiniSkeletonAPI.Presentation\obj\Debug\net8.0\MiniSkeletonAPI.Presentation.sourcelink.json
|
||||||
|
D:\DevPT3\MiniSkeletonAPI\src\MiniSkeletonAPI.Presentation\bin\Debug\net8.0\Asp.Versioning.Abstractions.dll
|
||||||
|
D:\DevPT3\MiniSkeletonAPI\src\MiniSkeletonAPI.Presentation\bin\Debug\net8.0\Asp.Versioning.Http.dll
|
||||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -243,6 +243,10 @@
|
||||||
"suppressParent": "All",
|
"suppressParent": "All",
|
||||||
"target": "Package",
|
"target": "Package",
|
||||||
"version": "[8.0.5, )"
|
"version": "[8.0.5, )"
|
||||||
|
},
|
||||||
|
"Newtonsoft.Json": {
|
||||||
|
"target": "Package",
|
||||||
|
"version": "[13.0.3, )"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"imports": [
|
"imports": [
|
||||||
|
@ -318,6 +322,10 @@
|
||||||
"net8.0": {
|
"net8.0": {
|
||||||
"targetAlias": "net8.0",
|
"targetAlias": "net8.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"Asp.Versioning.Http": {
|
||||||
|
"target": "Package",
|
||||||
|
"version": "[8.1.0, )"
|
||||||
|
},
|
||||||
"Microsoft.AspNetCore.OpenApi": {
|
"Microsoft.AspNetCore.OpenApi": {
|
||||||
"target": "Package",
|
"target": "Package",
|
||||||
"version": "[8.0.5, )"
|
"version": "[8.0.5, )"
|
||||||
|
|
|
@ -2,6 +2,41 @@
|
||||||
"version": 3,
|
"version": 3,
|
||||||
"targets": {
|
"targets": {
|
||||||
"net8.0": {
|
"net8.0": {
|
||||||
|
"Asp.Versioning.Abstractions/8.1.0": {
|
||||||
|
"type": "package",
|
||||||
|
"dependencies": {
|
||||||
|
"Microsoft.Extensions.Primitives": "8.0.0"
|
||||||
|
},
|
||||||
|
"compile": {
|
||||||
|
"lib/net8.0/Asp.Versioning.Abstractions.dll": {
|
||||||
|
"related": ".xml"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"runtime": {
|
||||||
|
"lib/net8.0/Asp.Versioning.Abstractions.dll": {
|
||||||
|
"related": ".xml"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Asp.Versioning.Http/8.1.0": {
|
||||||
|
"type": "package",
|
||||||
|
"dependencies": {
|
||||||
|
"Asp.Versioning.Abstractions": "8.1.0"
|
||||||
|
},
|
||||||
|
"compile": {
|
||||||
|
"lib/net8.0/Asp.Versioning.Http.dll": {
|
||||||
|
"related": ".xml"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"runtime": {
|
||||||
|
"lib/net8.0/Asp.Versioning.Http.dll": {
|
||||||
|
"related": ".xml"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"frameworkReferences": [
|
||||||
|
"Microsoft.AspNetCore.App"
|
||||||
|
]
|
||||||
|
},
|
||||||
"AutoMapper/13.0.1": {
|
"AutoMapper/13.0.1": {
|
||||||
"type": "package",
|
"type": "package",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
@ -2216,7 +2251,8 @@
|
||||||
"Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore": "8.0.5",
|
"Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore": "8.0.5",
|
||||||
"Microsoft.AspNetCore.Identity.EntityFrameworkCore": "8.0.6",
|
"Microsoft.AspNetCore.Identity.EntityFrameworkCore": "8.0.6",
|
||||||
"Microsoft.EntityFrameworkCore.Sqlite": "8.0.5",
|
"Microsoft.EntityFrameworkCore.Sqlite": "8.0.5",
|
||||||
"MiniSkeletonAPI.Application": "1.0.0"
|
"MiniSkeletonAPI.Application": "1.0.0",
|
||||||
|
"Newtonsoft.Json": "13.0.3"
|
||||||
},
|
},
|
||||||
"compile": {
|
"compile": {
|
||||||
"bin/placeholder/MiniSkeletonAPI.Infrastructure.dll": {}
|
"bin/placeholder/MiniSkeletonAPI.Infrastructure.dll": {}
|
||||||
|
@ -2228,6 +2264,42 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"libraries": {
|
"libraries": {
|
||||||
|
"Asp.Versioning.Abstractions/8.1.0": {
|
||||||
|
"sha512": "mpeNZyMdvrHztJwR1sXIUQ+3iioEU97YMBnFA9WLbsPOYhGwDJnqJMmEd8ny7kcmS9OjTHoEuX/bSXXY3brIFA==",
|
||||||
|
"type": "package",
|
||||||
|
"path": "asp.versioning.abstractions/8.1.0",
|
||||||
|
"files": [
|
||||||
|
".nupkg.metadata",
|
||||||
|
".signature.p7s",
|
||||||
|
"LICENSE.txt",
|
||||||
|
"README.md",
|
||||||
|
"asp.versioning.abstractions.8.1.0.nupkg.sha512",
|
||||||
|
"asp.versioning.abstractions.nuspec",
|
||||||
|
"icon.png",
|
||||||
|
"lib/net8.0/Asp.Versioning.Abstractions.dll",
|
||||||
|
"lib/net8.0/Asp.Versioning.Abstractions.xml",
|
||||||
|
"lib/netstandard1.0/Asp.Versioning.Abstractions.dll",
|
||||||
|
"lib/netstandard1.0/Asp.Versioning.Abstractions.xml",
|
||||||
|
"lib/netstandard2.0/Asp.Versioning.Abstractions.dll",
|
||||||
|
"lib/netstandard2.0/Asp.Versioning.Abstractions.xml"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"Asp.Versioning.Http/8.1.0": {
|
||||||
|
"sha512": "Xu4xF62Cu9JqYi/CTa2TiK5kyHoa4EluPynj/bPFWDmlTIPzuJQbBI5RgFYVRFHjFVvWMoA77acRaFu7i7Wzqg==",
|
||||||
|
"type": "package",
|
||||||
|
"path": "asp.versioning.http/8.1.0",
|
||||||
|
"files": [
|
||||||
|
".nupkg.metadata",
|
||||||
|
".signature.p7s",
|
||||||
|
"LICENSE.txt",
|
||||||
|
"README.md",
|
||||||
|
"asp.versioning.http.8.1.0.nupkg.sha512",
|
||||||
|
"asp.versioning.http.nuspec",
|
||||||
|
"icon.png",
|
||||||
|
"lib/net8.0/Asp.Versioning.Http.dll",
|
||||||
|
"lib/net8.0/Asp.Versioning.Http.xml"
|
||||||
|
]
|
||||||
|
},
|
||||||
"AutoMapper/13.0.1": {
|
"AutoMapper/13.0.1": {
|
||||||
"sha512": "/Fx1SbJ16qS7dU4i604Sle+U9VLX+WSNVJggk6MupKVkYvvBm4XqYaeFuf67diHefHKHs50uQIS2YEDFhPCakQ==",
|
"sha512": "/Fx1SbJ16qS7dU4i604Sle+U9VLX+WSNVJggk6MupKVkYvvBm4XqYaeFuf67diHefHKHs50uQIS2YEDFhPCakQ==",
|
||||||
"type": "package",
|
"type": "package",
|
||||||
|
@ -6864,6 +6936,7 @@
|
||||||
},
|
},
|
||||||
"projectFileDependencyGroups": {
|
"projectFileDependencyGroups": {
|
||||||
"net8.0": [
|
"net8.0": [
|
||||||
|
"Asp.Versioning.Http >= 8.1.0",
|
||||||
"Microsoft.AspNetCore.OpenApi >= 8.0.5",
|
"Microsoft.AspNetCore.OpenApi >= 8.0.5",
|
||||||
"Microsoft.EntityFrameworkCore.Design >= 8.0.5",
|
"Microsoft.EntityFrameworkCore.Design >= 8.0.5",
|
||||||
"Microsoft.Extensions.Diagnostics.HealthChecks.EntityFrameworkCore >= 8.0.5",
|
"Microsoft.Extensions.Diagnostics.HealthChecks.EntityFrameworkCore >= 8.0.5",
|
||||||
|
@ -6930,6 +7003,10 @@
|
||||||
"net8.0": {
|
"net8.0": {
|
||||||
"targetAlias": "net8.0",
|
"targetAlias": "net8.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"Asp.Versioning.Http": {
|
||||||
|
"target": "Package",
|
||||||
|
"version": "[8.1.0, )"
|
||||||
|
},
|
||||||
"Microsoft.AspNetCore.OpenApi": {
|
"Microsoft.AspNetCore.OpenApi": {
|
||||||
"target": "Package",
|
"target": "Package",
|
||||||
"version": "[8.0.5, )"
|
"version": "[8.0.5, )"
|
||||||
|
|
|
@ -1,9 +1,11 @@
|
||||||
{
|
{
|
||||||
"version": 2,
|
"version": 2,
|
||||||
"dgSpecHash": "sZl4PpiRDC+uLEIysu8qBrZ0+AwbrNpPOPTIgNJQwpzH1qqmslOpKTiey5w1VDoHVqN3dWB40G2A5LjIW+ObjQ==",
|
"dgSpecHash": "qWqlMh8NmW5cjy2z4cd26HGi2RfPjPyPP7CgXexY+l1I0T5fUtsGa/EeUuA8ZGXtC92G/6WeeEEDM5csrNhqIw==",
|
||||||
"success": true,
|
"success": true,
|
||||||
"projectFilePath": "D:\\DevPT3\\MiniSkeletonAPI\\src\\MiniSkeletonAPI.Presentation\\MiniSkeletonAPI.Presentation.csproj",
|
"projectFilePath": "D:\\DevPT3\\MiniSkeletonAPI\\src\\MiniSkeletonAPI.Presentation\\MiniSkeletonAPI.Presentation.csproj",
|
||||||
"expectedPackageFiles": [
|
"expectedPackageFiles": [
|
||||||
|
"C:\\Users\\muham\\.nuget\\packages\\asp.versioning.abstractions\\8.1.0\\asp.versioning.abstractions.8.1.0.nupkg.sha512",
|
||||||
|
"C:\\Users\\muham\\.nuget\\packages\\asp.versioning.http\\8.1.0\\asp.versioning.http.8.1.0.nupkg.sha512",
|
||||||
"C:\\Users\\muham\\.nuget\\packages\\automapper\\13.0.1\\automapper.13.0.1.nupkg.sha512",
|
"C:\\Users\\muham\\.nuget\\packages\\automapper\\13.0.1\\automapper.13.0.1.nupkg.sha512",
|
||||||
"C:\\Users\\muham\\.nuget\\packages\\fluentvalidation\\11.9.1\\fluentvalidation.11.9.1.nupkg.sha512",
|
"C:\\Users\\muham\\.nuget\\packages\\fluentvalidation\\11.9.1\\fluentvalidation.11.9.1.nupkg.sha512",
|
||||||
"C:\\Users\\muham\\.nuget\\packages\\fluentvalidation.dependencyinjectionextensions\\11.9.1\\fluentvalidation.dependencyinjectionextensions.11.9.1.nupkg.sha512",
|
"C:\\Users\\muham\\.nuget\\packages\\fluentvalidation.dependencyinjectionextensions\\11.9.1\\fluentvalidation.dependencyinjectionextensions.11.9.1.nupkg.sha512",
|
||||||
|
|
|
@ -4,3 +4,13 @@ public class ForbiddenAccessException : Exception
|
||||||
{
|
{
|
||||||
public ForbiddenAccessException() : base() { }
|
public ForbiddenAccessException() : base() { }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public class NotFoundException : Exception
|
||||||
|
{
|
||||||
|
public NotFoundException() : base() { }
|
||||||
|
}
|
||||||
|
|
||||||
|
//public class NotImplementedException : Exception
|
||||||
|
//{
|
||||||
|
// public NotImplementedException() : base() { }
|
||||||
|
//}
|
|
@ -20,3 +20,28 @@ public class ValidationException : Exception
|
||||||
|
|
||||||
public IDictionary<string, string[]> Errors { get; }
|
public IDictionary<string, string[]> Errors { get; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//public class NotFoundException : Exception
|
||||||
|
//{
|
||||||
|
// /// <summary>
|
||||||
|
// /// Initializes a new instance of the NotFoundException class with a specified name of the queried object and its key.
|
||||||
|
// /// </summary>
|
||||||
|
// /// <param name="objectName">Name of the queried object.</param>
|
||||||
|
// /// <param name="key">The value by which the object is queried.</param>
|
||||||
|
// public NotFoundException(string key, string objectName)
|
||||||
|
// : base($"Queried object {objectName} was not found, Key: {key}")
|
||||||
|
// {
|
||||||
|
// }
|
||||||
|
|
||||||
|
// /// <summary>
|
||||||
|
// /// Initializes a new instance of the NotFoundException class with a specified name of the queried object, its key,
|
||||||
|
// /// and the exception that is the cause of this exception.
|
||||||
|
// /// </summary>
|
||||||
|
// /// <param name="objectName">Name of the queried object.</param>
|
||||||
|
// /// <param name="key">The value by which the object is queried.</param>
|
||||||
|
// /// <param name="innerException">The exception that is the cause of the current exception.</param>
|
||||||
|
// public NotFoundException(string key, string objectName, Exception innerException)
|
||||||
|
// : base($"Queried object {objectName} was not found, Key: {key}", innerException)
|
||||||
|
// {
|
||||||
|
// }
|
||||||
|
//}
|
|
@ -1,5 +1,8 @@
|
||||||
using MiniSkeletonAPI.Application.Common.Models;
|
using MiniSkeletonAPI.Application.Common.Models;
|
||||||
|
using MiniSkeletonAPI.Application.Identity.Permissions.Dtos;
|
||||||
|
using MiniSkeletonAPI.Application.Identity.Roles.Dtos;
|
||||||
using MiniSkeletonAPI.Application.Identity.Roles.Queries.GetRolesWithPagination;
|
using MiniSkeletonAPI.Application.Identity.Roles.Queries.GetRolesWithPagination;
|
||||||
|
using MiniSkeletonAPI.Application.Identity.Users.Dtos;
|
||||||
using MiniSkeletonAPI.Application.Identity.Users.Queries.GetUsersWithPagination;
|
using MiniSkeletonAPI.Application.Identity.Users.Queries.GetUsersWithPagination;
|
||||||
using MiniSkeletonAPI.Domain.Entities;
|
using MiniSkeletonAPI.Domain.Entities;
|
||||||
|
|
||||||
|
@ -20,4 +23,10 @@ public interface IIdentityService
|
||||||
Task<Result> DeleteRoleAsync(string userId);
|
Task<Result> DeleteRoleAsync(string userId);
|
||||||
Task<PaginatedList<RoleBriefDto>> GetRolesPaginatedAsync(GetRolesWithPaginationQuery request);
|
Task<PaginatedList<RoleBriefDto>> GetRolesPaginatedAsync(GetRolesWithPaginationQuery request);
|
||||||
|
|
||||||
|
Task<(Result Result, string UserId)> AddUserRolesAsync(UserRolesDto userRoles);
|
||||||
|
Task<(Result Result, string RoleId)> AddRolePermissionsAsync(RolePermissionsDto rolePms);
|
||||||
|
Task<(Result Result, string UserId)> AddUserPermissionsAsync(UserPermissionsDto userPms);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,14 +14,11 @@ public record CreateRoleCommand : IRequest<Guid>
|
||||||
|
|
||||||
public class CreateRoleCommandHandler : IRequestHandler<CreateRoleCommand, Guid>
|
public class CreateRoleCommandHandler : IRequestHandler<CreateRoleCommand, Guid>
|
||||||
{
|
{
|
||||||
private readonly IIdentityService _identityService;
|
private readonly IIdentityService _context;
|
||||||
//private readonly IApplicationDbContext _context;
|
|
||||||
public CreateRoleCommandHandler(
|
public CreateRoleCommandHandler(
|
||||||
//IApplicationDbContext context,
|
IIdentityService context)
|
||||||
IIdentityService identityService)
|
|
||||||
{
|
{
|
||||||
//_context = context;
|
_context = context;
|
||||||
_identityService = identityService;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<Guid> Handle(CreateRoleCommand request, CancellationToken cancellationToken)
|
public async Task<Guid> Handle(CreateRoleCommand request, CancellationToken cancellationToken)
|
||||||
|
@ -31,8 +28,7 @@ public class CreateRoleCommandHandler : IRequestHandler<CreateRoleCommand, Guid>
|
||||||
Name = request.Name,
|
Name = request.Name,
|
||||||
};
|
};
|
||||||
|
|
||||||
var entity = await _identityService.CreateRoleAsync(role);
|
var entity = await _context.CreateRoleAsync(role);
|
||||||
//await _context.SaveChangesAsync(cancellationToken);
|
|
||||||
return Guid.Parse(entity.RoleId);
|
return Guid.Parse(entity.RoleId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,10 +8,6 @@ using System.Threading.Tasks;
|
||||||
|
|
||||||
namespace MiniSkeletonAPI.Application.Identity.Roles.Commands.UpdateRole;
|
namespace MiniSkeletonAPI.Application.Identity.Roles.Commands.UpdateRole;
|
||||||
|
|
||||||
internal class UpdateRole
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
public record UpdateRoleCommand : IRequest
|
public record UpdateRoleCommand : IRequest
|
||||||
{
|
{
|
||||||
public required Guid Id { get; init; }
|
public required Guid Id { get; init; }
|
||||||
|
@ -20,15 +16,13 @@ public record UpdateRoleCommand : IRequest
|
||||||
|
|
||||||
public class UpdateRoleCommandHandler : IRequestHandler<UpdateRoleCommand>
|
public class UpdateRoleCommandHandler : IRequestHandler<UpdateRoleCommand>
|
||||||
{
|
{
|
||||||
//private readonly IApplicationDbContext _context;
|
private readonly IIdentityService _context;
|
||||||
private readonly IIdentityService _identityService;
|
|
||||||
|
|
||||||
public UpdateRoleCommandHandler(
|
public UpdateRoleCommandHandler(
|
||||||
//IApplicationDbContext context,
|
IIdentityService context
|
||||||
IIdentityService identityService
|
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
_identityService = identityService;
|
_context = context;
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task Handle(UpdateRoleCommand request, CancellationToken cancellationToken)
|
public async Task Handle(UpdateRoleCommand request, CancellationToken cancellationToken)
|
||||||
|
@ -38,6 +32,6 @@ public class UpdateRoleCommandHandler : IRequestHandler<UpdateRoleCommand>
|
||||||
|
|
||||||
Name = request.Name,
|
Name = request.Name,
|
||||||
};
|
};
|
||||||
var entity = await _identityService.UpdateRoleAsync(role, request.Id.ToString());
|
var entity = await _context.UpdateRoleAsync(role, request.Id.ToString());
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -1,6 +1,6 @@
|
||||||
using MiniSkeletonAPI.Application.Common.Interfaces;
|
using MiniSkeletonAPI.Application.Common.Interfaces;
|
||||||
using MiniSkeletonAPI.Application.Common.Models;
|
using MiniSkeletonAPI.Application.Common.Models;
|
||||||
using MiniSkeletonAPI.Application.Identity.Roles.Queries.GetRolesWithPagination;
|
using MiniSkeletonAPI.Application.Identity.Roles.Dtos;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
@ -18,18 +18,15 @@ public record GetRolesWithPaginationQuery : IRequest<PaginatedList<RoleBriefDto>
|
||||||
public class GetRolesWithPaginationQueryHandler : IRequestHandler<GetRolesWithPaginationQuery, PaginatedList<RoleBriefDto>>
|
public class GetRolesWithPaginationQueryHandler : IRequestHandler<GetRolesWithPaginationQuery, PaginatedList<RoleBriefDto>>
|
||||||
{
|
{
|
||||||
private readonly IIdentityService _context;
|
private readonly IIdentityService _context;
|
||||||
private readonly IMapper _mapper;
|
|
||||||
|
|
||||||
public GetRolesWithPaginationQueryHandler(IIdentityService context, IMapper mapper)
|
public GetRolesWithPaginationQueryHandler(IIdentityService context)
|
||||||
{
|
{
|
||||||
_context = context;
|
_context = context;
|
||||||
_mapper = mapper;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<PaginatedList<RoleBriefDto>> Handle(GetRolesWithPaginationQuery request, CancellationToken cancellationToken)
|
public async Task<PaginatedList<RoleBriefDto>> Handle(GetRolesWithPaginationQuery request, CancellationToken cancellationToken)
|
||||||
{
|
{
|
||||||
var data = await _context.GetRolesPaginatedAsync(request);
|
var data = await _context.GetRolesPaginatedAsync(request);
|
||||||
//_mapper.Map<RoleBriefDto>(data);
|
|
||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,20 +0,0 @@
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
namespace MiniSkeletonAPI.Application.Identity.Roles.Queries.GetRolesWithPagination;
|
|
||||||
|
|
||||||
public record RoleBriefDto
|
|
||||||
{
|
|
||||||
public string Id { get; init; }
|
|
||||||
public string Name { get; init; }
|
|
||||||
//private class Mapping : Profile
|
|
||||||
//{
|
|
||||||
// public Mapping()
|
|
||||||
// {
|
|
||||||
// CreateMap<User, UserBriefDto>();
|
|
||||||
// }
|
|
||||||
//}
|
|
||||||
}
|
|
|
@ -18,14 +18,11 @@ public record CreateUserCommand : IRequest<Guid>
|
||||||
|
|
||||||
public class CreateUserCommandHandler : IRequestHandler<CreateUserCommand, Guid>
|
public class CreateUserCommandHandler : IRequestHandler<CreateUserCommand, Guid>
|
||||||
{
|
{
|
||||||
private readonly IIdentityService _identityService;
|
private readonly IIdentityService _context;
|
||||||
//private readonly IApplicationDbContext _context;
|
|
||||||
public CreateUserCommandHandler(
|
public CreateUserCommandHandler(
|
||||||
//IApplicationDbContext context,
|
IIdentityService context)
|
||||||
IIdentityService identityService)
|
|
||||||
{
|
{
|
||||||
//_context = context;
|
_context = context;
|
||||||
_identityService = identityService;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<Guid> Handle(CreateUserCommand request, CancellationToken cancellationToken)
|
public async Task<Guid> Handle(CreateUserCommand request, CancellationToken cancellationToken)
|
||||||
|
@ -37,8 +34,7 @@ public class CreateUserCommandHandler : IRequestHandler<CreateUserCommand, Guid>
|
||||||
Password = request.Password
|
Password = request.Password
|
||||||
};
|
};
|
||||||
|
|
||||||
var entity = await _identityService.CreateUserAsync(user, request.Password);
|
var entity = await _context.CreateUserAsync(user, request.Password);
|
||||||
//await _context.SaveChangesAsync(cancellationToken);
|
|
||||||
return Guid.Parse(entity.UserId);
|
return Guid.Parse(entity.UserId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,14 +20,6 @@ public class DeleteUserCommandHandler : IRequestHandler<DeleteUserCommand>
|
||||||
|
|
||||||
public async Task Handle(DeleteUserCommand request, CancellationToken cancellationToken)
|
public async Task Handle(DeleteUserCommand request, CancellationToken cancellationToken)
|
||||||
{
|
{
|
||||||
//var entity = await _context.Users
|
await _context.DeleteUserAsync(request.Id.ToString());
|
||||||
// .Where(l => l.Id == request.Id)
|
|
||||||
// .SingleOrDefaultAsync(cancellationToken);
|
|
||||||
var entity = await _context.DeleteUserAsync(request.Id.ToString());
|
|
||||||
//Guard.Against.NotFound(request.Id, entity);
|
|
||||||
|
|
||||||
//_context.Users.Remove(entity);
|
|
||||||
|
|
||||||
//await _context.SaveChangesAsync(cancellationToken);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -20,15 +20,13 @@ public record UpdateUserCommand : IRequest
|
||||||
|
|
||||||
public class UpdateUserCommandHandler : IRequestHandler<UpdateUserCommand>
|
public class UpdateUserCommandHandler : IRequestHandler<UpdateUserCommand>
|
||||||
{
|
{
|
||||||
//private readonly IApplicationDbContext _context;
|
private readonly IIdentityService _context;
|
||||||
private readonly IIdentityService _identityService;
|
|
||||||
|
|
||||||
public UpdateUserCommandHandler(
|
public UpdateUserCommandHandler(
|
||||||
//IApplicationDbContext context,
|
IIdentityService context
|
||||||
IIdentityService identityService
|
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
_identityService = identityService;
|
_context = context;
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task Handle(UpdateUserCommand request, CancellationToken cancellationToken)
|
public async Task Handle(UpdateUserCommand request, CancellationToken cancellationToken)
|
||||||
|
@ -40,7 +38,7 @@ public class UpdateUserCommandHandler : IRequestHandler<UpdateUserCommand>
|
||||||
PhoneNumber = request.PhoneNumber,
|
PhoneNumber = request.PhoneNumber,
|
||||||
Password = request.Password
|
Password = request.Password
|
||||||
};
|
};
|
||||||
var entity = await _identityService.UpdateUserAsync(user, request.Id.ToString());
|
var entity = await _context.UpdateUserAsync(user, request.Id.ToString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -17,18 +17,15 @@ public record GetUsersWithPaginationQuery : IRequest<PaginatedList<UserBriefDto>
|
||||||
public class GetUsersWithPaginationQueryHandler : IRequestHandler<GetUsersWithPaginationQuery, PaginatedList<UserBriefDto>>
|
public class GetUsersWithPaginationQueryHandler : IRequestHandler<GetUsersWithPaginationQuery, PaginatedList<UserBriefDto>>
|
||||||
{
|
{
|
||||||
private readonly IIdentityService _context;
|
private readonly IIdentityService _context;
|
||||||
private readonly IMapper _mapper;
|
|
||||||
|
|
||||||
public GetUsersWithPaginationQueryHandler(IIdentityService context, IMapper mapper)
|
public GetUsersWithPaginationQueryHandler(IIdentityService context)
|
||||||
{
|
{
|
||||||
_context = context;
|
_context = context;
|
||||||
_mapper = mapper;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<PaginatedList<UserBriefDto>> Handle(GetUsersWithPaginationQuery request, CancellationToken cancellationToken)
|
public async Task<PaginatedList<UserBriefDto>> Handle(GetUsersWithPaginationQuery request, CancellationToken cancellationToken)
|
||||||
{
|
{
|
||||||
var data = await _context.GetUsersPaginatedAsync(request);
|
var data = await _context.GetUsersPaginatedAsync(request);
|
||||||
//_mapper.Map<UserBriefDto>(data);
|
|
||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,9 +18,9 @@
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
<Folder Include="Identity\Permissions\Queries\" />
|
||||||
<Folder Include="Identity\Users\Commands\UpdateUserRole\" />
|
<Folder Include="Identity\Users\Commands\UpdateUserRole\" />
|
||||||
<Folder Include="Identity\Users\Commands\UpdateUserPermission\" />
|
<Folder Include="Identity\Users\Commands\UpdateUserPermission\" />
|
||||||
<Folder Include="Identity\Users\Permissions\" />
|
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -14,7 +14,7 @@ using System.Reflection;
|
||||||
[assembly: System.Reflection.AssemblyCompanyAttribute("MiniSkeletonAPI.Application")]
|
[assembly: System.Reflection.AssemblyCompanyAttribute("MiniSkeletonAPI.Application")]
|
||||||
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
|
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
|
||||||
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
|
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
|
||||||
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+7a653f6d34571cc2890f52ce8f5420bdf838ad31")]
|
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+23690cc6cfd1a2e53e900ac2af495188aec711a8")]
|
||||||
[assembly: System.Reflection.AssemblyProductAttribute("MiniSkeletonAPI.Application")]
|
[assembly: System.Reflection.AssemblyProductAttribute("MiniSkeletonAPI.Application")]
|
||||||
[assembly: System.Reflection.AssemblyTitleAttribute("MiniSkeletonAPI.Application")]
|
[assembly: System.Reflection.AssemblyTitleAttribute("MiniSkeletonAPI.Application")]
|
||||||
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
cb517e2b35055e3aecd639984d8e2b14570e56e28b00ae083aa8a309fa9b3ae0
|
53ba1e480d5d8dbf354c004c983300e958e0198cacba93222777114b65ee07f3
|
||||||
|
|
Binary file not shown.
|
@ -1 +1 @@
|
||||||
89fea7bffcb2bf1520e9b82b1163979c54e38d96fcbffffbf6ddd3d709a01093
|
4cbbf4ad03251d5015e149412156cf017a7894d5372c32015c89186eb6d97975
|
||||||
|
|
|
@ -13,3 +13,4 @@ D:\DevPT3\MiniSkeletonAPI\src\core\MiniSkeletonAPI.Application\obj\Debug\net8.0\
|
||||||
D:\DevPT3\MiniSkeletonAPI\src\core\MiniSkeletonAPI.Application\obj\Debug\net8.0\refint\MiniSkeletonAPI.Application.dll
|
D:\DevPT3\MiniSkeletonAPI\src\core\MiniSkeletonAPI.Application\obj\Debug\net8.0\refint\MiniSkeletonAPI.Application.dll
|
||||||
D:\DevPT3\MiniSkeletonAPI\src\core\MiniSkeletonAPI.Application\obj\Debug\net8.0\MiniSkeletonAPI.Application.pdb
|
D:\DevPT3\MiniSkeletonAPI\src\core\MiniSkeletonAPI.Application\obj\Debug\net8.0\MiniSkeletonAPI.Application.pdb
|
||||||
D:\DevPT3\MiniSkeletonAPI\src\core\MiniSkeletonAPI.Application\obj\Debug\net8.0\ref\MiniSkeletonAPI.Application.dll
|
D:\DevPT3\MiniSkeletonAPI\src\core\MiniSkeletonAPI.Application\obj\Debug\net8.0\ref\MiniSkeletonAPI.Application.dll
|
||||||
|
D:\DevPT3\MiniSkeletonAPI\src\core\MiniSkeletonAPI.Application\obj\Debug\net8.0\MiniSkeletonAPI.Application.sourcelink.json
|
||||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -14,7 +14,7 @@ using System.Reflection;
|
||||||
[assembly: System.Reflection.AssemblyCompanyAttribute("MiniSkeletonAPI.Domain")]
|
[assembly: System.Reflection.AssemblyCompanyAttribute("MiniSkeletonAPI.Domain")]
|
||||||
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
|
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
|
||||||
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
|
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
|
||||||
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+7a653f6d34571cc2890f52ce8f5420bdf838ad31")]
|
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+23690cc6cfd1a2e53e900ac2af495188aec711a8")]
|
||||||
[assembly: System.Reflection.AssemblyProductAttribute("MiniSkeletonAPI.Domain")]
|
[assembly: System.Reflection.AssemblyProductAttribute("MiniSkeletonAPI.Domain")]
|
||||||
[assembly: System.Reflection.AssemblyTitleAttribute("MiniSkeletonAPI.Domain")]
|
[assembly: System.Reflection.AssemblyTitleAttribute("MiniSkeletonAPI.Domain")]
|
||||||
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
a04f6b52023919fd39ff71554c9c8eae007c31ecdd946466a2fc1d688309bb4f
|
4418b0950f3ef09ec3f06b452024f2dd7e5a0c75243d055cff5e26f1b57e92bd
|
||||||
|
|
|
@ -10,3 +10,4 @@ D:\DevPT3\MiniSkeletonAPI\src\core\MiniSkeletonAPI.Domain\obj\Debug\net8.0\MiniS
|
||||||
D:\DevPT3\MiniSkeletonAPI\src\core\MiniSkeletonAPI.Domain\obj\Debug\net8.0\refint\MiniSkeletonAPI.Domain.dll
|
D:\DevPT3\MiniSkeletonAPI\src\core\MiniSkeletonAPI.Domain\obj\Debug\net8.0\refint\MiniSkeletonAPI.Domain.dll
|
||||||
D:\DevPT3\MiniSkeletonAPI\src\core\MiniSkeletonAPI.Domain\obj\Debug\net8.0\MiniSkeletonAPI.Domain.pdb
|
D:\DevPT3\MiniSkeletonAPI\src\core\MiniSkeletonAPI.Domain\obj\Debug\net8.0\MiniSkeletonAPI.Domain.pdb
|
||||||
D:\DevPT3\MiniSkeletonAPI\src\core\MiniSkeletonAPI.Domain\obj\Debug\net8.0\ref\MiniSkeletonAPI.Domain.dll
|
D:\DevPT3\MiniSkeletonAPI\src\core\MiniSkeletonAPI.Domain\obj\Debug\net8.0\ref\MiniSkeletonAPI.Domain.dll
|
||||||
|
D:\DevPT3\MiniSkeletonAPI\src\core\MiniSkeletonAPI.Domain\obj\Debug\net8.0\MiniSkeletonAPI.Domain.sourcelink.json
|
||||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue