import React, { useState } from 'react'; import { useLocation, useNavigate } from 'react-router-dom'; import { authApi, saveSession } from '../services/api'; export const AccessTokenPage: React.FC<{ mode: 'invite' | 'reset' }> = ({ mode }) => { const location = useLocation(); const navigate = useNavigate(); const token = new URLSearchParams(location.search).get('token') || ''; const [name, setName] = useState(''); const [password, setPassword] = useState(''); const [error, setError] = useState(''); const [saving, setSaving] = useState(false); const submit = async (event: React.FormEvent) => { event.preventDefault(); setSaving(true); setError(''); try { if (mode === 'invite') { const session = await authApi.acceptInvitation(token, name, password); saveSession(session); navigate(session.user.role === 'admin' ? '/admin' : session.user.role === 'instructor' ? '/gerenciar' : '/'); } else { await authApi.resetPassword(token, password); navigate('/'); } } catch { setError('Este link é inválido, expirou ou não pôde ser usado.'); } finally { setSaving(false); } }; return

{mode === 'invite' ? 'Criar seu acesso' : 'Redefinir senha'}

{mode === 'invite' && setName(event.target.value)} placeholder="Seu nome" className="w-full rounded-xl bg-zinc-900 p-3" />} setPassword(event.target.value)} placeholder="Nova senha (mínimo 12 caracteres)" className="w-full rounded-xl bg-zinc-900 p-3" />{error &&

{error}

}
; };