language cookie expires error

pull/732/head
Nokecy 7 years ago
parent db1bf994b7
commit 9056398fe6

@ -1,5 +1,8 @@
using Microsoft.AspNetCore.Localization;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Localization;
using Microsoft.AspNetCore.Mvc;
using System;
using Volo.Abp.Settings;
namespace Volo.Abp.AspNetCore.Mvc.Localization
{
@ -8,12 +11,40 @@ namespace Volo.Abp.AspNetCore.Mvc.Localization
public class AbpLanguagesController : AbpController
{
[HttpGet]
public IActionResult Switch(string culture, string uiCulture = "") //TODO: Implement return URL
public IActionResult Switch(string culture, string uiCulture = "", string returnUrl = "")
{
//TODO: Check allowed languages and so on...
if (!GlobalizationHelper.IsValidCultureCode(culture))
{
throw new AbpException("Unknown language: " + culture + ". It must be a valid culture!");
}
Response.Cookies.Append(CookieRequestCultureProvider.DefaultCookieName, $"c={culture}|uic={uiCulture ?? culture}");
string cookieValue = CookieRequestCultureProvider.MakeCookieValue(new RequestCulture(culture, uiCulture));
Response.Cookies.Append(CookieRequestCultureProvider.DefaultCookieName, cookieValue, new CookieOptions
{
Expires = Clock.Now.AddYears(2)
});
if (!string.IsNullOrWhiteSpace(returnUrl))
{
return Redirect(GetRedirectUrl(returnUrl));
}
return Redirect("/");
}
private string GetRedirectUrl(string returnUrl)
{
if (returnUrl.IsNullOrEmpty())
{
return "/";
}
if (Url.IsLocalUrl(returnUrl))
{
return returnUrl;
}
return "/";
}
}
}

@ -0,0 +1,26 @@
using System;
using System.Globalization;
namespace Volo.Abp.AspNetCore.Mvc.Localization
{
internal static class GlobalizationHelper
{
public static bool IsValidCultureCode(string cultureCode)
{
if (cultureCode.IsNullOrWhiteSpace())
{
return false;
}
try
{
CultureInfo.GetCultureInfo(cultureCode);
return true;
}
catch (CultureNotFoundException)
{
return false;
}
}
}
}
Loading…
Cancel
Save