web: fix title not being loaded from config
Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org> #770
This commit is contained in:
		| @ -1,4 +1,4 @@ | ||||
| import { Configuration, Middleware, ResponseContext } from "authentik-api"; | ||||
| import { Config, Configuration, Middleware, ResponseContext, RootApi } from "authentik-api"; | ||||
| import { getCookie } from "../utils"; | ||||
| import { API_DRAWER_MIDDLEWARE } from "../elements/notifications/APIDrawer"; | ||||
| import { MessageMiddleware } from "../elements/messages/Middleware"; | ||||
| @ -12,6 +12,14 @@ export class LoggingMiddleware implements Middleware { | ||||
|  | ||||
| } | ||||
|  | ||||
| let globalConfigPromise: Promise<Config>; | ||||
| export function config(): Promise<Config> { | ||||
|     if (!globalConfigPromise) { | ||||
|         globalConfigPromise = new RootApi(DEFAULT_CONFIG).rootConfigList(); | ||||
|     } | ||||
|     return globalConfigPromise; | ||||
| } | ||||
|  | ||||
| export const DEFAULT_CONFIG = new Configuration({ | ||||
|     basePath: "/api/v2beta", | ||||
|     headers: { | ||||
|  | ||||
| @ -2,12 +2,12 @@ import * as Sentry from "@sentry/browser"; | ||||
| import { Integrations } from "@sentry/tracing"; | ||||
| import { VERSION } from "../constants"; | ||||
| import { SentryIgnoredError } from "../common/errors"; | ||||
| import { Config, RootApi } from "authentik-api"; | ||||
| import { me } from "./Users"; | ||||
| import { DEFAULT_CONFIG } from "./Config"; | ||||
| import { config } from "./Config"; | ||||
| import { Config } from "authentik-api"; | ||||
|  | ||||
| export function configureSentry(): Promise<Config> { | ||||
|     return new RootApi(DEFAULT_CONFIG).rootConfigList().then((config) => { | ||||
|     return config().then((config) => { | ||||
|         if (config.errorReportingEnabled) { | ||||
|             Sentry.init({ | ||||
|                 dsn: "https://a579bb09306d4f8b8d8847c052d3a1d3@sentry.beryju.org/8", | ||||
|  | ||||
| @ -1,10 +1,10 @@ | ||||
| import { CoreApi, SessionUser } from "authentik-api"; | ||||
| import { DEFAULT_CONFIG } from "./Config"; | ||||
|  | ||||
| let _globalMePromise: Promise<SessionUser>; | ||||
| let globalMePromise: Promise<SessionUser>; | ||||
| export function me(): Promise<SessionUser> { | ||||
|     if (!_globalMePromise) { | ||||
|         _globalMePromise = new CoreApi(DEFAULT_CONFIG).coreUsersMe().catch((ex) => { | ||||
|     if (!globalMePromise) { | ||||
|         globalMePromise = new CoreApi(DEFAULT_CONFIG).coreUsersMe().catch((ex) => { | ||||
|             const defaultUser: SessionUser = { | ||||
|                 user: { | ||||
|                     username: "", | ||||
| @ -17,5 +17,5 @@ export function me(): Promise<SessionUser> { | ||||
|             return defaultUser; | ||||
|         }); | ||||
|     } | ||||
|     return _globalMePromise; | ||||
|     return globalMePromise; | ||||
| } | ||||
|  | ||||
| @ -9,5 +9,5 @@ export const EVENT_REFRESH = "ak-refresh"; | ||||
| export const EVENT_NOTIFICATION_TOGGLE = "ak-notification-toggle"; | ||||
| export const EVENT_SIDEBAR_TOGGLE = "ak-sidebar-toggle"; | ||||
| export const EVENT_API_DRAWER_REFRESH = "ak-api-drawer-refresh"; | ||||
| export const TITLE_SUFFIX = "authentik"; | ||||
| export const TITLE_DEFAULT = "authentik"; | ||||
| export const ROUTE_SEPARATOR = ";"; | ||||
|  | ||||
| @ -4,7 +4,8 @@ import PFContent from "@patternfly/patternfly/components/Content/content.css"; | ||||
| import AKGlobal from "../authentik.css"; | ||||
| import PFBase from "@patternfly/patternfly/patternfly-base.css"; | ||||
| import PFButton from "@patternfly/patternfly/components/Button/button.css"; | ||||
| import { EVENT_SIDEBAR_TOGGLE, TITLE_SUFFIX } from "../constants"; | ||||
| import { EVENT_SIDEBAR_TOGGLE, TITLE_DEFAULT } from "../constants"; | ||||
| import { config } from "../api/Config"; | ||||
|  | ||||
| @customElement("ak-page-header") | ||||
| export class PageHeader extends LitElement { | ||||
| @ -17,11 +18,13 @@ export class PageHeader extends LitElement { | ||||
|  | ||||
|     @property() | ||||
|     set header(value: string) { | ||||
|         if (value !== "") { | ||||
|             document.title = `${value} - ${TITLE_SUFFIX}`; | ||||
|         } else { | ||||
|             document.title = TITLE_SUFFIX; | ||||
|         } | ||||
|         config().then(config => { | ||||
|             if (value !== "") { | ||||
|                 document.title = `${value} - ${config.brandingTitle}`; | ||||
|             } else { | ||||
|                 document.title = config.brandingTitle || TITLE_DEFAULT; | ||||
|             } | ||||
|         }); | ||||
|         this._header = value; | ||||
|     } | ||||
|  | ||||
|  | ||||
| @ -37,12 +37,12 @@ import { WebAuthnAuthenticatorRegisterChallenge } from "./stages/authenticator_w | ||||
| import { CaptchaChallenge } from "./stages/captcha/CaptchaStage"; | ||||
| import { StageHost } from "./stages/base"; | ||||
| import { Challenge, ChallengeTypeEnum, Config, FlowsApi } from "authentik-api"; | ||||
| import { DEFAULT_CONFIG } from "../api/Config"; | ||||
| import { config, DEFAULT_CONFIG } from "../api/Config"; | ||||
| import { ifDefined } from "lit-html/directives/if-defined"; | ||||
| import { until } from "lit-html/directives/until"; | ||||
| import { AccessDeniedChallenge } from "./access_denied/FlowAccessDenied"; | ||||
| import { PFSize } from "../elements/Spinner"; | ||||
| import { TITLE_SUFFIX } from "../constants"; | ||||
| import { TITLE_DEFAULT } from "../constants"; | ||||
| import { configureSentry } from "../api/Sentry"; | ||||
|  | ||||
| @customElement("ak-flow-executor") | ||||
| @ -99,11 +99,13 @@ export class FlowExecutor extends LitElement implements StageHost { | ||||
|     } | ||||
|  | ||||
|     private postUpdate(): void { | ||||
|         if (this.challenge?.title) { | ||||
|             document.title = `${this.challenge.title} - ${TITLE_SUFFIX}`; | ||||
|         } else { | ||||
|             document.title = TITLE_SUFFIX; | ||||
|         } | ||||
|         config().then(config => { | ||||
|             if (this.challenge?.title) { | ||||
|                 document.title = `${this.challenge.title} - ${config.brandingTitle}`; | ||||
|             } else { | ||||
|                 document.title = config.brandingTitle || TITLE_DEFAULT; | ||||
|             } | ||||
|         }); | ||||
|     } | ||||
|  | ||||
|     submit<T>(formData?: T): Promise<void> { | ||||
|  | ||||
| @ -1665,8 +1665,8 @@ msgid "Library" | ||||
| msgstr "Library" | ||||
|  | ||||
| #: src/elements/table/Table.ts:120 | ||||
| #: src/flows/FlowExecutor.ts:165 | ||||
| #: src/flows/FlowExecutor.ts:211 | ||||
| #: src/flows/FlowExecutor.ts:167 | ||||
| #: src/flows/FlowExecutor.ts:213 | ||||
| #: src/flows/access_denied/FlowAccessDenied.ts:27 | ||||
| #: src/flows/stages/authenticator_static/AuthenticatorStaticStage.ts:43 | ||||
| #: src/flows/stages/authenticator_totp/AuthenticatorTOTPStage.ts:33 | ||||
| @ -2321,7 +2321,7 @@ msgstr "Post binding" | ||||
| msgid "Post binding (auto-submit)" | ||||
| msgstr "Post binding (auto-submit)" | ||||
|  | ||||
| #: src/flows/FlowExecutor.ts:253 | ||||
| #: src/flows/FlowExecutor.ts:255 | ||||
| msgid "Powered by authentik" | ||||
| msgstr "Powered by authentik" | ||||
|  | ||||
| @ -2575,7 +2575,7 @@ msgstr "Retry Task" | ||||
| msgid "Retry authentication" | ||||
| msgstr "Retry authentication" | ||||
|  | ||||
| #: src/flows/FlowExecutor.ts:143 | ||||
| #: src/flows/FlowExecutor.ts:145 | ||||
| msgid "Return" | ||||
| msgstr "Return" | ||||
|  | ||||
| @ -2823,7 +2823,7 @@ msgstr "Skip path regex" | ||||
| msgid "Slug" | ||||
| msgstr "Slug" | ||||
|  | ||||
| #: src/flows/FlowExecutor.ts:136 | ||||
| #: src/flows/FlowExecutor.ts:138 | ||||
| msgid "Something went wrong! Please try again later." | ||||
| msgstr "Something went wrong! Please try again later." | ||||
|  | ||||
| @ -3863,7 +3863,7 @@ msgstr "When selected, incoming assertion's Signatures will be validated against | ||||
| msgid "When this option is enabled, all executions of this policy will be logged. By default, only execution errors are logged." | ||||
| msgstr "When this option is enabled, all executions of this policy will be logged. By default, only execution errors are logged." | ||||
|  | ||||
| #: src/flows/FlowExecutor.ts:132 | ||||
| #: src/flows/FlowExecutor.ts:134 | ||||
| msgid "Whoops!" | ||||
| msgstr "Whoops!" | ||||
|  | ||||
|  | ||||
| @ -1657,8 +1657,8 @@ msgid "Library" | ||||
| msgstr "" | ||||
|  | ||||
| #: src/elements/table/Table.ts:120 | ||||
| #: src/flows/FlowExecutor.ts:165 | ||||
| #: src/flows/FlowExecutor.ts:211 | ||||
| #: src/flows/FlowExecutor.ts:167 | ||||
| #: src/flows/FlowExecutor.ts:213 | ||||
| #: src/flows/access_denied/FlowAccessDenied.ts:27 | ||||
| #: src/flows/stages/authenticator_static/AuthenticatorStaticStage.ts:43 | ||||
| #: src/flows/stages/authenticator_totp/AuthenticatorTOTPStage.ts:33 | ||||
| @ -2313,7 +2313,7 @@ msgstr "" | ||||
| msgid "Post binding (auto-submit)" | ||||
| msgstr "" | ||||
|  | ||||
| #: src/flows/FlowExecutor.ts:253 | ||||
| #: src/flows/FlowExecutor.ts:255 | ||||
| msgid "Powered by authentik" | ||||
| msgstr "" | ||||
|  | ||||
| @ -2567,7 +2567,7 @@ msgstr "" | ||||
| msgid "Retry authentication" | ||||
| msgstr "" | ||||
|  | ||||
| #: src/flows/FlowExecutor.ts:143 | ||||
| #: src/flows/FlowExecutor.ts:145 | ||||
| msgid "Return" | ||||
| msgstr "" | ||||
|  | ||||
| @ -2815,7 +2815,7 @@ msgstr "" | ||||
| msgid "Slug" | ||||
| msgstr "" | ||||
|  | ||||
| #: src/flows/FlowExecutor.ts:136 | ||||
| #: src/flows/FlowExecutor.ts:138 | ||||
| msgid "Something went wrong! Please try again later." | ||||
| msgstr "" | ||||
|  | ||||
| @ -3851,7 +3851,7 @@ msgstr "" | ||||
| msgid "When this option is enabled, all executions of this policy will be logged. By default, only execution errors are logged." | ||||
| msgstr "" | ||||
|  | ||||
| #: src/flows/FlowExecutor.ts:132 | ||||
| #: src/flows/FlowExecutor.ts:134 | ||||
| msgid "Whoops!" | ||||
| msgstr "" | ||||
|  | ||||
|  | ||||
		Reference in New Issue
	
	Block a user
	 Jens Langhammer
					Jens Langhammer