101 lines
3.1 KiB
Markdown
101 lines
3.1 KiB
Markdown
# Agent3 Batch 3: Fix Password Flow in Home.svelte
|
|
|
|
## Summary
|
|
Fixed the password flow in `frontend/src/routes/Home.svelte` so users can access password-protected content from the home page.
|
|
|
|
## Changes Made
|
|
|
|
### File: `frontend/src/routes/Home.svelte`
|
|
|
|
#### Edit 1 — Remove unused `verifyPassword` import
|
|
- **oldText:**
|
|
```javascript
|
|
import { fetchMetadata, verifyPassword, BOT_USERNAME, API_BASE } from '../lib/api.js'
|
|
```
|
|
- **newText:**
|
|
```javascript
|
|
import { fetchMetadata, BOT_USERNAME, API_BASE } from '../lib/api.js'
|
|
```
|
|
|
|
#### Edit 2 — Simplify `submit()` to pass password to `fetchMetadata` and handle 401
|
|
- **oldText:**
|
|
```javascript
|
|
async function submit() {
|
|
error = ''
|
|
if (!cxidInput.trim()) return
|
|
loading = true
|
|
try {
|
|
const meta = await fetchMetadata(cxidInput.trim())
|
|
if (meta.has_password && !passwordInput) {
|
|
needsPassword = true
|
|
loading = false
|
|
return
|
|
}
|
|
if (meta.has_password) {
|
|
const ok = await verifyPassword(cxidInput.trim(), passwordInput)
|
|
if (!ok) {
|
|
error = 'Incorrect password.'
|
|
loading = false
|
|
return
|
|
}
|
|
}
|
|
const url = new URL(window.location.href)
|
|
url.searchParams.set('cxid', cxidInput.trim())
|
|
if (passwordInput) url.searchParams.set('sc', passwordInput)
|
|
history.pushState({}, '', url.toString())
|
|
window.dispatchEvent(new PopStateEvent('popstate'))
|
|
} catch (e) {
|
|
error = e.message || 'Content not found.'
|
|
loading = false
|
|
}
|
|
}
|
|
```
|
|
- **newText:**
|
|
```javascript
|
|
async function submit() {
|
|
error = ''
|
|
if (!cxidInput.trim()) return
|
|
loading = true
|
|
try {
|
|
const meta = await fetchMetadata(cxidInput.trim(), passwordInput)
|
|
const url = new URL(window.location.href)
|
|
url.searchParams.set('cxid', cxidInput.trim())
|
|
if (passwordInput) url.searchParams.set('sc', passwordInput)
|
|
history.pushState({}, '', url.toString())
|
|
window.dispatchEvent(new PopStateEvent('popstate'))
|
|
} catch (e) {
|
|
if (e.status === 401) {
|
|
if (passwordInput) {
|
|
error = 'Incorrect password.'
|
|
} else {
|
|
needsPassword = true
|
|
}
|
|
loading = false
|
|
return
|
|
}
|
|
error = e.message || 'Content not found.'
|
|
loading = false
|
|
}
|
|
}
|
|
```
|
|
|
|
## Build Result
|
|
**PASS** — `cd frontend && npm run build` completed successfully in 6.00s.
|
|
|
|
```
|
|
vite v8.0.14 building client environment for production...
|
|
transforming...✓ 621 modules transformed.
|
|
rendering chunks...
|
|
computing gzip size...
|
|
dist/index.html 0.42 kB │ gzip: 0.29 kB
|
|
dist/assets/index-7RI_lz3u.css 17.37 kB │ gzip: 3.61 kB
|
|
dist/assets/lib-BKGKj-wr.js 497.26 kB │ gzip: 125.51 kB
|
|
dist/assets/index-5C1xoqEL.js 1,038.72 kB │ gzip: 347.55 kB
|
|
|
|
✓ built in 6.00s
|
|
```
|
|
|
|
## Issues / Risks
|
|
- No issues introduced. The only warning is an existing chunk-size warning (>500 kB) unrelated to this change.
|
|
- `verifyPassword` is no longer imported in this file but may still be used elsewhere in the codebase (not a concern for this fix).
|