Files
cg_api_secure-webshare/agent3_batch3.md

3.1 KiB

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:
    import { fetchMetadata, verifyPassword, BOT_USERNAME, API_BASE } from '../lib/api.js'
    
  • newText:
    import { fetchMetadata, BOT_USERNAME, API_BASE } from '../lib/api.js'
    

Edit 2 — Simplify submit() to pass password to fetchMetadata and handle 401

  • oldText:
    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:
    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

PASScd 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).