import { FormEvent, useState } from 'react' import axios from 'axios' import { useAuth, UserRole } from '../context/AuthContext' import { authService } from '../services/auth' import { decodeJwtPayload } from '../utils/jwt' export function LoginPage() { const { login } = useAuth() const [username, setUsername] = useState('') const [password, setPassword] = useState('') const [errorMessage, setErrorMessage] = useState(null) const [loading, setLoading] = useState(false) const resolveRole = (role?: string): UserRole => { switch (role?.toLowerCase()) { case 'admin': return 'admin' case 'customer': return 'customer' case 'seller': default: return 'seller' } } const onSubmit = async (event: FormEvent) => { event.preventDefault() setLoading(true) setErrorMessage(null) try { const { token } = await authService.login({ username, password }) const payload = decodeJwtPayload<{ role?: string }>(token) const role = resolveRole(payload?.role) login(token, role, username) } catch (error) { const fallback = 'Não foi possível autenticar. Verifique suas credenciais.' if (axios.isAxiosError(error)) { setErrorMessage(error.response?.data?.error ?? fallback) } else if (error instanceof Error) { setErrorMessage(error.message) } else { setErrorMessage(fallback) } } finally { setLoading(false) } } return (

Acesso ao Marketplace

Informe suas credenciais para acessar o marketplace.

{errorMessage && (
{errorMessage}
)}
setUsername(e.target.value)} />
setPassword(e.target.value)} />
) }