web/user: load interface settings from user settings
Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org>
This commit is contained in:
		| @ -33,7 +33,7 @@ import "../elements/sidebar/Sidebar"; | ||||
| import { DefaultTenant } from "../elements/sidebar/SidebarBrand"; | ||||
| import "../elements/sidebar/SidebarItem"; | ||||
| import { ROUTES } from "../routesUser"; | ||||
| import { uiConfig } from "../user/config"; | ||||
| import { uiConfig, UserDisplay } from "../user/config"; | ||||
| import { first } from "../utils"; | ||||
| import "./locale"; | ||||
|  | ||||
| @ -235,11 +235,11 @@ export class UserInterface extends LitElement { | ||||
|                                     ${until( | ||||
|                                         me().then((me) => { | ||||
|                                             switch (config.navbar.userDisplay) { | ||||
|                                                 case "username": | ||||
|                                                 case UserDisplay.username: | ||||
|                                                     return me.user.username; | ||||
|                                                 case "name": | ||||
|                                                 case UserDisplay.name: | ||||
|                                                     return me.user.name; | ||||
|                                                 case "email": | ||||
|                                                 case UserDisplay.email: | ||||
|                                                     return me.user.email; | ||||
|                                                 default: | ||||
|                                                     return me.user.username; | ||||
|  | ||||
| @ -7,6 +7,7 @@ import { ifDefined } from "lit/directives/if-defined"; | ||||
| import { Prompt, PromptTypeEnum, StagesApi } from "@goauthentik/api"; | ||||
|  | ||||
| import { DEFAULT_CONFIG } from "../../../api/Config"; | ||||
| import "../../../elements/CodeMirror"; | ||||
| import "../../../elements/forms/HorizontalFormElement"; | ||||
| import { ModelForm } from "../../../elements/forms/ModelForm"; | ||||
| import { first } from "../../../utils"; | ||||
|  | ||||
| @ -1,3 +1,11 @@ | ||||
| import { me } from "../api/Users"; | ||||
|  | ||||
| export enum UserDisplay { | ||||
|     "username", | ||||
|     "name", | ||||
|     "email", | ||||
| } | ||||
|  | ||||
| export interface UIConfig { | ||||
|     enabledFeatures: { | ||||
|         // API Request drawer in navbar | ||||
| @ -12,7 +20,7 @@ export interface UIConfig { | ||||
|         search: boolean; | ||||
|     }; | ||||
|     navbar: { | ||||
|         userDisplay: "username" | "name" | "email"; | ||||
|         userDisplay: UserDisplay; | ||||
|     }; | ||||
|     color: { | ||||
|         background: string; | ||||
| @ -20,23 +28,36 @@ export interface UIConfig { | ||||
|     }; | ||||
| } | ||||
|  | ||||
| export const DefaultUIConfig: UIConfig = { | ||||
|     enabledFeatures: { | ||||
| export class DefaultUIConfig implements UIConfig { | ||||
|     enabledFeatures = { | ||||
|         apiDrawer: true, | ||||
|         notificationDrawer: true, | ||||
|         settings: true, | ||||
|         applicationEdit: true, | ||||
|         search: true, | ||||
|     }, | ||||
|     navbar: { | ||||
|         userDisplay: "name", | ||||
|     }, | ||||
|     color: { | ||||
|     }; | ||||
|     navbar = { | ||||
|         userDisplay: UserDisplay.username, | ||||
|     }; | ||||
|     color = { | ||||
|         background: "", | ||||
|         cardBackground: "", | ||||
|     }, | ||||
| }; | ||||
|     }; | ||||
| } | ||||
|  | ||||
| export function parseConfig(raw: string): UIConfig { | ||||
|     const c = JSON.parse(raw); | ||||
|     return Object.assign(new DefaultUIConfig(), c); | ||||
| } | ||||
|  | ||||
| export function uiConfig(): Promise<UIConfig> { | ||||
|     return Promise.resolve(DefaultUIConfig); | ||||
|     return me().then((user) => { | ||||
|         const settings = user.user.settings; | ||||
|         let config = new DefaultUIConfig(); | ||||
|         if ("userInterface" in settings) { | ||||
|             config = parseConfig(settings.userInterface); | ||||
|         } | ||||
|         console.debug(JSON.stringify(config)); | ||||
|         return config; | ||||
|     }); | ||||
| } | ||||
|  | ||||
		Reference in New Issue
	
	Block a user
	 Jens Langhammer
					Jens Langhammer