admin
All checks were successful
Build and Publish Images / build-and-push (push) Successful in 17s

This commit is contained in:
arrelin
2026-03-06 17:46:38 +03:00
parent ad2f6a5883
commit c9dafa4cc6
2 changed files with 16 additions and 9 deletions

View File

@@ -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>