diff --git a/IRaCIS.Core.API/Startup.cs b/IRaCIS.Core.API/Startup.cs index 1fd1dc5..2f6cece 100644 --- a/IRaCIS.Core.API/Startup.cs +++ b/IRaCIS.Core.API/Startup.cs @@ -204,7 +204,8 @@ namespace IRaCIS.Core.API // 特殊异常处理 比如 404 app.UseStatusCodePagesWithReExecute("/Error/{0}"); - //SwaggerSetup.Configure(app, env); + // Swagger显隐 + SwaggerSetup.Configure(app, env); diff --git a/IRaCIS.Core.API/_ServiceExtensions/Swagger/SwaggerSetup.cs b/IRaCIS.Core.API/_ServiceExtensions/Swagger/SwaggerSetup.cs index 38a716f..425b128 100644 --- a/IRaCIS.Core.API/_ServiceExtensions/Swagger/SwaggerSetup.cs +++ b/IRaCIS.Core.API/_ServiceExtensions/Swagger/SwaggerSetup.cs @@ -15,128 +15,136 @@ using System.Reflection; namespace IRaCIS.Core.API { - public static class SwaggerSetup + public static class SwaggerSetup { + public static bool useSwagger = false; public static void AddSwaggerSetup(this IServiceCollection services) { - services.AddSwaggerExamplesFromAssemblyOf(); - services.AddSwaggerGen(options => + if (useSwagger) { - //姝ゅ鐨凬ame 鏄帶鍒跺櫒涓婂垎缁勭殑鍚嶇О Title鏄晫闈㈢殑澶ф爣棰 - //鍒嗙粍 - - options.SwaggerDoc("Reviewer", new OpenApiInfo {Title = "鍖荤敓妯″潡",Version = "Reviewer", }); - options.SwaggerDoc("Trial", new OpenApiInfo { Title = "椤圭洰妯″潡", Version = "Trial" }); - options.SwaggerDoc("Enroll", new OpenApiInfo { Title = "鍏ョ粍妯″潡", Version = "Enroll" }); - options.SwaggerDoc("Workload", new OpenApiInfo { Title = "宸ヤ綔閲忔ā鍧", Version = "Workload" }); - options.SwaggerDoc("Common", new OpenApiInfo { Title = "閫氱敤淇℃伅鑾峰彇", Version = "Common" }); - options.SwaggerDoc("Institution", new OpenApiInfo { Title = "鏈烘瀯淇℃伅妯″潡", Version = "Institution" }); - options.SwaggerDoc("Dashboard&Statistics", new OpenApiInfo { Title = "缁熻妯″潡", Version = "Dashboard&Statistics" }); - - options.SwaggerDoc("Financial", new OpenApiInfo { Title = "璐㈠姟妯″潡", Version = "Financial" }); - options.SwaggerDoc("Management", new OpenApiInfo { Title = "绠$悊妯″潡", Version = "Management" }); - options.SwaggerDoc("Image", new OpenApiInfo { Title = "褰卞儚妯″潡", Version = "Image" }); - options.SwaggerDoc("Reading", new OpenApiInfo { Title = "璇荤墖妯″潡", Version = "Reading" }); - - // 鎺ュ彛鎺掑簭 - options.OrderActionsBy(o => o.GroupName); + services.AddSwaggerExamplesFromAssemblyOf(); - options.DocInclusionPredicate((docName, apiDes) => + services.AddSwaggerGen(options => { - if (!apiDes.TryGetMethodInfo(out MethodInfo methodInfo)) return false; - var versions = methodInfo.DeclaringType.GetCustomAttributes(true) - .OfType() - .Select(attr => attr.GroupName); + //姝ゅ鐨凬ame 鏄帶鍒跺櫒涓婂垎缁勭殑鍚嶇О Title鏄晫闈㈢殑澶ф爣棰 + //鍒嗙粍 - return versions.Any(v => v.ToString() == docName); + options.SwaggerDoc("Reviewer", new OpenApiInfo { Title = "鍖荤敓妯″潡", Version = "Reviewer", }); + options.SwaggerDoc("Trial", new OpenApiInfo { Title = "椤圭洰妯″潡", Version = "Trial" }); + options.SwaggerDoc("Enroll", new OpenApiInfo { Title = "鍏ョ粍妯″潡", Version = "Enroll" }); + options.SwaggerDoc("Workload", new OpenApiInfo { Title = "宸ヤ綔閲忔ā鍧", Version = "Workload" }); + options.SwaggerDoc("Common", new OpenApiInfo { Title = "閫氱敤淇℃伅鑾峰彇", Version = "Common" }); + options.SwaggerDoc("Institution", new OpenApiInfo { Title = "鏈烘瀯淇℃伅妯″潡", Version = "Institution" }); + options.SwaggerDoc("Dashboard&Statistics", new OpenApiInfo { Title = "缁熻妯″潡", Version = "Dashboard&Statistics" }); + + options.SwaggerDoc("Financial", new OpenApiInfo { Title = "璐㈠姟妯″潡", Version = "Financial" }); + options.SwaggerDoc("Management", new OpenApiInfo { Title = "绠$悊妯″潡", Version = "Management" }); + options.SwaggerDoc("Image", new OpenApiInfo { Title = "褰卞儚妯″潡", Version = "Image" }); + options.SwaggerDoc("Reading", new OpenApiInfo { Title = "璇荤墖妯″潡", Version = "Reading" }); + + + // 鎺ュ彛鎺掑簭 + options.OrderActionsBy(o => o.GroupName); + + options.DocInclusionPredicate((docName, apiDes) => + { + if (!apiDes.TryGetMethodInfo(out MethodInfo methodInfo)) return false; + var versions = methodInfo.DeclaringType.GetCustomAttributes(true) + .OfType() + .Select(attr => attr.GroupName); + + return versions.Any(v => v.ToString() == docName); + }); + + var xmlPath = Path.Combine(AppContext.BaseDirectory, "IRaCIS.Core.API.xml");//杩欎釜灏辨槸鍒氬垰閰嶇疆鐨剎ml鏂囦欢鍚 + options.IncludeXmlComments(xmlPath, true); + + var xmlPath2 = Path.Combine(AppContext.BaseDirectory, "IRaCIS.Core.Application.xml");//杩欎釜灏辨槸鍒氬垰閰嶇疆鐨剎ml鏂囦欢鍚 + options.IncludeXmlComments(xmlPath2, true); + //榛樿鐨勭浜屼釜鍙傛暟鏄痜alse锛岃繖涓槸controller鐨勬敞閲婏紝璁板緱淇敼 + + + // 鍦╤eader涓坊鍔爐oken锛屼紶閫掑埌鍚庡彴 + options.OperationFilter(); + + options.DocumentFilter(); + + // 娣诲姞鐧诲綍鎸夐挳 + options.AddSecurityDefinition("bearerAuth", new OpenApiSecurityScheme() + { + Description = "JWT Authorization header using the Bearer scheme. Example: \"Authorization: Bearer {token}\"", + Name = "Authorization", + + //In = "header", + //Type = "apiKey" + }); + + + //// Bearer + //options.AddSecurityDefinition("oauth2", new OpenApiSecurityScheme + //{ + // Description = "JWT Authorization header using the Bearer scheme.", + // Name = "Authorization", + // In = ParameterLocation.Header, + // Scheme = "bearer", + // Type = SecuritySchemeType.Http, + // BearerFormat = "JWT" + //}); }); - - var xmlPath = Path.Combine(AppContext.BaseDirectory, "IRaCIS.Core.API.xml");//杩欎釜灏辨槸鍒氬垰閰嶇疆鐨剎ml鏂囦欢鍚 - options.IncludeXmlComments(xmlPath, true); - - var xmlPath2 = Path.Combine(AppContext.BaseDirectory, "IRaCIS.Core.Application.xml");//杩欎釜灏辨槸鍒氬垰閰嶇疆鐨剎ml鏂囦欢鍚 - options.IncludeXmlComments(xmlPath2, true); - //榛樿鐨勭浜屼釜鍙傛暟鏄痜alse锛岃繖涓槸controller鐨勬敞閲婏紝璁板緱淇敼 - - - // 鍦╤eader涓坊鍔爐oken锛屼紶閫掑埌鍚庡彴 - options.OperationFilter(); - - options.DocumentFilter(); - - // 娣诲姞鐧诲綍鎸夐挳 - options.AddSecurityDefinition("bearerAuth", new OpenApiSecurityScheme() - { - Description = "JWT Authorization header using the Bearer scheme. Example: \"Authorization: Bearer {token}\"", - Name = "Authorization", - - //In = "header", - //Type = "apiKey" - }); - - - //// Bearer - //options.AddSecurityDefinition("oauth2", new OpenApiSecurityScheme - //{ - // Description = "JWT Authorization header using the Bearer scheme.", - // Name = "Authorization", - // In = ParameterLocation.Header, - // Scheme = "bearer", - // Type = SecuritySchemeType.Http, - // BearerFormat = "JWT" - //}); - }); + } } public static void Configure(IApplicationBuilder app, IWebHostEnvironment env) { - app.UseDeveloperExceptionPage(); - app.UseSwagger(); - app.UseSwaggerUI(options => + if (useSwagger) { - //姝ゅ鐨凬ame 鏄〉闈 閫夋嫨鏂囨。涓嬫媺妗 鏄剧ず鐨勫悕绉 - options.SwaggerEndpoint($"swagger/Reviewer/swagger.json", "鍖荤敓妯″潡"); - options.SwaggerEndpoint($"swagger/Trial/swagger.json", "椤圭洰妯″潡"); - options.SwaggerEndpoint($"swagger/Enroll/swagger.json", "鍏ョ粍妯″潡"); - options.SwaggerEndpoint($"swagger/Workload/swagger.json", "宸ヤ綔閲忔ā鍧"); - options.SwaggerEndpoint($"swagger/Dashboard&Statistics/swagger.json", "缁熻妯″潡"); - options.SwaggerEndpoint($"swagger/Common/swagger.json", "閫氱敤妯″潡"); - - options.SwaggerEndpoint($"swagger/Financial/swagger.json", "璐㈠姟妯″潡"); - options.SwaggerEndpoint($"swagger/Institution/swagger.json", "鏈烘瀯淇℃伅妯″潡"); - options.SwaggerEndpoint($"swagger/Management/swagger.json", "绠$悊妯″潡"); - options.SwaggerEndpoint($"swagger/Image/swagger.json", "褰卞儚妯″潡"); - options.SwaggerEndpoint($"swagger/Reading/swagger.json", "璇荤墖妯″潡"); + app.UseDeveloperExceptionPage(); + app.UseSwagger(); + app.UseSwaggerUI(options => + { + //姝ゅ鐨凬ame 鏄〉闈 閫夋嫨鏂囨。涓嬫媺妗 鏄剧ず鐨勫悕绉 + options.SwaggerEndpoint($"swagger/Reviewer/swagger.json", "鍖荤敓妯″潡"); + options.SwaggerEndpoint($"swagger/Trial/swagger.json", "椤圭洰妯″潡"); + options.SwaggerEndpoint($"swagger/Enroll/swagger.json", "鍏ョ粍妯″潡"); + options.SwaggerEndpoint($"swagger/Workload/swagger.json", "宸ヤ綔閲忔ā鍧"); + options.SwaggerEndpoint($"swagger/Dashboard&Statistics/swagger.json", "缁熻妯″潡"); + options.SwaggerEndpoint($"swagger/Common/swagger.json", "閫氱敤妯″潡"); + + options.SwaggerEndpoint($"swagger/Financial/swagger.json", "璐㈠姟妯″潡"); + options.SwaggerEndpoint($"swagger/Institution/swagger.json", "鏈烘瀯淇℃伅妯″潡"); + options.SwaggerEndpoint($"swagger/Management/swagger.json", "绠$悊妯″潡"); + options.SwaggerEndpoint($"swagger/Image/swagger.json", "褰卞儚妯″潡"); + options.SwaggerEndpoint($"swagger/Reading/swagger.json", "璇荤墖妯″潡"); - //璺緞閰嶇疆锛岃缃负绌猴紝琛ㄧず鐩存帴鍦ㄦ牴鍩熷悕锛坙ocalhost:8001锛夎闂鏂囦欢, - //娉ㄦ剰localhost:8001/swagger鏄闂笉鍒扮殑锛屽幓launchSettings.json鎶妉aunchUrl鍘绘帀锛屽鏋滀綘鎯虫崲涓涓矾寰勶紝鐩存帴鍐欏悕瀛楀嵆鍙紝姣斿鐩存帴鍐檆.Route = "doc"; - //options.RoutePrefix = string.Empty; + //璺緞閰嶇疆锛岃缃负绌猴紝琛ㄧず鐩存帴鍦ㄦ牴鍩熷悕锛坙ocalhost:8001锛夎闂鏂囦欢, + //娉ㄦ剰localhost:8001/swagger鏄闂笉鍒扮殑锛屽幓launchSettings.json鎶妉aunchUrl鍘绘帀锛屽鏋滀綘鎯虫崲涓涓矾寰勶紝鐩存帴鍐欏悕瀛楀嵆鍙紝姣斿鐩存帴鍐檆.Route = "doc"; + //options.RoutePrefix = string.Empty; - options.IndexStream = () => Assembly.GetExecutingAssembly() - .GetManifestResourceStream("IRaCIS.Core.API.wwwroot.swagger.ui.Index.html"); + options.IndexStream = () => Assembly.GetExecutingAssembly() + .GetManifestResourceStream("IRaCIS.Core.API.wwwroot.swagger.ui.Index.html"); - options.RoutePrefix = string.Empty; + options.RoutePrefix = string.Empty; - //DocExpansion璁剧疆涓簄one鍙姌鍙犳墍鏈夋柟娉 - options.DocExpansion(DocExpansion.None); - //DefaultModelsExpandDepth璁剧疆涓 - 1 鍙笉鏄剧ずmodels - options.DefaultModelsExpandDepth(-1); + //DocExpansion璁剧疆涓簄one鍙姌鍙犳墍鏈夋柟娉 + options.DocExpansion(DocExpansion.None); + //DefaultModelsExpandDepth璁剧疆涓 - 1 鍙笉鏄剧ずmodels + options.DefaultModelsExpandDepth(-1); - // 寮曞叆闈欐佹枃浠舵坊鍔犵櫥褰曞姛鑳 - // 娓呴櫎闈欐佹枃浠剁紦瀛 - // options.IndexStream = () => null; - - - }); + // 寮曞叆闈欐佹枃浠舵坊鍔犵櫥褰曞姛鑳 + // 娓呴櫎闈欐佹枃浠剁紦瀛 + // options.IndexStream = () => null; + }); + + } } } } diff --git a/IRaCIS.Core.Application/Middleware/AuthenticationMiddleware.cs b/IRaCIS.Core.Application/Middleware/AuthenticationMiddleware.cs index 525588f..dc3ba55 100644 --- a/IRaCIS.Core.Application/Middleware/AuthenticationMiddleware.cs +++ b/IRaCIS.Core.Application/Middleware/AuthenticationMiddleware.cs @@ -49,25 +49,30 @@ namespace IRaCIS.Core.API.Middleware private async Task IsValidRequest(HttpContext context) { - var apiPathList =await _userTypeMenuRepository.Where(x => x.Menu.ApiPath != null && x.Menu.ApiPath != string.Empty) - .Select(x => new MenuApi() - { - - UserTypeEnum = (int)x.UserType.UserTypeEnum, - ApiPath = x.Menu.ApiPath, - - }).ToListAsync(); - - apiPathList = apiPathList.Select(x => new MenuApi() + if (!Jurisdiction.IsSearch) { - UserTypeEnum = x.UserTypeEnum, - ApiPath = x.ApiPath.ToLower(), - }).ToList(); + var apiPathList = await _userTypeMenuRepository.Where(x => x.Menu.ApiPath != null && x.Menu.ApiPath != string.Empty) + .Select(x => new MenuApi() + { + + UserTypeEnum = (int)x.UserType.UserTypeEnum, + ApiPath = x.Menu.ApiPath, + + }).ToListAsync(); + + Jurisdiction.MenuActionList = apiPathList.Select(x => new MenuApi() + { + UserTypeEnum = x.UserTypeEnum, + ApiPath = x.ApiPath.ToLower(), + }).ToList(); + Jurisdiction.IsSearch = true; + } + if (_userInfo.UserTypeEnumInt != 0) { var url = _userInfo.RequestUrl.ToLower(); ; - if (apiPathList.Any(x => x.ApiPath.Contains(url)) && !apiPathList.Any(x => x.ApiPath.Contains(url) && x.UserTypeEnum == _userInfo.UserTypeEnumInt)) + if (Jurisdiction.MenuActionList.Any(x => x.ApiPath.Contains(url)) && !Jurisdiction.MenuActionList.Any(x => x.ApiPath.Contains(url) && x.UserTypeEnum == _userInfo.UserTypeEnumInt)) { return false; } diff --git a/IRaCIS.Core.Application/Service/Management/DTO/MenuModel.cs b/IRaCIS.Core.Application/Service/Management/DTO/MenuModel.cs index c69fda4..845b16c 100644 --- a/IRaCIS.Core.Application/Service/Management/DTO/MenuModel.cs +++ b/IRaCIS.Core.Application/Service/Management/DTO/MenuModel.cs @@ -102,11 +102,6 @@ namespace IRaCIS.Application.Contracts } - public class MenuApi - { - public int UserTypeEnum { get; set; } - public string ApiPath { get; set; } - } } diff --git a/IRaCIS.Core.Domain/_Config/_AppSettings.cs b/IRaCIS.Core.Domain/_Config/_AppSettings.cs index a2d329b..8811dca 100644 --- a/IRaCIS.Core.Domain/_Config/_AppSettings.cs +++ b/IRaCIS.Core.Domain/_Config/_AppSettings.cs @@ -1,9 +1,25 @@ 锘縰sing IRaCIS.Core.Domain.Models; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Configuration.Json; +using System.Collections.Generic; namespace IRaCIS.Core.Domain.Share { + + public static class Jurisdiction + { + public static List MenuActionList { get; set; }=new List (); + + public static bool IsSearch { get; set; } = false; + } + + public class MenuApi + { + public int UserTypeEnum { get; set; } + + public string ApiPath { get; set; } + } + /// /// 澶氱幆澧 閰嶇疆鐜瀹炰綋 /// @@ -42,6 +58,7 @@ namespace IRaCIS.Core.Domain.Share public static string UserCodePrefix { get; set; } + public static string QCChallengeCodePrefix { get; set; } public static string DicomStudyCodePrefix { get; set; }