web/common: fix locale detection for user-set locale (#9436) Signed-off-by: Jens Langhammer <jens@goauthentik.io> Co-authored-by: Jens L <jens@goauthentik.io>
This commit is contained in:
committed by
GitHub
parent
e935690b1b
commit
f2a37e8c7c
@ -18,7 +18,7 @@ export function me(): Promise<SessionUser> {
|
|||||||
if (!user.user.settings || !("locale" in user.user.settings)) {
|
if (!user.user.settings || !("locale" in user.user.settings)) {
|
||||||
return user;
|
return user;
|
||||||
}
|
}
|
||||||
const locale = user.user.settings.locale;
|
const locale: string | undefined = user.user.settings.locale;
|
||||||
if (locale && locale !== "") {
|
if (locale && locale !== "") {
|
||||||
console.debug(
|
console.debug(
|
||||||
`authentik/locale: Activating user's configured locale '${locale}'`,
|
`authentik/locale: Activating user's configured locale '${locale}'`,
|
||||||
|
|||||||
@ -2,7 +2,7 @@ import { EVENT_LOCALE_CHANGE, EVENT_LOCALE_REQUEST } from "@goauthentik/common/c
|
|||||||
import { customEvent } from "@goauthentik/elements/utils/customEvents";
|
import { customEvent } from "@goauthentik/elements/utils/customEvents";
|
||||||
|
|
||||||
import { LitElement, html } from "lit";
|
import { LitElement, html } from "lit";
|
||||||
import { customElement, property, state } from "lit/decorators.js";
|
import { customElement, property } from "lit/decorators.js";
|
||||||
|
|
||||||
import { WithBrandConfig } from "../Interface/brandProvider";
|
import { WithBrandConfig } from "../Interface/brandProvider";
|
||||||
import { initializeLocalization } from "./configureLocale";
|
import { initializeLocalization } from "./configureLocale";
|
||||||
@ -38,9 +38,6 @@ export class LocaleContext extends LocaleContextBase {
|
|||||||
|
|
||||||
setLocale: LocaleSetter;
|
setLocale: LocaleSetter;
|
||||||
|
|
||||||
@state()
|
|
||||||
userLocale = "";
|
|
||||||
|
|
||||||
constructor(code = DEFAULT_LOCALE) {
|
constructor(code = DEFAULT_LOCALE) {
|
||||||
super();
|
super();
|
||||||
this.notifyApplication = this.notifyApplication.bind(this);
|
this.notifyApplication = this.notifyApplication.bind(this);
|
||||||
@ -59,30 +56,22 @@ export class LocaleContext extends LocaleContextBase {
|
|||||||
|
|
||||||
connectedCallback() {
|
connectedCallback() {
|
||||||
super.connectedCallback();
|
super.connectedCallback();
|
||||||
// Commenting out until we can come up with a better way of separating the
|
|
||||||
// "request user identity" with the session expiration heartbeat.
|
|
||||||
/*
|
|
||||||
new CoreApi(DEFAULT_CONFIG)
|
|
||||||
.coreUsersMeRetrieve()
|
|
||||||
.then((user) => (this.userLocale = user?.user?.settings?.locale ?? ""))
|
|
||||||
.catch(() => {});
|
|
||||||
*/
|
|
||||||
this.updateLocale();
|
this.updateLocale();
|
||||||
window.addEventListener(EVENT_LOCALE_REQUEST, this.updateLocaleHandler);
|
window.addEventListener(EVENT_LOCALE_REQUEST, this.updateLocaleHandler as EventListener);
|
||||||
}
|
}
|
||||||
|
|
||||||
disconnectedCallback() {
|
disconnectedCallback() {
|
||||||
window.removeEventListener(EVENT_LOCALE_REQUEST, this.updateLocaleHandler);
|
window.removeEventListener(EVENT_LOCALE_REQUEST, this.updateLocaleHandler as EventListener);
|
||||||
super.disconnectedCallback();
|
super.disconnectedCallback();
|
||||||
}
|
}
|
||||||
|
|
||||||
updateLocaleHandler(_ev: Event) {
|
updateLocaleHandler(ev: CustomEvent<{ locale: string }>) {
|
||||||
console.debug("authentik/locale: Locale update request received.");
|
console.debug("authentik/locale: Locale update request received.");
|
||||||
this.updateLocale();
|
this.updateLocale(ev.detail.locale);
|
||||||
}
|
}
|
||||||
|
|
||||||
updateLocale() {
|
updateLocale(requestedLocale: string | undefined = undefined) {
|
||||||
const localeRequest = autoDetectLanguage(this.userLocale, this.brand?.defaultLocale);
|
const localeRequest = autoDetectLanguage(requestedLocale, this.brand?.defaultLocale);
|
||||||
const locale = getBestMatchLocale(localeRequest);
|
const locale = getBestMatchLocale(localeRequest);
|
||||||
if (!locale) {
|
if (!locale) {
|
||||||
console.warn(`authentik/locale: failed to find locale for code ${localeRequest}`);
|
console.warn(`authentik/locale: failed to find locale for code ${localeRequest}`);
|
||||||
|
|||||||
Reference in New Issue
Block a user