Skip to content

Commit 7771097

Browse files
author
Eugen
committed
Merge pull request eugenp#135 from Doha2012/master
modify reset password
2 parents 52b313a + 54bf8b0 commit 7771097

File tree

7 files changed

+55
-19
lines changed

7 files changed

+55
-19
lines changed

spring-security-login-and-registration/src/main/java/org/baeldung/persistence/model/PasswordResetToken.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package org.baeldung.persistence.model;
22

3-
import java.sql.Timestamp;
43
import java.util.Calendar;
54
import java.util.Date;
65

@@ -74,7 +73,7 @@ public void setExpiryDate(Date expiryDate) {
7473

7574
private Date calculateExpiryDate(int expiryTimeInMinutes) {
7675
Calendar cal = Calendar.getInstance();
77-
cal.setTime(new Timestamp(cal.getTime().getTime()));
76+
cal.setTimeInMillis(new Date().getTime());
7877
cal.add(Calendar.MINUTE, expiryTimeInMinutes);
7978
return new Date(cal.getTime().getTime());
8079
}

spring-security-login-and-registration/src/main/java/org/baeldung/persistence/model/VerificationToken.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
@Entity
1515
public class VerificationToken {
1616

17-
private static final int EXPIRATION = 2;// 60 * 24;
17+
private static final int EXPIRATION = 60 * 24;
1818

1919
@Id
2020
@GeneratedValue(strategy = GenerationType.AUTO)

spring-security-login-and-registration/src/main/java/org/baeldung/web/controller/RegistrationController.java

Lines changed: 23 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
import org.springframework.beans.factory.annotation.Autowired;
2020
import org.springframework.context.ApplicationEventPublisher;
2121
import org.springframework.context.MessageSource;
22-
import org.springframework.http.MediaType;
22+
import org.springframework.context.NoSuchMessageException;
2323
import org.springframework.mail.MailAuthenticationException;
2424
import org.springframework.mail.SimpleMailMessage;
2525
import org.springframework.mail.javamail.JavaMailSender;
@@ -39,6 +39,9 @@
3939
import org.springframework.web.bind.annotation.ResponseBody;
4040
import org.springframework.web.servlet.ModelAndView;
4141

42+
import com.fasterxml.jackson.core.JsonProcessingException;
43+
import com.fasterxml.jackson.databind.ObjectMapper;
44+
4245
@Controller
4346
public class RegistrationController {
4447
private final Logger LOGGER = LoggerFactory.getLogger(getClass());
@@ -140,15 +143,14 @@ public String resendRegistrationToken(final HttpServletRequest request, final Mo
140143
return "redirect:/login.html?lang=" + locale.getLanguage();
141144
}
142145

143-
@RequestMapping(value = "/user/resendRegistrationToken2", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
144-
public @ResponseBody String resendRegistrationToken2(final HttpServletRequest request, final Model model, @RequestParam("token") final String existingToken) {
146+
@RequestMapping(value = "/user/resendRegistrationToken2", method = RequestMethod.GET)
147+
public @ResponseBody String resendRegistrationToken2(final HttpServletRequest request, final Model model, @RequestParam("token") final String existingToken) throws JsonProcessingException, NoSuchMessageException {
145148
final VerificationToken newToken = userService.generateNewVerificationToken(existingToken);
146149
final User user = userService.getUser(newToken.getToken());
147150
final String appUrl = request.getServerName() + ":" + request.getServerPort() + request.getContextPath();
148151
final SimpleMailMessage email = constructResetVerificationTokenEmail(appUrl, request.getLocale(), newToken, user);
149-
System.out.println(email.getText());
150152
mailSender.send(email);
151-
return messages.getMessage("message.resendToken", null, request.getLocale());
153+
return new ObjectMapper().writeValueAsString(messages.getMessage("message.resendToken", null, request.getLocale()));
152154
}
153155

154156
@RequestMapping(value = "/user/resetPassword", method = RequestMethod.POST)
@@ -177,6 +179,22 @@ public String resetPassword(final HttpServletRequest request, final Model model,
177179
return "redirect:/login.html?lang=" + request.getLocale().getLanguage();
178180
}
179181

182+
@RequestMapping(value = "/user/resetPassword2", method = RequestMethod.POST)
183+
public @ResponseBody String resetPassword2(final HttpServletRequest request, final Model model, @RequestParam("email") final String userEmail) throws JsonProcessingException, NoSuchMessageException {
184+
final User user = userService.findUserByEmail(userEmail);
185+
if (user == null) {
186+
return new ObjectMapper().writeValueAsString(messages.getMessage("message.userNotFound", null, request.getLocale()));
187+
}
188+
189+
final String token = UUID.randomUUID().toString();
190+
userService.createPasswordResetTokenForUser(user, token);
191+
final String appUrl = request.getServerName() + ":" + request.getServerPort() + request.getContextPath();
192+
final SimpleMailMessage email = constructResetTokenEmail(appUrl, request.getLocale(), token, user);
193+
mailSender.send(email);
194+
195+
return new ObjectMapper().writeValueAsString(messages.getMessage("message.resetPassword", null, request.getLocale()));
196+
}
197+
180198
@RequestMapping(value = "/user/changePassword", method = RequestMethod.GET)
181199
public String changePassword(final HttpServletRequest request, final Model model, @RequestParam("id") final long id, @RequestParam("token") final String token) {
182200
final Locale locale = request.getLocale();

spring-security-login-and-registration/src/main/java/org/baeldung/web/error/RestResponseEntityExceptionHandler.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,13 +23,13 @@ public RestResponseEntityExceptionHandler() {
2323
@ExceptionHandler({ MailAuthenticationException.class })
2424
public @ResponseBody String handleMail(final RuntimeException ex, final WebRequest request) throws JsonProcessingException {
2525
logger.error("500 Status Code", ex);
26-
return new ObjectMapper().writeValueAsString(ex.getClass().toString());
26+
return new ObjectMapper().writeValueAsString("MailError");
2727
}
2828

2929
@ExceptionHandler({ NullPointerException.class, IllegalArgumentException.class, IllegalStateException.class })
3030
public @ResponseBody String handleInternal(final RuntimeException ex, final WebRequest request) throws JsonProcessingException {
3131
logger.error("500 Status Code", ex);
32-
return new ObjectMapper().writeValueAsString(ex.getClass().toString());
32+
return new ObjectMapper().writeValueAsString("InternalError");
3333
}
3434

3535
}

spring-security-login-and-registration/src/main/webapp/WEB-INF/view/badUser.jsp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32,15 +32,15 @@ code="label.form.loginSignUp"></spring:message></a>
3232
<script type="text/javascript">
3333
function resendToken(){
3434
$.get("<c:url value="/user/resendRegistrationToken2"><c:param name="token" value="${param.token}"/></c:url>", function(data){
35-
if(data.indexOf("MailAuthenticationException") > -1)
35+
if(data.indexOf("MailError") > -1)
3636
{
3737
window.location.href = "<c:url value="/emailError.html"></c:url>";
3838
}
39-
else if(data.indexOf("Exception") > -1){
40-
window.location.href = "<c:url value="/login"><c:param name="message" value="Error"/></c:url>";
39+
else if(data.indexOf("InternalError") > -1){
40+
window.location.href = "<c:url value="/login.html"><c:param name="message" value="Error Occurred"/></c:url>";
4141
}
4242
else{
43-
window.location.href = "<c:url value="/login"></c:url>" + "message=" + data;
43+
window.location.href = "<c:url value="/login.html"></c:url>" + "?message=" + data;
4444
}
4545
});
4646
}

spring-security-login-and-registration/src/main/webapp/WEB-INF/view/forgetPassword.jsp

Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,22 +18,41 @@
1818
<h1>
1919
<spring:message code="message.resetPassword"></spring:message>
2020
</h1>
21-
<form:form action="user/resetPassword" method="POST" enctype="utf8">
21+
<div>
2222
<br>
2323

2424
<tr>
2525
<td><label><spring:message code="label.user.email"></spring:message></label></td>
26-
<td><input name="email" type="email" value="" /></td>
26+
<td><input id="email" name="email" type="email" value="" /></td>
2727
</tr>
2828

29-
<button type="submit">
29+
<button type="submit" onclick="resetPass()">
3030
<spring:message code="message.resetPassword"></spring:message>
3131
</button>
32-
</form:form>
32+
</div>
3333
<br> <a href="<c:url value="registration.html" />"><spring:message
3434
code="label.form.loginSignUp"></spring:message></a>
3535
</div>
3636
</div>
37+
38+
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
39+
<script type="text/javascript">
40+
function resetPass(){
41+
var email = $("#email").val();
42+
$.post("<c:url value="/user/resetPassword2"></c:url>",{email: email} ,function(data){
43+
if(data.indexOf("MailError") > -1)
44+
{
45+
window.location.href = "<c:url value="/emailError.html"></c:url>";
46+
}
47+
else if(data.indexOf("InternalError") > -1){
48+
window.location.href = "<c:url value="/login.html"><c:param name="message" value="Error Occurred"/></c:url>";
49+
}
50+
else{
51+
window.location.href = "<c:url value="/login.html"></c:url>" + "?message=" + data;
52+
}
53+
});
54+
}
55+
</script>
3756
</body>
3857

3958
</html>

spring-security-login-and-registration/src/main/webapp/WEB-INF/view/login.jsp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@
5757
</head>
5858
<body>
5959
<c:if test="${param.message != null}">
60-
<div class="alert alert-error">
60+
<div class="alert alert-info">
6161
${param.message}
6262
</div>
6363
</c:if>

0 commit comments

Comments
 (0)