Watch
0
0
Fork
You've already forked hyperhive
0
hyperhive/frontend/packages/dashboard/src/user-menu.js
iris cd41e1d510 swarm-ui, hive dashboard, agent page: one profile menu with the signed-in user, avatar and authelia links
The swarm UI's user menu moves to @hive/shared and takes the whoami URL and
authelia's URL as props; the swarm UI keeps a thin wrapper, and the hive
dashboard and the per-agent page mount the same component. The dashboard's
nginx vhost proxies /api/whoami to authelia (the agent page is served from
the same vhost), and hive-c0re's state carries authelia_public_url, set from
services.hyperhive.swarm.authelia.url. The agent page shows the menu only
behind the gateway.
2026-10-25 15:25:20 +01:00

24 lines
966 B
JavaScript

// Profile menu in the dashboard chrome, at the right of the tab strip: the
// signed-in user's avatar, name, and links to authelia's settings and
// sign-out. It is `@hive/shared`'s `UserMenu`, the same component the swarm UI
// and the per-agent page mount, rendered with Preact like the job-queue
// graph. `/api/whoami` is proxied to authelia by this dashboard's own nginx
// vhost, so it needs no CORS; authelia's URL comes from `/api/state`.
import { h, render } from "preact";
import { UserMenu } from "@hive/shared/user-menu.js";
import { $ } from "./common.js";
/** (Re)render the menu into `#user-menu`. Safe to call on every state
* refresh: Preact diffs the same component, so an open popover stays open. */
export function renderUserMenu(state) {
const root = $("user-menu");
if (!root) return;
render(
h(UserMenu, {
whoamiUrl: "/api/whoami",
autheliaUrl: (state && state.authelia_public_url) || null,
}),
root,
);
}