Use cookie everywhere
This commit is contained in:
@ -31,6 +31,7 @@
|
|||||||
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly" Version="5.0.0" />
|
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly" Version="5.0.0" />
|
||||||
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.DevServer" Version="5.0.0" PrivateAssets="all" />
|
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.DevServer" Version="5.0.0" PrivateAssets="all" />
|
||||||
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.Authentication" Version="5.0.0" />
|
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.Authentication" Version="5.0.0" />
|
||||||
|
<PackageReference Include="Microsoft.AspNetCore.Localization" Version="2.2.0" />
|
||||||
<PackageReference Include="Microsoft.Extensions.Localization" Version="5.0.0" />
|
<PackageReference Include="Microsoft.Extensions.Localization" Version="5.0.0" />
|
||||||
<PackageReference Include="System.Net.Http.Json" Version="5.0.0" />
|
<PackageReference Include="System.Net.Http.Json" Version="5.0.0" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
@ -10,6 +10,7 @@ using System.Runtime.Loader;
|
|||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using Microsoft.AspNetCore.Components.Authorization;
|
using Microsoft.AspNetCore.Components.Authorization;
|
||||||
using Microsoft.AspNetCore.Components.WebAssembly.Hosting;
|
using Microsoft.AspNetCore.Components.WebAssembly.Hosting;
|
||||||
|
using Microsoft.AspNetCore.Localization;
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
using Microsoft.JSInterop;
|
using Microsoft.JSInterop;
|
||||||
using Oqtane.Modules;
|
using Oqtane.Modules;
|
||||||
@ -94,7 +95,8 @@ namespace Oqtane.Client
|
|||||||
var host = builder.Build();
|
var host = builder.Build();
|
||||||
var jsRuntime = host.Services.GetRequiredService<IJSRuntime>();
|
var jsRuntime = host.Services.GetRequiredService<IJSRuntime>();
|
||||||
var interop = new Interop(jsRuntime);
|
var interop = new Interop(jsRuntime);
|
||||||
var culture = await interop.GetLocalStorage("OqtaneCulture");
|
var localizationCookie = await interop.GetCookie(CookieRequestCultureProvider.DefaultCookieName);
|
||||||
|
var culture = CookieRequestCultureProvider.ParseCookieValue(localizationCookie).UICultures[0].Value;
|
||||||
var localizationService = host.Services.GetRequiredService<ILocalizationService>();
|
var localizationService = host.Services.GetRequiredService<ILocalizationService>();
|
||||||
var cultures = await localizationService.GetCulturesAsync();
|
var cultures = await localizationService.GetCulturesAsync();
|
||||||
|
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
@namespace Oqtane.Themes.Controls
|
@namespace Oqtane.Themes.Controls
|
||||||
@inherits ThemeControlBase
|
@inherits ThemeControlBase
|
||||||
@using System.Globalization
|
@using System.Globalization
|
||||||
|
@using Microsoft.AspNetCore.Localization;
|
||||||
@using Oqtane.Models
|
@using Oqtane.Models
|
||||||
@inject ILocalizationService LocalizationService
|
@inject ILocalizationService LocalizationService
|
||||||
@inject NavigationManager NavigationManager
|
@inject NavigationManager NavigationManager
|
||||||
@ -36,7 +37,8 @@
|
|||||||
if (culture != CultureInfo.CurrentUICulture.Name)
|
if (culture != CultureInfo.CurrentUICulture.Name)
|
||||||
{
|
{
|
||||||
var interop = new Interop(JSRuntime);
|
var interop = new Interop(JSRuntime);
|
||||||
await interop.SetLocalStorage("OqtaneCulture", culture);
|
var localizationCookieValue = CookieRequestCultureProvider.MakeCookieValue(new RequestCulture(culture));
|
||||||
|
await interop.SetCookie(CookieRequestCultureProvider.DefaultCookieName, localizationCookieValue, 360);
|
||||||
|
|
||||||
NavigationManager.NavigateTo(NavigationManager.Uri, forceLoad: true);
|
NavigationManager.NavigateTo(NavigationManager.Uri, forceLoad: true);
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
using Microsoft.JSInterop;
|
using Microsoft.JSInterop;
|
||||||
using Oqtane.Models;
|
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
namespace Oqtane.UI
|
namespace Oqtane.UI
|
||||||
@ -233,33 +232,5 @@ namespace Oqtane.UI
|
|||||||
return Task.CompletedTask;
|
return Task.CompletedTask;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<string> GetLocalStorage(string name)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
var value = await _jsRuntime.InvokeAsync<string>("Oqtane.Interop.getLocalStorage", name);
|
|
||||||
|
|
||||||
return value;
|
|
||||||
}
|
|
||||||
catch
|
|
||||||
{
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public Task SetLocalStorage(string name, string value)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
_jsRuntime.InvokeVoidAsync("Oqtane.Interop.setLocalStorage", name, value);
|
|
||||||
|
|
||||||
return Task.CompletedTask;
|
|
||||||
}
|
|
||||||
catch
|
|
||||||
{
|
|
||||||
return Task.CompletedTask;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Globalization;
|
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
using Microsoft.AspNetCore.Builder;
|
using Microsoft.AspNetCore.Builder;
|
||||||
@ -31,8 +30,6 @@ namespace Oqtane.Extensions
|
|||||||
var defaultCulture = localizationManager.GetDefaultCulture();
|
var defaultCulture = localizationManager.GetDefaultCulture();
|
||||||
var supportedCultures = localizationManager.GetSupportedCultures();
|
var supportedCultures = localizationManager.GetSupportedCultures();
|
||||||
|
|
||||||
CultureInfo.CurrentUICulture = new CultureInfo(defaultCulture);
|
|
||||||
|
|
||||||
app.UseRequestLocalization(options => {
|
app.UseRequestLocalization(options => {
|
||||||
options.SetDefaultCulture(defaultCulture)
|
options.SetDefaultCulture(defaultCulture)
|
||||||
.AddSupportedUICultures(supportedCultures)
|
.AddSupportedUICultures(supportedCultures)
|
||||||
|
@ -1,17 +1,9 @@
|
|||||||
@page "/"
|
@page "/"
|
||||||
@namespace Oqtane.Pages
|
@namespace Oqtane.Pages
|
||||||
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
|
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
|
||||||
@using System.Globalization
|
|
||||||
@using Microsoft.AspNetCore.Localization
|
|
||||||
@using Microsoft.Extensions.Configuration
|
@using Microsoft.Extensions.Configuration
|
||||||
@inject IConfiguration Configuration
|
@inject IConfiguration Configuration
|
||||||
@model Oqtane.Pages.HostModel
|
@model Oqtane.Pages.HostModel
|
||||||
|
|
||||||
@{
|
|
||||||
// Set localization cookie
|
|
||||||
var localizationCookieValue = CookieRequestCultureProvider.MakeCookieValue(new RequestCulture(CultureInfo.CurrentCulture, CultureInfo.CurrentUICulture));
|
|
||||||
HttpContext.Response.Cookies.Append(CookieRequestCultureProvider.DefaultCookieName, localizationCookieValue);
|
|
||||||
}
|
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
|
@ -362,11 +362,5 @@ Oqtane.Interop = {
|
|||||||
setInterval(function () {
|
setInterval(function () {
|
||||||
window.location.href = url;
|
window.location.href = url;
|
||||||
}, wait * 1000);
|
}, wait * 1000);
|
||||||
},
|
|
||||||
getLocalStorage: function (name) {
|
|
||||||
return window.localStorage[name];
|
|
||||||
},
|
|
||||||
setLocalStorage: function (name, value) {
|
|
||||||
window.localStorage[name] = value;
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
Reference in New Issue
Block a user