public async Task InvokeAsync(HttpContext context, RequestDelegate next)
    {
        var middleware = new RequestLocalizationMiddleware(
            next,
            new OptionsWrapper <RequestLocalizationOptions>(await _requestLocalizationOptionsProvider.GetLocalizationOptionsAsync()),
            _loggerFactory
            );

        context.Response.OnStarting(() =>
        {
            if (context.Items[HttpContextItemName] == null)
            {
                var requestCultureFeature = context.Features.Get <IRequestCultureFeature>();
                if (requestCultureFeature?.Provider is QueryStringRequestCultureProvider)
                {
                    AbpRequestCultureCookieHelper.SetCultureCookie(
                        context,
                        requestCultureFeature.RequestCulture
                        );
                }
            }

            return(Task.CompletedTask);
        });

        await middleware.Invoke(context);
    }
Exemplo n.º 2
0
        public async Task InvokeAsync(HttpContext context, RequestDelegate next)
        {
            var tenant = await _tenantConfigurationProvider.GetAsync(saveResolveResult : true);

            if (tenant?.Id != _currentTenant.Id)
            {
                using (_currentTenant.Change(tenant?.Id, tenant?.Name))
                {
                    var requestCulture = await TryGetRequestCultureAsync(context);

                    if (requestCulture != null)
                    {
                        CultureInfo.CurrentCulture   = requestCulture.Culture;
                        CultureInfo.CurrentUICulture = requestCulture.UICulture;
                        AbpRequestCultureCookieHelper.SetCultureCookie(
                            context,
                            requestCulture
                            );
                    }

                    await next(context);
                }
            }
            else
            {
                await next(context);
            }
        }
Exemplo n.º 3
0
    public async Task InvokeAsync(HttpContext context, RequestDelegate next)
    {
        TenantConfiguration tenant = null;

        try
        {
            tenant = await _tenantConfigurationProvider.GetAsync(saveResolveResult : true);
        }
        catch (Exception e)
        {
            if (await _options.MultiTenancyMiddlewareErrorPageBuilder(context, e))
            {
                return;
            }
        }

        if (tenant?.Id != _currentTenant.Id)
        {
            using (_currentTenant.Change(tenant?.Id, tenant?.Name))
            {
                if (_tenantResolveResultAccessor.Result != null &&
                    _tenantResolveResultAccessor.Result.AppliedResolvers.Contains(QueryStringTenantResolveContributor.ContributorName))
                {
                    AbpMultiTenancyCookieHelper.SetTenantCookie(context, _currentTenant.Id, _options.TenantKey);
                }

                var requestCulture = await TryGetRequestCultureAsync(context);

                if (requestCulture != null)
                {
                    CultureInfo.CurrentCulture   = requestCulture.Culture;
                    CultureInfo.CurrentUICulture = requestCulture.UICulture;
                    AbpRequestCultureCookieHelper.SetCultureCookie(
                        context,
                        requestCulture
                        );
                    context.Items[AbpRequestLocalizationMiddleware.HttpContextItemName] = true;
                }

                await next(context);
            }
        }
        else
        {
            await next(context);
        }
    }
Exemplo n.º 4
0
        public IActionResult Switch(string culture, string uiCulture = "", string returnUrl = "")
        {
            if (!CultureHelper.IsValidCultureCode(culture))
            {
                throw new AbpException("Unknown language: " + culture + ". It must be a valid culture!");
            }

            AbpRequestCultureCookieHelper.SetCultureCookie(
                HttpContext,
                new RequestCulture(culture, uiCulture)
                );

            if (!string.IsNullOrWhiteSpace(returnUrl))
            {
                return(Redirect(GetRedirectUrl(returnUrl)));
            }

            return(Redirect("~/"));
        }
Exemplo n.º 5
0
        public virtual async Task <IActionResult> Switch(string culture, string uiCulture = "", string returnUrl = "")
        {
            if (!CultureHelper.IsValidCultureCode(culture))
            {
                throw new AbpException("Unknown language: " + culture + ". It must be a valid culture!");
            }

            AbpRequestCultureCookieHelper.SetCultureCookie(
                HttpContext,
                new RequestCulture(culture, uiCulture)
                );

            var context = new QueryStringCultureReplacementContext(HttpContext, new RequestCulture(culture, uiCulture), returnUrl);
            await QueryStringCultureReplacement.ReplaceAsync(context);

            if (!string.IsNullOrWhiteSpace(context.ReturnUrl))
            {
                return(Redirect(GetRedirectUrl(context.ReturnUrl)));
            }

            return(Redirect("~/"));
        }
Exemplo n.º 6
0
        public async Task InvokeAsync(HttpContext context, RequestDelegate next)
        {
            TenantConfiguration tenant;

            try
            {
                tenant = await _tenantConfigurationProvider.GetAsync(saveResolveResult : true);
            }
            catch (Exception e)
            {
                await _options.MultiTenancyMiddlewareErrorPageBuilder(context, e);

                return;
            }

            if (tenant?.Id != _currentTenant.Id)
            {
                using (_currentTenant.Change(tenant?.Id, tenant?.Name))
                {
                    var requestCulture = await TryGetRequestCultureAsync(context);

                    if (requestCulture != null)
                    {
                        CultureInfo.CurrentCulture   = requestCulture.Culture;
                        CultureInfo.CurrentUICulture = requestCulture.UICulture;
                        AbpRequestCultureCookieHelper.SetCultureCookie(
                            context,
                            requestCulture
                            );
                    }

                    await next(context);
                }
            }
            else
            {
                await next(context);
            }
        }
Exemplo n.º 7
0
    public virtual async Task <IActionResult> Switch(string culture, string uiCulture = "", string returnUrl = "")
    {
        if (!CultureHelper.IsValidCultureCode(culture))
        {
            throw new AbpException("The selected culture is not valid! Make sure you enter a valid culture code.");
        }

        AbpRequestCultureCookieHelper.SetCultureCookie(
            HttpContext,
            new RequestCulture(culture, uiCulture)
            );

        HttpContext.Items[AbpRequestLocalizationMiddleware.HttpContextItemName] = true;

        var context = new QueryStringCultureReplacementContext(HttpContext, new RequestCulture(culture, uiCulture), returnUrl);
        await QueryStringCultureReplacement.ReplaceAsync(context);

        if (!string.IsNullOrWhiteSpace(context.ReturnUrl))
        {
            return(Redirect(GetRedirectUrl(context.ReturnUrl)));
        }

        return(Redirect("~/"));
    }