Olá, Luidi! Tudo bem?
A confirmação de e-mail é uma prática comum para garantir que o endereço de e-mail fornecido pelo usuário é válido e pertence a ele. Isso também ajuda a evitar contas falsas ou spam. Aqui está uma abordagem geral sobre como implementar isso:
Cadastro do Usuário: Quando o usuário se cadastra, você pode definir o campo ativo como false no banco de dados. Isso significa que ele ainda não confirmou o e-mail e, portanto, não tem acesso total ao sistema.
Envio de E-mail de Confirmação: Após o cadastro, envie um e-mail para o usuário com um link de confirmação. Esse link geralmente contém um token único que identifica o usuário.
Link de Confirmação: Quando o usuário clica no link de confirmação, ele é redirecionado para uma rota no seu sistema que verifica o token. Se o token for válido, você pode então atualizar o campo ativo para true, permitindo que o usuário acesse o sistema.
Camadas a serem modificadas:
- Model: Adicione um campo
ativo e possivelmente um campo para o token de confirmação. - Service: Implemente a lógica para gerar o token de confirmação e enviar o e-mail.
- Controller: Crie endpoints para lidar com o cadastro e a confirmação do e-mail.
Aqui está um exemplo simplificado de como isso pode ser feito:
// Modelo de Usuário
const User = sequelize.define('User', {
email: { type: Sequelize.STRING, unique: true },
ativo: { type: Sequelize.BOOLEAN, defaultValue: false },
tokenConfirmacao: Sequelize.STRING,
});
// Serviço para enviar o e-mail
async function enviarEmailConfirmacao(usuario) {
const token = gerarToken(); // Função para gerar um token único
usuario.tokenConfirmacao = token;
await usuario.save();
// Lógica para enviar o e-mail com o link de confirmação
}
// Controlador para confirmar o e-mail
app.get('/confirmar-email/:token', async (req, res) => {
const usuario = await User.findOne({ where: { tokenConfirmacao: req.params.token } });
if (usuario) {
usuario.ativo = true;
usuario.tokenConfirmacao = null;
await usuario.save();
res.send('E-mail confirmado com sucesso!');
} else {
res.send('Token inválido!');
}
});
Quanto aos cursos da Alura, eles frequentemente atualizam e expandem seu catálogo, então vale a pena dar uma olhada no site para ver se há algum curso específico sobre autenticação e confirmação de e-mail.
Espero ter ajudado e bons estudos!
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.