fix(security): ship isolated JWT decorator hotfix
* fix(security): isolate dependency hotfix from github main * fix(security): expose hotfix jwt decorators across routes * test(e2e): restore stable app header selectors * test(e2e): align planner and app shell checks * test(e2e): add legacy settings page selectors * test(e2e): align settings page contracts
This commit is contained in:
@@ -71,7 +71,7 @@ export function AppHeader({ onOpenProfile, onOpenAbout }: AppHeaderProps) {
|
||||
}[currentPath] || { eyebrow: t("header.eyebrow.overview"), title: t("nav.dashboard") };
|
||||
|
||||
return (
|
||||
<header className="hero">
|
||||
<header className="hero" data-testid="app-header">
|
||||
<div className="hero-title">
|
||||
<img src="/app-logo.png" alt="MedAssist-ng" className="hero-logo" />
|
||||
<div>
|
||||
@@ -80,7 +80,7 @@ export function AppHeader({ onOpenProfile, onOpenAbout }: AppHeaderProps) {
|
||||
</div>
|
||||
</div>
|
||||
<div className="header-actions">
|
||||
<div className="tabs">
|
||||
<div className="tabs" data-testid="main-nav">
|
||||
<button
|
||||
className={currentPath === "/dashboard" || currentPath === "/" ? "pill primary" : "pill"}
|
||||
onClick={() => safeNavigate("/dashboard")}
|
||||
@@ -168,7 +168,11 @@ export function AppHeader({ onOpenProfile, onOpenAbout }: AppHeaderProps) {
|
||||
</div>
|
||||
{authState?.authEnabled && user && (
|
||||
<div className={`user-menu ${userDropdownOpen ? "open" : ""}`}>
|
||||
<button className="user-menu-btn" onClick={() => setUserDropdownOpen(!userDropdownOpen)}>
|
||||
<button
|
||||
className="user-menu-btn"
|
||||
data-testid="user-menu-trigger"
|
||||
onClick={() => setUserDropdownOpen(!userDropdownOpen)}
|
||||
>
|
||||
{user.avatarUrl ? (
|
||||
<img src={`/api/images/${user.avatarUrl}`} alt={user.username} className="user-avatar-img" />
|
||||
) : (
|
||||
@@ -187,6 +191,7 @@ export function AppHeader({ onOpenProfile, onOpenAbout }: AppHeaderProps) {
|
||||
<div className="dropdown-menu">
|
||||
<button
|
||||
className="dropdown-item"
|
||||
data-testid="user-menu-profile"
|
||||
onClick={() => {
|
||||
onOpenProfile();
|
||||
setUserDropdownOpen(false);
|
||||
@@ -200,6 +205,7 @@ export function AppHeader({ onOpenProfile, onOpenAbout }: AppHeaderProps) {
|
||||
</button>
|
||||
<button
|
||||
className="dropdown-item"
|
||||
data-testid="user-menu-settings"
|
||||
onClick={() => {
|
||||
safeNavigate("/settings");
|
||||
setUserDropdownOpen(false);
|
||||
@@ -213,6 +219,7 @@ export function AppHeader({ onOpenProfile, onOpenAbout }: AppHeaderProps) {
|
||||
</button>
|
||||
<button
|
||||
className="dropdown-item"
|
||||
data-testid="user-menu-about"
|
||||
onClick={() => {
|
||||
onOpenAbout();
|
||||
setUserDropdownOpen(false);
|
||||
@@ -227,6 +234,7 @@ export function AppHeader({ onOpenProfile, onOpenAbout }: AppHeaderProps) {
|
||||
</button>
|
||||
<button
|
||||
className="dropdown-item danger"
|
||||
data-testid="user-menu-signout"
|
||||
onClick={() => {
|
||||
logout();
|
||||
setUserDropdownOpen(false);
|
||||
|
||||
Reference in New Issue
Block a user