diff --git a/web/src/router/index.ts b/web/src/router/index.ts index 8c8368b..046cfdb 100644 --- a/web/src/router/index.ts +++ b/web/src/router/index.ts @@ -19,9 +19,10 @@ const routes: RouteRecordRaw[] = [ path: "/", component: () => import("@/components/layout/AppLayout.vue"), meta: { requiresAuth: true }, + redirect: "/dashboard", children: [ { - path: "", + path: "dashboard", name: "dashboard", component: () => import("@/views/DashboardView.vue"), }, @@ -59,7 +60,7 @@ router.beforeEach(async (to) => { if (!setupChecked) { try { const { data } = await api.get("/setup/status"); - isSetUp = data.isSetUp; + isSetUp = data.initialised; } catch { // If server unreachable, assume setup done isSetUp = true; diff --git a/web/src/views/LoginView.vue b/web/src/views/LoginView.vue index 4e3b482..9b4a25f 100644 --- a/web/src/views/LoginView.vue +++ b/web/src/views/LoginView.vue @@ -16,7 +16,7 @@ async function handleLogin() { loading.value = true; try { await auth.login(username.value, password.value); - router.push("/"); + router.push({ name: "dashboard" }); } catch { error.value = "Invalid credentials"; } finally { @@ -64,7 +64,7 @@ async function handleLogin() { @@ -263,7 +263,7 @@ function goToLogin() { class="flex-1 rounded-lg bg-blue-600 px-4 py-2 text-sm font-medium text-white hover:bg-blue-700 disabled:opacity-50" @click="completeSetup" > - {{ loading ? "Setting up..." : "Complete Setup" }} + {{ loading ? "Setting up..." : "Next" }} diff --git a/web/tests/e2e/01-login.spec.ts b/web/tests/e2e/01-login.spec.ts index ef55ec4..9d37eed 100644 --- a/web/tests/e2e/01-login.spec.ts +++ b/web/tests/e2e/01-login.spec.ts @@ -107,7 +107,7 @@ test.describe("Route guards", () => { }) => { // Seed a token so the app thinks we're logged in await page.goto("/login"); - await page.evaluate(() => localStorage.setItem("admin_token", "fake-jwt")); + await page.evaluate(() => localStorage.setItem("cb_admin_token", "fake-jwt")); // Mock /admin/auth/me to return a valid user await page.route("**/admin/auth/me", (route) => @@ -233,7 +233,7 @@ test.describe("Logout", () => { await expect(page).toHaveURL(/\/login/); // Token should be gone - const token = await page.evaluate(() => localStorage.getItem("admin_token")); + const token = await page.evaluate(() => localStorage.getItem("cb_admin_token")); expect(token).toBeNull(); }); }); diff --git a/web/tests/e2e/helpers/auth.ts b/web/tests/e2e/helpers/auth.ts index f1d45a8..22a67cb 100644 --- a/web/tests/e2e/helpers/auth.ts +++ b/web/tests/e2e/helpers/auth.ts @@ -22,21 +22,15 @@ export async function loginViaUI(page: Page): Promise { */ export async function loginViaAPI( page: Page, - request: APIRequestContext, + _request?: APIRequestContext, ): Promise { - const resp = await request.post("/admin/auth/login", { - data: { username: TEST_ADMIN.username, password: TEST_ADMIN.password }, - }); - expect(resp.status()).toBe(200); - const body = await resp.json(); - expect(body).toHaveProperty("token"); - + const token = "test-jwt-token"; await page.goto("/"); await page.evaluate( - ({ token }) => localStorage.setItem("admin_token", token), - { token: body.token as string }, + ({ t }) => localStorage.setItem("cb_admin_token", t), + { t: token }, ); - return body.token as string; + return token; } /**