Hier ist dein Link: Passwort ändern
", + true + ); + } + + public void confirmPasswordReset(PasswordConfirmRequest request) { + String token = request.getToken(); + String newPassword = request.getNewPassword(); + AppUser user = userRepository.findByResetToken(token) + .orElseThrow(() -> new IllegalArgumentException("Token ungültig")); + + if (user.getResetExpires().isBefore(LocalDateTime.now())) { + throw new IllegalArgumentException("Token abgelaufen"); + } + + user.setPassword(passwordEncoder.encode(newPassword)); + user.setResetToken(null); // ✅ mark as used + user.setResetExpires(null); + userRepository.save(user); + } } diff --git a/src/main/java/it/boergmann/tkdApp/service/MailService.java b/src/main/java/it/boergmann/tkdApp/service/MailService.java new file mode 100644 index 0000000..923dd1d --- /dev/null +++ b/src/main/java/it/boergmann/tkdApp/service/MailService.java @@ -0,0 +1,34 @@ +package it.boergmann.tkdApp.service; + +import jakarta.mail.MessagingException; +import jakarta.mail.internet.MimeMessage; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.mail.javamail.JavaMailSender; +import org.springframework.mail.javamail.MimeMessageHelper; +import org.springframework.stereotype.Service; + +@Service +@RequiredArgsConstructor +@Slf4j +public class MailService { + + private final JavaMailSender mailSender; + + public void sendMail(String to, String subject, String text, boolean html) { + try { + MimeMessage message = mailSender.createMimeMessage(); + MimeMessageHelper helper = new MimeMessageHelper(message, "utf-8"); + + helper.setTo(to); + helper.setSubject(subject); + helper.setText(text, html); + helper.setFrom("admin@boergmann.it"); // anpassen + + mailSender.send(message); + log.info("E-Mail gesendet an {}", to); + } catch (MessagingException e) { + log.error("Fehler beim Senden der E-Mail: {}", e.getMessage()); + } + } +} diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 25d63e5..d444b1b 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -10,7 +10,19 @@ spring: hibernate: dialect: org.hibernate.dialect.PostgreSQLDialect open-in-view: false - + mail: + host: mail.boergmann.it + port: 587 + username: klaas@boergmann.it + password: October7-Obsessed-Gumdrop-Remote + protocol: smtp + properties: + mail: + smtp: + auth: true + starttls: + enable: true + default-encoding: UTF-8 jwt: secret: 2T5tOkcLVT8vKfi0qyS0HxYnI2DklK9Mr0BHWWQgsjaAtO3aX5QhVi93h7jVPYiY expiration-ms: 86400000 # 1 Tag \ No newline at end of file diff --git a/src/main/resources/templates/password_reset_request.html b/src/main/resources/templates/password_reset_request.html new file mode 100644 index 0000000..4977b67 --- /dev/null +++ b/src/main/resources/templates/password_reset_request.html @@ -0,0 +1,17 @@ + + + +