From 10f09187538e8e8078a9c01be7fda77237d537b6 Mon Sep 17 00:00:00 2001 From: liguoyang Date: Mon, 15 Jan 2024 13:47:29 +0800 Subject: [PATCH] =?UTF-8?q?fix=20=E4=BA=BA=E8=84=B8url=E9=87=8D=E6=96=B0?= =?UTF-8?q?=E8=8E=B7=E5=8F=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/AssignmentsController.cs | 8 ++-- .../Services/IAssignmentService.cs | 4 +- .../Services/Implements/AssignmentService.cs | 21 ++++---- .../Menu/Controllers/MenusController.cs | 4 +- .../MenuPermissionAssignmentRequest.cs | 6 +-- Src/Dlhis.Sys/Menu/Services/IMenuService.cs | 2 +- .../Menu/Services/Implements/MenuService.cs | 8 ++-- .../Identity/Controllers/OAuth2Controller.cs | 48 +++++++++---------- 8 files changed, 51 insertions(+), 50 deletions(-) diff --git a/Src/Dlhis.ScheduledTask/TaskAssignment/Controllers/AssignmentsController.cs b/Src/Dlhis.ScheduledTask/TaskAssignment/Controllers/AssignmentsController.cs index 6d739d5d..903e95bd 100644 --- a/Src/Dlhis.ScheduledTask/TaskAssignment/Controllers/AssignmentsController.cs +++ b/Src/Dlhis.ScheduledTask/TaskAssignment/Controllers/AssignmentsController.cs @@ -52,13 +52,13 @@ public class AssignmentsController : ControllerBase await _assignmentService.UpdateDeviceTaskStatusAsync(request); } /// - /// 获取新token + /// 获取新人脸照片 /// /// /// - [HttpGet("token")] - public async Task Token(long taskId) + [HttpGet("renewfaceurl")] + public async Task RenewFaceUrlAsync(long taskId) { - return await _assignmentService.Token(taskId); + return await _assignmentService.RenewFaceUrlAsync(taskId); } } diff --git a/Src/Dlhis.ScheduledTask/TaskAssignment/Services/IAssignmentService.cs b/Src/Dlhis.ScheduledTask/TaskAssignment/Services/IAssignmentService.cs index db8f6f3b..503af278 100644 --- a/Src/Dlhis.ScheduledTask/TaskAssignment/Services/IAssignmentService.cs +++ b/Src/Dlhis.ScheduledTask/TaskAssignment/Services/IAssignmentService.cs @@ -21,9 +21,9 @@ public interface IAssignmentService : IScopeDependency Task UpdateDeviceTaskStatusAsync(UpdateDeviceTaskStatusRequest request); /// - /// 获取新token + /// 获取新人脸照片 /// /// /// - Task Token(long taskId); + Task RenewFaceUrlAsync(long taskId); } diff --git a/Src/Dlhis.ScheduledTask/TaskAssignment/Services/Implements/AssignmentService.cs b/Src/Dlhis.ScheduledTask/TaskAssignment/Services/Implements/AssignmentService.cs index 5134adc3..8b8bd91d 100644 --- a/Src/Dlhis.ScheduledTask/TaskAssignment/Services/Implements/AssignmentService.cs +++ b/Src/Dlhis.ScheduledTask/TaskAssignment/Services/Implements/AssignmentService.cs @@ -153,37 +153,36 @@ public class AssignmentService : IAssignmentService }).ToList(); }); } + /// /// 获取新token /// /// /// /// - public async Task Token(long taskId) + public async Task RenewFaceUrlAsync(long taskId) { - var task = await _dbContext.Queryable().Where(x => x.Id == taskId).FirstAsync(); + var task = await _dbContext.Queryable().Where(x => x.Id == taskId).FirstAsync(); task.ThrowIfNull("该任务不存在"); - var isSuccess = task.Status != DeviceTaskStatusEnumType.Success ? true : false; - isSuccess.ThrowIfTrue("设备任务下发状态需为完成"); + (task.Status != DeviceTaskStatusEnumType.Process).ThrowIfTrue($"设备任务下发状态需为{DeviceTaskStatusEnumType.Process.GetDescription()}"); - string newtoken=""; - Scoped.Request.Value.Create((sp) => + return Scoped.Request.Value.Create((sp) => { FaceUrlOptions faceUrlOptions = sp.GetService>().Value; var dataProtectionProvider = sp.GetService(); var timeLimitedDataProtector = dataProtectionProvider - .CreateProtector("down:face") - .ToTimeLimitedDataProtector(); + .CreateProtector("down:face") + .ToTimeLimitedDataProtector(); + var userCode = task.UserCode; var key = $"face:{userCode}"; var token = timeLimitedDataProtector.Protect(key, TimeSpan.FromSeconds(faceUrlOptions.Limit)); - newtoken = faceUrlOptions.Url + token; - }); - return newtoken; + return faceUrlOptions.Url + token; + }); } diff --git a/Src/Dlhis.Sys/Menu/Controllers/MenusController.cs b/Src/Dlhis.Sys/Menu/Controllers/MenusController.cs index d301c770..006fb4f1 100644 --- a/Src/Dlhis.Sys/Menu/Controllers/MenusController.cs +++ b/Src/Dlhis.Sys/Menu/Controllers/MenusController.cs @@ -59,12 +59,12 @@ public class MenusController : ControllerBase /// /// 当前类型的权限分配 /// - /// 权限分配类型 MenuAssignmentTypeEnumType + /// 权限分配类型 AssignTypeEnumType /// 类型对应的唯一值 /// [HttpGet("assignments")] public async Task> GetAssignmentsAsync( - [EnumDataType(typeof(MenuAssignmentTypeEnumType))] MenuAssignmentTypeEnumType uniqueType, + [EnumDataType(typeof(AssignTypeEnumType))] AssignTypeEnumType uniqueType, [Required] string uniqueValue) { return await _menuService.GetAssignmentCodesAsync(uniqueType, uniqueValue); diff --git a/Src/Dlhis.Sys/Menu/Request/MenuPermissionAssignmentRequest.cs b/Src/Dlhis.Sys/Menu/Request/MenuPermissionAssignmentRequest.cs index 09860fb1..fc1c9253 100644 --- a/Src/Dlhis.Sys/Menu/Request/MenuPermissionAssignmentRequest.cs +++ b/Src/Dlhis.Sys/Menu/Request/MenuPermissionAssignmentRequest.cs @@ -6,10 +6,10 @@ namespace Dlhis.Sys.Menu.Request; public class MenuPermissionAssignmentRequest { /// - /// 权限类型 MenuAssignmentTypeEnumType + /// 权限类型 AssignTypeEnumType /// - [EnumDataType(typeof(MenuAssignmentTypeEnumType))] - public MenuAssignmentTypeEnumType UniqueType { get; set; } + [EnumDataType(typeof(AssignTypeEnumType))] + public AssignTypeEnumType UniqueType { get; set; } /// /// 唯一值 diff --git a/Src/Dlhis.Sys/Menu/Services/IMenuService.cs b/Src/Dlhis.Sys/Menu/Services/IMenuService.cs index 8a1646ba..94a29d5c 100644 --- a/Src/Dlhis.Sys/Menu/Services/IMenuService.cs +++ b/Src/Dlhis.Sys/Menu/Services/IMenuService.cs @@ -13,7 +13,7 @@ public interface IMenuService : IScopeDependency Task AssignmentAsync(MenuPermissionAssignmentRequest request); - Task> GetAssignmentCodesAsync(MenuAssignmentTypeEnumType permissionType, string uniqueData); + Task> GetAssignmentCodesAsync(AssignTypeEnumType permissionType, string uniqueData); Task> GetAllAssignmentPermissionsAsync(); diff --git a/Src/Dlhis.Sys/Menu/Services/Implements/MenuService.cs b/Src/Dlhis.Sys/Menu/Services/Implements/MenuService.cs index dc4bfb45..16f9c883 100644 --- a/Src/Dlhis.Sys/Menu/Services/Implements/MenuService.cs +++ b/Src/Dlhis.Sys/Menu/Services/Implements/MenuService.cs @@ -65,13 +65,14 @@ public class MenuService : IMenuService public async Task AssignmentAsync(MenuPermissionAssignmentRequest request) { - (request.UniqueType == MenuAssignmentTypeEnumType.Role).ThrowIfTrue("暂不支持角色分配"); + (request.UniqueType == AssignTypeEnumType.Role).ThrowIfTrue("暂不支持角色分配"); //清空覆盖 var permissionsToDelete = await _dbContext.Queryable() .Where(x => x.UniqueType == request.UniqueType) .Where(x => x.UniqueValue == request.UniqueValue) .ToListAsync(); + //触发日志记录 await _dbContext.DeleteAsync(permissionsToDelete); @@ -80,13 +81,14 @@ public class MenuService : IMenuService Code = x, UniqueType = request.UniqueType, UniqueValue = request.UniqueValue + }).ToList(); await _dbContext.InsertAsync(permissions); } - public async Task> GetAssignmentCodesAsync(MenuAssignmentTypeEnumType uniqueType, string uniqueData) + public async Task> GetAssignmentCodesAsync(AssignTypeEnumType uniqueType, string uniqueData) { var permissionCodes = await _dbContext.Queryable() .Where(x => x.UniqueType == uniqueType) @@ -275,7 +277,7 @@ public class MenuService : IMenuService // var groupCodes = await GetAssignmentCodesAsync(MenuPermissionTypeEnumType.Group, manager.usergrp); //user - var userCodes = await GetAssignmentCodesAsync(MenuAssignmentTypeEnumType.User, user.Id.ToString()); + var userCodes = await GetAssignmentCodesAsync(AssignTypeEnumType.User, user.Id.ToString()); var all = userCodes;// gP.Concat(uP).Distinct().ToList(); return all; diff --git a/Src/Dlhis.User/Identity/Controllers/OAuth2Controller.cs b/Src/Dlhis.User/Identity/Controllers/OAuth2Controller.cs index b520af15..fb12a3a3 100644 --- a/Src/Dlhis.User/Identity/Controllers/OAuth2Controller.cs +++ b/Src/Dlhis.User/Identity/Controllers/OAuth2Controller.cs @@ -5,34 +5,34 @@ using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Options; using Newtonsoft.Json.Linq; -namespace Dlhis.User.Identity.Controllers +namespace Dlhis.User.Identity.Controllers; + +/// +/// OAuth2认证 +/// +[Route("api/[controller]")] +[ApiController] +public class OAuth2Controller : ControllerBase { - [Route("api/[controller]")] - [ApiController] - public class OAuth2Controller : ControllerBase + private readonly IHttpClientFactory _httpClientFactory; + private readonly IOptions _identityServerOption; + + public OAuth2Controller(IHttpClientFactory httpClientFactory, IOptions identityServerOption) { - private readonly IHttpClientFactory _httpClientFactory; - private readonly IOptions _identityServerOption; - private readonly IServiceProvider _serviceProvider; + _httpClientFactory = httpClientFactory; + _identityServerOption = identityServerOption; + } - public OAuth2Controller(IHttpClientFactory httpClientFactory, IOptions identityServerOption, IServiceProvider serviceProvider) - { - _httpClientFactory = httpClientFactory; - _identityServerOption = identityServerOption; - _serviceProvider = serviceProvider; - } + [HttpPost("clientgrant")] + public async Task ClientGrant(ClientGrantRequest request) + { + var authority = _identityServerOption.Value.Authority; - [HttpPost("clientgrant")] - public async Task ClientGrant(ClientGrantRequest request) - { - var authority = _identityServerOption.Value.Authority; + var httpClient = _httpClientFactory.CreateClient("oauth2"); - var httpClient = _httpClientFactory.CreateClient("oauth2"); - - var content = new StringContent($"grant_type=client_credentials&client_id={request.ClientId}&client_secret={request.ClientSecret}&scope={request.Scope}", Encoding.UTF8, "application/x-www-form-urlencoded"); - var response = await httpClient.PostAsync($"{authority}/connect/token", content); - var result = await response.Content.ReadAsStringAsync(); - return JObject.Parse(result); - } + var content = new StringContent($"grant_type=client_credentials&client_id={request.ClientId}&client_secret={request.ClientSecret}&scope={request.Scope}", Encoding.UTF8, "application/x-www-form-urlencoded"); + var response = await httpClient.PostAsync($"{authority}/connect/token", content); + var result = await response.Content.ReadAsStringAsync(); + return JObject.Parse(result); } }