Added CultureMiddleware and DisposeMiddleware
This commit is contained in:
parent
d524663958
commit
731ddefc82
52
common/ASC.Api.Core/Middleware/CultureMiddleware.cs
Normal file
52
common/ASC.Api.Core/Middleware/CultureMiddleware.cs
Normal file
@ -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<CultureMiddleware>();
|
||||
}
|
||||
}
|
||||
}
|
35
common/ASC.Api.Core/Middleware/DisposeMiddleware.cs
Normal file
35
common/ASC.Api.Core/Middleware/DisposeMiddleware.cs
Normal file
@ -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<DisposeMiddleware>();
|
||||
}
|
||||
}
|
||||
}
|
@ -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 =>
|
||||
{
|
||||
|
@ -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 =>
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user