Files
FrontFocusAgenda/src/main/resources/static/cadastro.html
T
2026-05-12 20:30:14 -03:00

152 lines
5.7 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html lang="pt-br">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="icon" href="imagens/icone.png">
<link rel="stylesheet" href="cadastro.css">
<link href="https://fonts.googleapis.com/css2?family=Poppins:wght@400;500;600;700&display=swap" rel="stylesheet">
<title>Cadastro Focus Agenda</title>
</head>
<body>
<div id="topo">
<h1 id="textotop">Focus Agenda</h1>
</div>
<div id="log">
<h1 class="mens">Crie Sua Conta</h1>
<div id="mensagem-erro" role="alert"></div>
<div id="mensagem-sucesso" role="status"></div>
<form id="cadastroForm" novalidate>
<div class="campo">
<label for="emailid">Email</label>
<input type="email" placeholder="Digite seu email" id="emailid" autocomplete="email" required>
</div>
<div class="campo">
<label for="nomeid">Nome</label>
<input type="text" placeholder="Seu nome completo" id="nomeid" autocomplete="name" required>
</div>
<div class="campo">
<label for="cursoid">Curso</label>
<input type="text" placeholder="Ex: Técnico em Informática" id="cursoid" required>
</div>
<div class="linha-dupla">
<div class="campo">
<label for="periodoid">Período</label>
<select id="periodoid" required>
<option value="">Selecione</option>
<option value="1"></option>
<option value="2"></option>
<option value="3"></option>
<option value="4"></option>
<option value="5"></option>
<option value="6"></option>
<option value="7"></option>
<option value="8"></option>
</select>
</div>
</div>
<div class="campo">
<label for="senhaid">Senha</label>
<input type="password" placeholder="Mínimo 6 caracteres" id="senhaid" autocomplete="new-password" required minlength="6">
</div>
<div class="campo">
<label for="csenhaid">Confirmar Senha</label>
<input type="password" placeholder="Confirme sua senha" id="csenhaid" autocomplete="new-password" required>
</div>
<button type="submit" id="logbtn">Cadastrar</button>
</form>
<p class="mens"><a href="login.html">Já tem uma conta?</a></p>
</div>
<script>
const form = document.getElementById('cadastroForm');
const erroEl = document.getElementById('mensagem-erro');
const sucessoEl = document.getElementById('mensagem-sucesso');
const btn = document.getElementById('logbtn');
function mostrarErro(msg) {
erroEl.textContent = msg;
erroEl.style.display = 'block';
sucessoEl.style.display = 'none';
}
function mostrarSucesso(msg) {
sucessoEl.textContent = msg;
sucessoEl.style.display = 'block';
erroEl.style.display = 'none';
}
form.addEventListener('submit', async (e) => {
e.preventDefault();
erroEl.style.display = 'none';
sucessoEl.style.display = 'none';
const nome = document.getElementById('nomeid').value.trim();
const email = document.getElementById('emailid').value.trim();
const curso = document.getElementById('cursoid').value.trim();
const periodo = parseInt(document.getElementById('periodoid').value, 10);
const senha = document.getElementById('senhaid').value;
const csenha = document.getElementById('csenhaid').value;
if (!nome || !email || !curso || !periodo || !senha) {
mostrarErro('Preencha todos os campos.');
return;
}
if (senha.length < 6) {
mostrarErro('A senha deve ter pelo menos 6 caracteres.');
return;
}
if (senha !== csenha) {
mostrarErro('As senhas não conferem.');
document.getElementById('csenhaid').focus();
return;
}
btn.disabled = true;
btn.textContent = 'Cadastrando...';
try {
const res = await fetch('/api/estudantes/cadastro', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ nome, email, senha, curso, periodo })
});
const json = await res.json();
if (!res.ok) {
// Erros de validação vêm como objeto
if (typeof json.data === 'object' && json.data !== null) {
const msgs = Object.values(json.data).join('; ');
mostrarErro(msgs);
} else {
mostrarErro(json.message || 'Erro ao cadastrar.');
}
return;
}
mostrarSucesso('Conta criada! Redirecionando para o login...');
setTimeout(() => window.location.href = 'login.html', 2000);
} catch (err) {
mostrarErro('Erro de conexão. Verifique se o servidor está rodando.');
} finally {
btn.disabled = false;
btn.textContent = 'Cadastrar';
}
});
</script>
</body>
</html>