From 731ddefc82eb819adfed48e58c5d9f0d0c4d7d20 Mon Sep 17 00:00:00 2001 From: pavelbannov Date: Mon, 12 Aug 2019 15:52:55 +0300 Subject: [PATCH] Added CultureMiddleware and DisposeMiddleware --- .../Middleware/CultureMiddleware.cs | 52 +++++++++++++++++++ .../Middleware/DisposeMiddleware.cs | 35 +++++++++++++ products/ASC.People/Server/Startup.cs | 20 ++----- web/ASC.Web.Api/Startup.cs | 18 +------ 4 files changed, 92 insertions(+), 33 deletions(-) create mode 100644 common/ASC.Api.Core/Middleware/CultureMiddleware.cs create mode 100644 common/ASC.Api.Core/Middleware/DisposeMiddleware.cs diff --git a/common/ASC.Api.Core/Middleware/CultureMiddleware.cs b/common/ASC.Api.Core/Middleware/CultureMiddleware.cs new file mode 100644 index 0000000000..22fd4889c4 --- /dev/null +++ b/common/ASC.Api.Core/Middleware/CultureMiddleware.cs @@ -0,0 +1,52 @@ +using System.Globalization; +using System.Threading; +using System.Threading.Tasks; +using ASC.Core; +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Http; + +namespace ASC.Api.Core.Middleware +{ + public class CultureMiddleware + { + private readonly RequestDelegate next; + + public CultureMiddleware(RequestDelegate next) + { + this.next = next; + } + + public async Task Invoke(HttpContext context) + { + CultureInfo culture = null; + + if (SecurityContext.IsAuthenticated) + { + var user = CoreContext.UserManager.GetUsers(SecurityContext.CurrentAccount.ID); + + if (!string.IsNullOrEmpty(user.CultureName)) + { + culture = user.GetCulture(); + } + } + + if (culture == null) + { + culture = CoreContext.TenantManager.GetCurrentTenant().GetCulture(); + } + + Thread.CurrentThread.CurrentCulture = culture; + Thread.CurrentThread.CurrentCulture = culture; + + await next.Invoke(context); + } + } + + public static class CultureMiddlewareExtensions + { + public static IApplicationBuilder UseCultureMiddleware(this IApplicationBuilder builder) + { + return builder.UseMiddleware(); + } + } +} diff --git a/common/ASC.Api.Core/Middleware/DisposeMiddleware.cs b/common/ASC.Api.Core/Middleware/DisposeMiddleware.cs new file mode 100644 index 0000000000..34a8193945 --- /dev/null +++ b/common/ASC.Api.Core/Middleware/DisposeMiddleware.cs @@ -0,0 +1,35 @@ +using System.Globalization; +using System.Threading; +using System.Threading.Tasks; +using ASC.Common.Web; +using ASC.Core; +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Http; + +namespace ASC.Api.Core.Middleware +{ + public class DisposeMiddleware + { + private readonly RequestDelegate next; + + public DisposeMiddleware(RequestDelegate next) + { + this.next = next; + } + + public async Task Invoke(HttpContext context) + { + context.Response.RegisterForDispose(new DisposableHttpContext(context)); + + await next.Invoke(context); + } + } + + public static class DisposeMiddlewareExtensions + { + public static IApplicationBuilder UseDisposeMiddleware(this IApplicationBuilder builder) + { + return builder.UseMiddleware(); + } + } +} diff --git a/products/ASC.People/Server/Startup.cs b/products/ASC.People/Server/Startup.cs index fc858de6fd..fc4d865199 100644 --- a/products/ASC.People/Server/Startup.cs +++ b/products/ASC.People/Server/Startup.cs @@ -1,3 +1,4 @@ +using System.Globalization; using System.Threading; using ASC.Api.Core; @@ -113,24 +114,9 @@ namespace ASC.People app.UseAuthentication(); - app.Use(async (context, next) => { - if (SecurityContext.IsAuthenticated) - { - var user = CoreContext.UserManager.GetUsers(SecurityContext.CurrentAccount.ID); - var culture = user.GetCulture(); - Thread.CurrentThread.CurrentCulture = user.GetCulture(); - Thread.CurrentThread.CurrentCulture = user.GetCulture(); - } - // - await next.Invoke(); - }); + app.UseCultureMiddleware(); - app.Use(async (context, next) => - { - context.Response.RegisterForDispose(new DisposableHttpContext(context)); - - await next(); - }); + app.UseDisposeMiddleware(); app.UseEndpoints(endpoints => { diff --git a/web/ASC.Web.Api/Startup.cs b/web/ASC.Web.Api/Startup.cs index f86f3855b9..3afb6d1514 100644 --- a/web/ASC.Web.Api/Startup.cs +++ b/web/ASC.Web.Api/Startup.cs @@ -109,23 +109,9 @@ namespace ASC.Web.Api app.UseAuthentication(); - app.Use(async (context, next) => { - if (SecurityContext.IsAuthenticated) - { - var user = CoreContext.UserManager.GetUsers(SecurityContext.CurrentAccount.ID); - var culture = user.GetCulture(); - Thread.CurrentThread.CurrentCulture = user.GetCulture(); - Thread.CurrentThread.CurrentCulture = user.GetCulture(); - } - await next.Invoke(); - }); + app.UseCultureMiddleware(); - app.Use(async (context, next) => - { - context.Response.RegisterForDispose(new DisposableHttpContext(context)); - - await next(); - }); + app.UseDisposeMiddleware(); app.UseEndpoints(endpoints => {