import { Box, Checkbox, Collapse, FormControlLabel, Stack, Switch, TextField, Typography } from "@mui/material"; import { useState } from "react"; import { AuthentikSettings } from "@/src/lib/settings"; import { ProxyHost } from "@/src/lib/models/proxy-hosts"; const AUTHENTIK_DEFAULT_HEADERS = [ "X-Authentik-Username", "X-Authentik-Groups", "X-Authentik-Entitlements", "X-Authentik-Email", "X-Authentik-Name", "X-Authentik-Uid", "X-Authentik-Jwt", "X-Authentik-Meta-Jwks", "X-Authentik-Meta-Outpost", "X-Authentik-Meta-Provider", "X-Authentik-Meta-App", "X-Authentik-Meta-Version" ]; const AUTHENTIK_DEFAULT_TRUSTED_PROXIES = ["private_ranges"]; function HiddenCheckboxField({ name, defaultChecked, label, disabled, helperText }: { name: string; defaultChecked: boolean; label: string; disabled?: boolean; helperText?: string; }) { return ( } label={{label}} disabled={disabled} /> {helperText && ( {helperText} )} ); } export function AuthentikFields({ authentik, defaults }: { authentik?: ProxyHost["authentik"] | null; defaults?: AuthentikSettings | null; }) { const initial = authentik ?? null; const [enabled, setEnabled] = useState(initial?.enabled ?? false); const copyHeadersValue = initial && initial.copyHeaders.length > 0 ? initial.copyHeaders.join("\n") : AUTHENTIK_DEFAULT_HEADERS.join("\n"); const trustedProxiesValue = initial && initial.trustedProxies.length > 0 ? initial.trustedProxies.join("\n") : AUTHENTIK_DEFAULT_TRUSTED_PROXIES.join("\n"); const setHostHeaderDefault = initial?.setOutpostHostHeader ?? true; return ( Authentik Forward Auth Proxy authentication via Authentik outpost setEnabled(checked)} /> {/* ... other fields ... */} ); }