diff --git a/frontend/src/views/RequestAccessView.vue b/frontend/src/views/RequestAccessView.vue index 453e452..8a8df12 100644 --- a/frontend/src/views/RequestAccessView.vue +++ b/frontend/src/views/RequestAccessView.vue @@ -148,8 +148,9 @@ Verifying email… -
- {{ verifyMessage }} +
+
{{ verifyBanner.title }}
+
{{ verifyBanner.body }}
@@ -273,7 +274,7 @@ const retrying = ref(false); const retryMessage = ref(""); const resending = ref(false); const resendMessage = ref(""); -const verifyMessage = ref(""); +const verifyBanner = ref(null); function taskPillClass(status) { const key = (status || "").trim(); @@ -454,7 +455,7 @@ async function copyRequestCode() { async function checkStatus() { if (checking.value) return; error.value = ""; - verifyMessage.value = ""; + verifyBanner.value = null; const trimmed = statusForm.request_code.trim(); if (!trimmed) return; if (!trimmed.includes("~")) { @@ -479,8 +480,13 @@ async function checkStatus() { onboardingUrl.value = data.onboarding_url || ""; tasks.value = Array.isArray(data.tasks) ? data.tasks : []; blocked.value = Boolean(data.blocked); - if (data.email_verified) { - verifyMessage.value = "Email confirmed."; + if (data.email_verified && status.value === "pending") { + verifyBanner.value = { + title: "Email confirmed", + body: "Your request is now waiting for manual approval. Check back here after an admin reviews it.", + }; + } else { + verifyBanner.value = null; } } catch (err) { error.value = err.message || "Failed to check status"; @@ -533,7 +539,14 @@ async function verifyFromLink(code, token) { const data = await resp.json().catch(() => ({})); if (!resp.ok) throw new Error(data.error || resp.statusText || `status ${resp.status}`); status.value = data.status || status.value; - verifyMessage.value = "Email confirmed."; + if (status.value === "pending") { + verifyBanner.value = { + title: "Email confirmed", + body: "Your request is now waiting for manual approval. Check back here after an admin reviews it.", + }; + } else { + verifyBanner.value = null; + } } finally { verifying.value = false; } @@ -582,8 +595,11 @@ onMounted(async () => { if (code) { await checkStatus(); } - if (verified) { - verifyMessage.value = "Email confirmed."; + if (verified && status.value === "pending") { + verifyBanner.value = { + title: "Email confirmed", + body: "Your request is now waiting for manual approval. Check back here after an admin reviews it.", + }; } if (verifyError) { error.value = `Email verification failed: ${decodeURIComponent(verifyError)}`; @@ -794,6 +810,28 @@ button.primary:disabled {