DocSpace-buildtools/common/ASC.Api.Core/Middleware/CultureMiddleware.cs

44 lines
1.3 KiB
C#
Raw Normal View History

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