swarm-ui: header profile menu — initials avatar, authelia settings + logout (#3570)
Adds an "/api/whoami" same-origin nginx proxy to authelia's own GET /api/user/info (session-cookie authenticated, no swarm-controller code needed) and a new UserMenu header component: a generated initials avatar (first letter of display name, coloured from the same seven base16 chromatic slots the nav accent already cycles through) opening a popover with the signed-in name, a link to authelia settings, and log out — both reusing the existing "Authelia" entry from GET /api/links rather than a second source of the domain. Per mara's call on the open avatar-mechanism question: initials now, a real uploaded photo (authelia's settings UI implies pics are settable) is an explicit future item, not blocking this.
This commit is contained in:
parent
9ac037b21a
commit
dabd0fc823
4 changed files with 249 additions and 0 deletions
|
|
@ -217,6 +217,26 @@ in
|
|||
return 301 /api/docs/;
|
||||
'';
|
||||
};
|
||||
# Session identity for the header's profile menu: initials
|
||||
# avatar + "who is this" line. `auth_request` above
|
||||
# only ever answers yes/no — it never forwards *who* — so the
|
||||
# frontend has no other way to learn this. Same-origin proxy
|
||||
# straight to authelia's own `GET /api/user/info`
|
||||
# (session-cookie authenticated) rather than new
|
||||
# swarm-controller code: the cookie is already valid here (the
|
||||
# session cookie's domain is the swarm's, shared across every
|
||||
# vhost under it — see swarm-authelia.nix), so this is a pure
|
||||
# pass-through with nothing for a daemon to add.
|
||||
#
|
||||
# `=` exact match, not a prefix, so proxy_pass's own URI part
|
||||
# (`/api/user/info`) REPLACES the matched request URI rather
|
||||
# than being appended to it — same substitution shape as
|
||||
# `/__hive_authelia` below, just not `internal` since the
|
||||
# frontend calls this one directly.
|
||||
"= /api/whoami" = {
|
||||
proxyPass = "http://127.0.0.1:${toString autheliaCfg.port}/api/user/info";
|
||||
extraConfig = swarmAuthRequest;
|
||||
};
|
||||
"/api/docs/" = {
|
||||
alias = "${gatewayCfg.swaggerUiTheme}/";
|
||||
extraConfig = ''
|
||||
|
|
|
|||
Loading…
Reference in a new issue