This commit is contained in:
@@ -16,24 +16,24 @@ interface Response {
|
||||
export default function Admin() {
|
||||
const [password, setPassword] = useState('')
|
||||
const [authed, setAuthed] = useState(false)
|
||||
const [error, setError] = useState(false)
|
||||
const [error, setError] = useState<string | null>(null)
|
||||
const [responses, setResponses] = useState<Response[]>([])
|
||||
const [loading, setLoading] = useState(false)
|
||||
|
||||
const handleLogin = async (e: React.FormEvent) => {
|
||||
e.preventDefault()
|
||||
setLoading(true)
|
||||
setError(false)
|
||||
setError(null)
|
||||
try {
|
||||
const res = await fetch('/api/admin/responses', {
|
||||
headers: { 'x-admin-password': password },
|
||||
})
|
||||
if (res.status === 401) { setError(true); return }
|
||||
if (!res.ok) throw new Error()
|
||||
if (res.status === 401) { setError('Неверный пароль'); return }
|
||||
if (!res.ok) throw new Error(`Ошибка сервера: ${res.status}`)
|
||||
setResponses(await res.json())
|
||||
setAuthed(true)
|
||||
} catch {
|
||||
setError(true)
|
||||
} catch (err) {
|
||||
setError(err instanceof Error ? err.message : 'Не удалось подключиться к серверу')
|
||||
} finally {
|
||||
setLoading(false)
|
||||
}
|
||||
@@ -52,7 +52,7 @@ export default function Admin() {
|
||||
onChange={e => setPassword(e.target.value)}
|
||||
autoFocus
|
||||
/>
|
||||
{error && <p className="admin-gate-error">Неверный пароль</p>}
|
||||
{error && <p className="admin-gate-error">{error}</p>}
|
||||
<button className="admin-gate-btn" type="submit" disabled={loading}>
|
||||
{loading ? 'Загрузка...' : 'Войти'}
|
||||
</button>
|
||||
|
||||
Reference in New Issue
Block a user