Skip to content

Commit 2d80d72

Browse files
committed
feat: 新增驗證通過用戶 ID 的選項至權限驗證邏輯
1 parent e48620c commit 2d80d72

4 files changed

Lines changed: 10 additions & 7 deletions

File tree

src/Netcorext.Auth.Authentication/Middlewares/PermissionMiddleware.cs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ public async Task InvokeAsync(HttpContext context, IDispatcher dispatcher)
114114
});
115115
}
116116

117-
if (await IsValidAsync(dispatcher, _config.AppSettings.ValidationPassUserId && rt == "1" ? id : null, role, functionId, method, rv.Values.ToArray()))
117+
if (await IsValidAsync(dispatcher, rt == "1" ? id : null, role, functionId, method, _config.AppSettings.ValidationPassUserId, rv.Values.ToArray()))
118118
{
119119
await _next(context);
120120

@@ -140,7 +140,7 @@ public async Task InvokeAsync(HttpContext context, IDispatcher dispatcher)
140140
await context.ForbiddenAsync(_config.AppSettings.UseNativeStatus);
141141
}
142142

143-
private static async Task<bool> IsValidAsync(IDispatcher dispatcher, long? userId, string? role, string functionId, string httpMethod, IEnumerable<ValidatePermission.PermissionCondition> permissionConditions)
143+
private static async Task<bool> IsValidAsync(IDispatcher dispatcher, long? userId, string? role, string functionId, string httpMethod, bool validationPassUserId, IEnumerable<ValidatePermission.PermissionCondition> permissionConditions)
144144
{
145145
var roleIds = role?.Split(" ", StringSplitOptions.RemoveEmptyEntries)
146146
.Where(t => !t.IsEmpty() && long.TryParse(t, out var _))
@@ -156,7 +156,8 @@ private static async Task<bool> IsValidAsync(IDispatcher dispatcher, long? userI
156156
RoleId = roleIds,
157157
FunctionId = functionId,
158158
PermissionType = httpMethod.ToPermissionType(),
159-
PermissionConditions = permissionConditions.ToArray()
159+
PermissionConditions = permissionConditions.ToArray(),
160+
ValidationPassUserId = validationPassUserId
160161
});
161162

162163
return result == Result.Success;

src/Netcorext.Auth.Authentication/Services/Permission/Queries/ValidatePermission/ValidatePermission.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ public class ValidatePermission : IRequest<Result>
1010
public long[]? RoleId { get; set; }
1111
public string FunctionId { get; set; } = null!;
1212
public string? Group { get; set; }
13+
public bool ValidationPassUserId { get; set; }
1314
public PermissionType PermissionType { get; set; }
1415
public PermissionCondition[]? PermissionConditions { get; set; }
1516
public ExtendData[]? RoleExtendData { get; set; }
@@ -25,4 +26,4 @@ public class ExtendData
2526
public string Key { get; set; } = null!;
2627
public string Value { get; set; } = null!;
2728
}
28-
}
29+
}

src/Netcorext.Auth.Authentication/Services/Permission/Queries/ValidatePermission/ValidatePermissionHandler.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ public async Task<Result> Handle(ValidatePermission request, CancellationToken c
4040
if (request.RoleId != null && request.RoleId.Any())
4141
roleIds = request.RoleId;
4242

43-
if (request.UserId.HasValue)
43+
if (request.ValidationPassUserId && request.UserId.HasValue)
4444
{
4545
if (_config.AppSettings.Owner?.Any(t => t == request.UserId) ?? false)
4646
return Result.Success;

src/Netcorext.Auth.Protobufs/Protos/auth-authentication-permission-validation-service.proto

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,8 @@ message ValidatePermissionRequest {
1818
netcorext.auth.protobufs.enums.PermissionType permissionType = 5;
1919
repeated PermissionCondition permissionConditions = 6;
2020
repeated ExtendData roleExtendData = 7;
21-
21+
google.protobuf.BoolValue validationPassUserId = 8;
22+
2223
message PermissionCondition {
2324
string key = 1;
2425
string value = 2;
@@ -28,4 +29,4 @@ message ValidatePermissionRequest {
2829
string key = 1;
2930
string value = 2;
3031
}
31-
}
32+
}

0 commit comments

Comments
 (0)