Skip to content

Commit

Permalink
Merge pull request #47 from netcorepal/dev
Browse files Browse the repository at this point in the history
Dev
  • Loading branch information
witskeeper authored Nov 29, 2024
2 parents d644fab + d12ff1f commit e7c818d
Show file tree
Hide file tree
Showing 98 changed files with 1,344 additions and 764 deletions.
2 changes: 1 addition & 1 deletion Directory.Build.targets
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<Project>
<PropertyGroup>
<NetCorePalVersion>2.0.0-preview.1.2411120955</NetCorePalVersion>
<NetCorePalVersion>2.0.0-preview.1.2411260738</NetCorePalVersion>
<FrameworkVersion>8.0.10</FrameworkVersion>
<ExtensionsVersion>8.0.0</ExtensionsVersion>
<EntityFrameworkVersion>8.0.0</EntityFrameworkVersion>
Expand Down

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

3 changes: 0 additions & 3 deletions NetCorePal.D3Shop.Admin.Shared/Requests/CreateRoleRequest.cs

This file was deleted.

3 changes: 0 additions & 3 deletions NetCorePal.D3Shop.Admin.Shared/Requests/RoleQueryRequest.cs

This file was deleted.

This file was deleted.

5 changes: 0 additions & 5 deletions NetCorePal.D3Shop.Admin.Shared/Responses/AdminUserResponse.cs

This file was deleted.

This file was deleted.

This file was deleted.

12 changes: 6 additions & 6 deletions d3shop.sln
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{D8FA34CE-25D
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NetCorePal.D3Shop.Web.Admin.Client", "src\NetCorePal.D3Shop.Web.Admin.Client\NetCorePal.D3Shop.Web.Admin.Client.csproj", "{45DFEB02-2164-4CF1-A17B-DCA18F763B72}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NetCorePal.D3Shop.Admin.Shared", "NetCorePal.D3Shop.Admin.Shared\NetCorePal.D3Shop.Admin.Shared.csproj", "{7716047C-5C31-44CF-A297-094E4956ABA0}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NetCorePal.D3Shop.Admin.Shared", "src\NetCorePal.D3Shop.Admin.Shared\NetCorePal.D3Shop.Admin.Shared.csproj", "{2F4BC49A-B73A-46D7-9418-3708C6E3A341}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Expand Down Expand Up @@ -67,10 +67,10 @@ Global
{45DFEB02-2164-4CF1-A17B-DCA18F763B72}.Debug|Any CPU.Build.0 = Debug|Any CPU
{45DFEB02-2164-4CF1-A17B-DCA18F763B72}.Release|Any CPU.ActiveCfg = Release|Any CPU
{45DFEB02-2164-4CF1-A17B-DCA18F763B72}.Release|Any CPU.Build.0 = Release|Any CPU
{7716047C-5C31-44CF-A297-094E4956ABA0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{7716047C-5C31-44CF-A297-094E4956ABA0}.Debug|Any CPU.Build.0 = Debug|Any CPU
{7716047C-5C31-44CF-A297-094E4956ABA0}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7716047C-5C31-44CF-A297-094E4956ABA0}.Release|Any CPU.Build.0 = Release|Any CPU
{2F4BC49A-B73A-46D7-9418-3708C6E3A341}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{2F4BC49A-B73A-46D7-9418-3708C6E3A341}.Debug|Any CPU.Build.0 = Debug|Any CPU
{2F4BC49A-B73A-46D7-9418-3708C6E3A341}.Release|Any CPU.ActiveCfg = Release|Any CPU
{2F4BC49A-B73A-46D7-9418-3708C6E3A341}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
Expand All @@ -83,7 +83,7 @@ Global
{0AB6D561-D07F-4833-BB91-D87EFC8485C4} = {5C6B3693-7A37-4ABF-A217-8EDA0B51F742}
{64AD4028-B7DA-4858-964D-26977C1A5EA9} = {5C6B3693-7A37-4ABF-A217-8EDA0B51F742}
{45DFEB02-2164-4CF1-A17B-DCA18F763B72} = {D8FA34CE-25DA-4E6F-AD50-1EAD1F33F9F1}
{7716047C-5C31-44CF-A297-094E4956ABA0} = {D8FA34CE-25DA-4E6F-AD50-1EAD1F33F9F1}
{2F4BC49A-B73A-46D7-9418-3708C6E3A341} = {D8FA34CE-25DA-4E6F-AD50-1EAD1F33F9F1}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {E6FD5C45-63B8-458D-8CFA-7ACFD729624C}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
using System.Security.Claims;
using Microsoft.AspNetCore.Authorization;
using NetCorePal.D3Shop.Domain.AggregatesModel.Identity.AdminUserAggregate;

namespace NetCorePal.D3Shop.Admin.Shared.Authorization;

public class PermissionAuthorizationHandler(IPermissionChecker permissionChecker)
: AuthorizationHandler<PermissionRequirement>
{
protected override async Task HandleRequirementAsync(AuthorizationHandlerContext context,
PermissionRequirement requirement)
{
if (context.User.Identity?.IsAuthenticated is null or false)
{
context.Fail();
return;
}

// 系统默认用户不校验权限
var name = context.User.Claims.Single(c => c.Type == ClaimTypes.Name).Value;
if (name == AppDefaultCredentials.Name)
{
context.Succeed(requirement);
return;
}

// 检查用户是否拥有指定权限
var hasPermission =
await permissionChecker.HasPermissionAsync(context.User, requirement.PermissionCode);
if (hasPermission)
{
context.Succeed(requirement);
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.Authorization" Version="8.0.10"/>
<PackageReference Include="NetCorePal.Extensions.Dto" Version="$(NetCorePalVersion)"/>
<PackageReference Include="NetCorePal.Extensions.NewtonsoftJson" Version="$(NetCorePalVersion)"/>
</ItemGroup>

<ItemGroup>
<ProjectReference Include="..\NetCorePal.D3Shop.Domain\NetCorePal.D3Shop.Domain.csproj"/>
</ItemGroup>

</Project>
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
using NetCorePal.Extensions.Dto;

namespace NetCorePal.D3Shop.Admin.Shared.Requests;

public class AdminUserQueryRequest : PageRequest
{
public string? Name { get; set; }
public string? Phone { get; set; }
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
using System.ComponentModel.DataAnnotations;
using NetCorePal.D3Shop.Domain.AggregatesModel.Identity.RoleAggregate;

namespace NetCorePal.D3Shop.Admin.Shared.Requests;

public class CreateAdminUserRequest
{
[Required] public string Name { get; set; } = string.Empty;
[Required] public string Phone { get; set; } = string.Empty;
[Required] public string PassWord { get; set; } = string.Empty;
public IEnumerable<RoleId> RoleIds { get; set; } = [];
}
10 changes: 10 additions & 0 deletions src/NetCorePal.D3Shop.Admin.Shared/Requests/CreateRoleRequest.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
using System.ComponentModel.DataAnnotations;

namespace NetCorePal.D3Shop.Admin.Shared.Requests;

public class CreateRoleRequest
{
[Required] public string Name { get; set; } = string.Empty;
public string Description { get; set; } = string.Empty;
public IEnumerable<string> PermissionCodes { get; set; } = [];
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
using NetCorePal.Extensions.Dto;

namespace NetCorePal.D3Shop.Admin.Shared.Requests;

public class RoleQueryRequest : PageRequest
{
public string? Name { get; set; }
public string? Description { get; set; }
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
using System.ComponentModel.DataAnnotations;

namespace NetCorePal.D3Shop.Admin.Shared.Requests;

public class UpdateRoleInfoRequest
{
[Required] public string Name { get; set; } = string.Empty;
public string Description { get; set; } = string.Empty;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
namespace NetCorePal.D3Shop.Admin.Shared.Responses;

public record AdminUserPermissionResponse(
string Code,
string GroupName,
string Remark,
bool IsAssigned,
bool IsFromRole);
10 changes: 10 additions & 0 deletions src/NetCorePal.D3Shop.Admin.Shared/Responses/AdminUserResponse.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
using NetCorePal.D3Shop.Domain.AggregatesModel.Identity.AdminUserAggregate;

namespace NetCorePal.D3Shop.Admin.Shared.Responses;

public class AdminUserResponse(AdminUserId id, string name, string phone)
{
public AdminUserId Id { get; } = id;
public string Name { get; set; } = name;
public string Phone { get; set; } = phone;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
using NetCorePal.D3Shop.Domain.AggregatesModel.Identity.RoleAggregate;

namespace NetCorePal.D3Shop.Admin.Shared.Responses;

public class AdminUserRoleResponse(RoleId roleId, string roleName, bool isAssigned)
{
public RoleId RoleId { get; } = roleId;
public string RoleName { get; } = roleName;
public bool IsAssigned { get; set; } = isAssigned;
};
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,4 @@

namespace NetCorePal.D3Shop.Admin.Shared.Responses;

public record AdminUserRolesResponse(RoleId RoleId, string RoleName, string Description, bool IsAssigned);
public record RoleNameResponse(RoleId Id, string Name);
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
namespace NetCorePal.D3Shop.Admin.Shared.Responses;

public record RolePermissionResponse(
string Code,
string GroupName,
string Remark,
bool IsAssigned);
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,9 @@

namespace NetCorePal.D3Shop.Admin.Shared.Responses;

public class RoleResponse(RoleId id, string name, string description, IEnumerable<string> permissionCodes)
public class RoleResponse(RoleId id, string name, string description)
{
public RoleId Id { get; } = id;
public string Name { get; set; } = name;
public string Description { get; set; } = description;
public IEnumerable<string> PermissionCodes { get; set; } = permissionCodes;
}
Original file line number Diff line number Diff line change
Expand Up @@ -77,11 +77,11 @@ public void UpdateRolePermissions(RoleId roleId, IEnumerable<AdminUserPermission

private void RemoveRolePermissions(RoleId roleId)
{
var permissionsToRemove = Permissions.Where(p =>
p.SourceRoleIds.Remove(roleId) && p.SourceRoleIds.Count == 0).ToArray();

foreach (var permission in permissionsToRemove)
Permissions.Remove(permission);
foreach (var permission in Permissions.Where(p => p.SourceRoleIds.Remove(roleId)).ToArray())
{
if (permission.SourceRoleIds.Count == 0)
Permissions.Remove(permission);
}
}

private void AddRolePermissions(RoleId roleId, IEnumerable<AdminUserPermission> permissions)
Expand All @@ -92,8 +92,9 @@ private void AddRolePermissions(RoleId roleId, IEnumerable<AdminUserPermission>

if (existingPermission is null)
{
permission.AddSourceRoleId(roleId);
Permissions.Add(permission);
var newPermission = new AdminUserPermission(permission.PermissionCode,permission.PermissionRemark);
newPermission.AddSourceRoleId(roleId);
Permissions.Add(newPermission);
}
else
{
Expand Down
Loading

0 comments on commit e7c818d

Please sign in to comment.