- Delete old Vite+Svelte frontend - Initialize new SvelteKit project with TypeScript - Configure Tailwind CSS v4 + DaisyUI - Implement JWT authentication with auto-refresh - Create login page with form validation (Zod) - Add protected route guards - Update Docker configuration for single-stage build - Add E2E tests with Playwright (6/11 passing) - Fix Svelte 5 reactivity with $state() runes Known issues: - 5 E2E tests failing (timing/async issues) - Token refresh implementation needs debugging - Validation error display timing
32 lines
2.2 KiB
JavaScript
32 lines
2.2 KiB
JavaScript
import { h as head, s as store_get, e as escape_html, u as unsubscribe_stores } from "../../../chunks/root.js";
|
|
import { u as user } from "../../../chunks/auth.js";
|
|
import "@sveltejs/kit/internal";
|
|
import "../../../chunks/exports.js";
|
|
import "../../../chunks/utils.js";
|
|
import "clsx";
|
|
import "@sveltejs/kit/internal/server";
|
|
import "../../../chunks/state.svelte.js";
|
|
function _page($$renderer, $$props) {
|
|
$$renderer.component(($$renderer2) => {
|
|
var $$store_subs;
|
|
head("x1i5gj", $$renderer2, ($$renderer3) => {
|
|
$$renderer3.title(($$renderer4) => {
|
|
$$renderer4.push(`<title>Dashboard - Headroom</title>`);
|
|
});
|
|
});
|
|
$$renderer2.push(`<div class="max-w-4xl mx-auto"><div class="card bg-base-100 shadow-xl"><div class="card-body"><h1 class="card-title text-3xl mb-4">Welcome to Headroom! 👋</h1> `);
|
|
if (store_get($$store_subs ??= {}, "$user", user)) {
|
|
$$renderer2.push("<!--[-->");
|
|
$$renderer2.push(`<div class="alert alert-info mb-4"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" class="stroke-current shrink-0 w-6 h-6"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"></path></svg> <span>Logged in as ${escape_html(store_get($$store_subs ??= {}, "$user", user).email)} (${escape_html(store_get($$store_subs ??= {}, "$user", user).role)})</span></div>`);
|
|
} else {
|
|
$$renderer2.push("<!--[!-->");
|
|
}
|
|
$$renderer2.push(`<!--]--> <p class="text-lg mb-4">You have successfully authenticated. This is a protected dashboard page
|
|
that requires a valid JWT token to access.</p> <div class="divider"></div> <h2 class="text-xl font-bold mb-2">Authentication Features Implemented:</h2> <ul class="list-disc list-inside space-y-2 mb-6"><li>✅ JWT Token Authentication</li> <li>✅ Token Auto-refresh on 401</li> <li>✅ Protected Route Guards</li> <li>✅ Form Validation with Zod</li> <li>✅ Role-based Access Control</li> <li>✅ Redis Token Storage</li></ul> <div class="card-actions"><button class="btn btn-error">Logout</button></div></div></div></div>`);
|
|
if ($$store_subs) unsubscribe_stores($$store_subs);
|
|
});
|
|
}
|
|
export {
|
|
_page as default
|
|
};
|