Hi, "+ theUser.getFirstName()+ ",
"+ 52 | "Thank you for registering with us,"+"" + 53 | "Please, follow the link below to complete your registration.
"+ 54 | "Verify your email to activate your account"+ 55 | " Thank you
Users Registration Portal Service";
56 | MimeMessage message = mailSender.createMimeMessage();
57 | var messageHelper = new MimeMessageHelper(message);
58 | messageHelper.setFrom("dailycodework@gmail.com", senderName);
59 | messageHelper.setTo(theUser.getEmail());
60 | messageHelper.setSubject(subject);
61 | messageHelper.setText(mailContent, true);
62 | mailSender.send(message);
63 | }
64 |
65 | public void sendPasswordResetVerificationEmail(String url) throws MessagingException, UnsupportedEncodingException {
66 | String subject = "Password Reset Request Verification";
67 | String senderName = "User Registration Portal Service";
68 | String mailContent = "
Hi, "+ theUser.getFirstName()+ ",
"+ 69 | "You recently requested to reset your password,"+"" + 70 | "Please, follow the link below to complete the action.
"+ 71 | "Reset password"+ 72 | " Users Registration Portal Service";
73 | MimeMessage message = mailSender.createMimeMessage();
74 | var messageHelper = new MimeMessageHelper(message);
75 | messageHelper.setFrom("dailycodework@gmail.com", senderName);
76 | messageHelper.setTo(theUser.getEmail());
77 | messageHelper.setSubject(subject);
78 | messageHelper.setText(mailContent, true);
79 | mailSender.send(message);
80 | }
81 | }
82 |
--------------------------------------------------------------------------------
/src/main/java/com/dailycodework/sbemailverificationdemo/exception/InvalidVerificationTokenException.java:
--------------------------------------------------------------------------------
1 | package com.dailycodework.sbemailverificationdemo.exception;
2 |
3 | /**
4 | * @author Sampson Alfred
5 | */
6 |
7 | public class InvalidVerificationTokenException extends RuntimeException {
8 | public InvalidVerificationTokenException(String message) {
9 | super(message);
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/src/main/java/com/dailycodework/sbemailverificationdemo/exception/RegistrationExceptionHandler.java:
--------------------------------------------------------------------------------
1 | package com.dailycodework.sbemailverificationdemo.exception;
2 |
3 | import org.springframework.http.HttpStatus;
4 | import org.springframework.web.bind.MethodArgumentNotValidException;
5 | import org.springframework.web.bind.annotation.ExceptionHandler;
6 | import org.springframework.web.bind.annotation.ResponseStatus;
7 | import org.springframework.web.bind.annotation.RestControllerAdvice;
8 |
9 | import java.util.HashMap;
10 | import java.util.Map;
11 |
12 | @RestControllerAdvice
13 | public class RegistrationExceptionHandler {
14 |
15 | @ResponseStatus(HttpStatus.BAD_REQUEST)
16 | @ExceptionHandler(MethodArgumentNotValidException.class)
17 | public Map Hi, "+ event.getUser().getFirstName()+ ", Thank you for registering with us,"+"" +
29 | "Please, follow the link below to complete your registration. Thank you
Users Registration Portal Service";
32 | MimeMessage message = mailSender.createMimeMessage();
33 | var messageHelper = new MimeMessageHelper(message);
34 | messageHelper.setFrom("dailycodework@gmail.com", senderName);
35 | messageHelper.setTo(event.getUser().getEmail());
36 | messageHelper.setSubject(subject);
37 | messageHelper.setText(mailContent, true);
38 | mailSender.send(message);
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/src/main/java/com/dailycodework/sbemailverificationdemo/registration/password/PasswordRequestUtil.java:
--------------------------------------------------------------------------------
1 | package com.dailycodework.sbemailverificationdemo.registration.password;
2 |
3 | import lombok.Data;
4 |
5 | /**
6 | * @author Sampson Alfred
7 | */
8 | @Data
9 | public class PasswordRequestUtil {
10 | private String email;
11 | private String oldPassword;
12 | private String newPassword;
13 | }
14 |
--------------------------------------------------------------------------------
/src/main/java/com/dailycodework/sbemailverificationdemo/registration/password/PasswordResetToken.java:
--------------------------------------------------------------------------------
1 | package com.dailycodework.sbemailverificationdemo.registration.password;
2 |
3 | import com.dailycodework.sbemailverificationdemo.user.User;
4 | import jakarta.persistence.*;
5 | import lombok.Getter;
6 | import lombok.NoArgsConstructor;
7 | import lombok.Setter;
8 |
9 | import java.util.Calendar;
10 | import java.util.Date;
11 | import java.util.Optional;
12 |
13 | /**
14 | * @author Sampson Alfred
15 | */
16 | @Getter
17 | @Setter
18 | @Entity
19 | @NoArgsConstructor
20 | public class PasswordResetToken {
21 | @Id
22 | @GeneratedValue(strategy = GenerationType.IDENTITY)
23 | private Long token_id;
24 | private String token;
25 | private Date expirationTime;
26 | private static final int EXPIRATION_TIME = 10;
27 |
28 | @OneToOne
29 | @JoinColumn(name = "user_id")
30 | private User user;
31 |
32 | public PasswordResetToken(String token, User user) {
33 | super();
34 | this.token = token;
35 | this.user = user;
36 | this.expirationTime = this.getTokenExpirationTime();
37 | }
38 |
39 | public PasswordResetToken(String token) {
40 | super();
41 | this.token = token;
42 | this.expirationTime = this.getTokenExpirationTime();
43 | }
44 |
45 | public Date getTokenExpirationTime() {
46 | Calendar calendar = Calendar.getInstance();
47 | calendar.setTimeInMillis(new Date().getTime());
48 | calendar.add(Calendar.MINUTE, EXPIRATION_TIME);
49 | return new Date(calendar.getTime().getTime());
50 | }
51 | }
52 |
--------------------------------------------------------------------------------
/src/main/java/com/dailycodework/sbemailverificationdemo/registration/password/PasswordResetTokenRepository.java:
--------------------------------------------------------------------------------
1 | package com.dailycodework.sbemailverificationdemo.registration.password;
2 |
3 | import org.springframework.data.jpa.repository.JpaRepository;
4 |
5 | public interface PasswordResetTokenRepository extends JpaRepository