Passo 2 - gerando token
A partir do momento que precisamos salvar algo no banco, precisamos criar uma entidade. Vamos criar uma classe chamada "PasswordRecover", fazer as suas anotações para virar uma table.
Ela terá ID e um token do tipo String, um String email e o tempo de expiração do tipo Instant. ⬅️ Todos esses campos são obrigatórios.
Colocar getters and setters + hashcode&equals com a ID.
Voltamos no service para continuar a lógica! Criaremos um objeto do tipo PasswordRecover. A partir disso, settaremos os seus atributos.
O email, será o que veio do DTO.
O token criaremos um do tipo UUID.randomUUID().toString
.
A expiração será Instant.now().plus(tempo que queremos). Esse tempo, virá das variáveis que estarão no application.properties ⬇️.
Variáveis para recuperação de senha
Essa URI é o endereço que chegará no email do usuário, o endereço do frontend fica no lugar do localhost.
Para ler a variável do token.minutes, só injetar ela no service com @Value:
Inserir isso dentro do ".plus()" ⬆️ (se não tiver minutos, multiplicar por 60L).
Para salvarmos no banco de dados, criar um repository para o PasswordRecover.
Atualizado