2019-08-12 12:52:55 +00:00
|
|
|
|
using System.Globalization;
|
|
|
|
|
using System.Threading;
|
|
|
|
|
using System.Threading.Tasks;
|
2020-02-17 08:58:14 +00:00
|
|
|
|
|
2019-08-12 12:52:55 +00:00
|
|
|
|
using ASC.Core;
|
2020-02-17 08:58:14 +00:00
|
|
|
|
|
2019-08-12 12:52:55 +00:00
|
|
|
|
using Microsoft.AspNetCore.Builder;
|
|
|
|
|
using Microsoft.AspNetCore.Http;
|
|
|
|
|
|
|
|
|
|
namespace ASC.Api.Core.Middleware
|
|
|
|
|
{
|
|
|
|
|
public class CultureMiddleware
|
|
|
|
|
{
|
2022-01-31 16:36:51 +00:00
|
|
|
|
private readonly RequestDelegate _next;
|
2019-08-12 12:52:55 +00:00
|
|
|
|
|
2022-01-31 16:36:51 +00:00
|
|
|
|
public CultureMiddleware(RequestDelegate next) => _next = next;
|
2019-08-12 12:52:55 +00:00
|
|
|
|
|
2019-09-09 12:56:33 +00:00
|
|
|
|
public async Task Invoke(HttpContext context, UserManager userManager, TenantManager tenantManager, AuthContext authContext)
|
2019-08-12 12:52:55 +00:00
|
|
|
|
{
|
|
|
|
|
CultureInfo culture = null;
|
|
|
|
|
|
2019-09-09 12:56:33 +00:00
|
|
|
|
if (authContext.IsAuthenticated)
|
2019-08-12 12:52:55 +00:00
|
|
|
|
{
|
2019-09-09 12:56:33 +00:00
|
|
|
|
var user = userManager.GetUsers(authContext.CurrentAccount.ID);
|
2019-08-12 12:52:55 +00:00
|
|
|
|
|
2022-01-31 16:36:51 +00:00
|
|
|
|
if (!string.IsNullOrEmpty(user.CultureName)) culture = user.GetCulture();
|
2019-08-12 12:52:55 +00:00
|
|
|
|
}
|
|
|
|
|
|
2022-01-31 16:36:51 +00:00
|
|
|
|
if (culture == null) culture = tenantManager.GetCurrentTenant().GetCulture();
|
2019-08-12 12:52:55 +00:00
|
|
|
|
|
|
|
|
|
Thread.CurrentThread.CurrentCulture = culture;
|
2019-08-13 13:01:03 +00:00
|
|
|
|
Thread.CurrentThread.CurrentUICulture = culture;
|
2019-08-12 12:52:55 +00:00
|
|
|
|
|
2022-01-31 16:36:51 +00:00
|
|
|
|
await _next.Invoke(context);
|
2019-08-12 12:52:55 +00:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static class CultureMiddlewareExtensions
|
|
|
|
|
{
|
2022-01-31 16:36:51 +00:00
|
|
|
|
public static IApplicationBuilder UseCultureMiddleware(this IApplicationBuilder builder) =>
|
|
|
|
|
builder.UseMiddleware<CultureMiddleware>();
|
2019-08-12 12:52:55 +00:00
|
|
|
|
}
|
|
|
|
|
}
|