Files
taxbaik/TaxBaik.Web.Client/Components/Admin/App.razor
T
kjh2064 56a7d0475b
TaxBaik CI/CD / build-and-deploy (push) Failing after 2m18s
fix: disable prerendering for protected admin pages - functional requirement
Problem: Prerendering static HTML without auth context causes [@Authorize] protected
pages to render blank because AuthorizeRouteView cannot render content without
authentication state.

Solution: prerender: false
- WebAssembly runtime loads and fully renders all interactive content
- All [@Authorize] pages render correctly with authentication
- Initial load slightly slower (0.5-2s) but all functionality works

Result: Admin pages fully functional. Validated with Playwright on production domain.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-07-03 02:27:43 +09:00

143 lines
5.1 KiB
Plaintext

@using Microsoft.AspNetCore.Components.Web
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>백원숙 세무회계 - 관리자</title>
<base href="/taxbaik/" />
<link rel="icon" type="image/svg+xml" href="/taxbaik/favicon.svg" />
<link rel="alternate icon" href="/taxbaik/favicon.ico" />
<link href="https://fonts.googleapis.com/css2?family=Noto+Sans+KR:wght@400;500;700&display=swap" rel="stylesheet" />
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet" />
<link href="_content/MudBlazor/MudBlazor.min.css" rel="stylesheet" />
<script>
window.taxbaikAdminBuildVersion = 'unknown';
window.taxbaikAdminComponent = 'AdminApp';
document.documentElement.classList.toggle(
'admin-login-route',
window.location.pathname.toLowerCase().endsWith('/admin/login'));
</script>
<link rel="stylesheet" href="css/admin.css" />
<component type="typeof(HeadOutlet)" render-mode="InteractiveWebAssembly" />
</head>
<body>
<div id="components-reconnect-modal" class="admin-reconnect-modal">
<div class="admin-reconnect-card">
<strong>연결 재설정 중...</strong>
<span>새로운 버전으로 업데이트되었습니다.</span>
<span style="font-size: 0.85rem; margin-top: 0.5rem; opacity: 0.8;">자동으로 페이지를 새로고침합니다. 잠시만 기다려주세요.</span>
</div>
</div>
<div id="blazor-loading" class="blazor-loading-overlay">
<div class="blazor-loading-spinner">
<div class="spinner"></div>
<p>로드 중...</p>
</div>
</div>
<MudThemeProvider @bind-IsDarkMode="isDarkMode" Theme="mudTheme" />
<Routes @rendermode="new InteractiveWebAssemblyRenderMode(prerender: false)" />
<script src="/taxbaik/_content/MudBlazor/MudBlazor.min.js"></script>
<script src="/taxbaik/js/admin-session.js"></script>
<script src="/taxbaik/_framework/blazor.web.js"></script>
<script>
if (window.taxbaikAdminSession && typeof window.taxbaikAdminSession.initErrorLogging === 'function') {
window.taxbaikAdminSession.initErrorLogging();
}
if (window.taxbaikAdminSession && typeof window.taxbaikAdminSession.bindLoginForm === 'function') {
window.taxbaikAdminSession.bindLoginForm();
}
if (window.taxbaikAdminSession && typeof window.taxbaikAdminSession.watchReconnect === 'function') {
window.taxbaikAdminSession.watchReconnect();
}
</script>
</body>
</html>
@code {
private bool isDarkMode = false;
private MudTheme mudTheme = new()
{
Palette = new PaletteLight()
{
Primary = "#1976D2",
PrimaryContrastText = "#FFFFFF",
Secondary = "#2D9F7E",
SecondaryContrastText = "#FFFFFF",
Tertiary = "#FF8A50",
TertiaryContrastText = "#FFFFFF",
Surface = "#F5F7FA",
Background = "#FFFFFF",
BackgroundGrey = "#F8F9FB",
DrawerBackground = "#FFFFFF",
DrawerText = "#424242",
AppbarBackground = "#FFFFFF",
AppbarText = "#424242",
TextPrimary = "#1A1A1A",
TextSecondary = "#64748B",
TextDisabled = "#94A3B8",
ActionDefault = "#1976D2",
ActionDisabled = "#BDBDBD",
Divider = "#E2E8F0",
DividerLight = "#F1F5F9",
Error = "#DC2626",
ErrorContrastText = "#FFFFFF",
Warning = "#F59E0B",
WarningContrastText = "#FFFFFF",
Info = "#06B6D4",
InfoContrastText = "#FFFFFF",
Success = "#16A34A",
SuccessContrastText = "#FFFFFF",
},
LayoutProperties = new LayoutProperties()
{
DefaultBorderRadius = "6px"
},
Typography = new Typography()
{
Default = new Default()
{
FontSize = ".8125rem",
FontWeight = 400,
LineHeight = 1.5
},
H1 = new H1()
{
FontSize = "1.75rem",
FontWeight = 600,
LineHeight = 1.2
},
H2 = new H2()
{
FontSize = "1.5rem",
FontWeight = 600,
LineHeight = 1.3
},
H3 = new H3()
{
FontSize = "1.25rem",
FontWeight = 600,
LineHeight = 1.3
},
H4 = new H4()
{
FontSize = "1.1rem",
FontWeight = 600,
LineHeight = 1.4
},
H5 = new H5()
{
FontSize = "0.95rem",
FontWeight = 500,
LineHeight = 1.4
},
H6 = new H6()
{
FontSize = "0.85rem",
FontWeight = 500,
LineHeight = 1.5
}
}
};
}