@RequestMapping( value = "/password-reset", method = RequestMethod.POST, consumes = "application/json; charset=utf-8", produces = "application/json; charset=utf-8") public @ResponseBody PasswordResetStatusDto passwordResetPost( @Valid @RequestBody(required = true) PasswordResetRequestDto user) { PasswordResetStatusDto status = new PasswordResetStatusDto(); UserAccount userAccount = userService.findByEmail(user.getEmail()); if (userAccount == null) { status.setError(true); return status; } PasswordResetRequest request = passwordResetRequestService.findByUserAccountId(userAccount.getId()); if (request != null && request.getCreated() >= System.currentTimeMillis() - PasswordResetRequest.TIME_TO_LIVE) { return status; } if (request != null && request.getCreated() < System.currentTimeMillis() - PasswordResetRequest.TIME_TO_LIVE) { passwordResetRequestService.delete(request); } request = new PasswordResetRequest(); request.setUserAccountId(userAccount.getId()); request.setUuid(UUID.randomUUID().toString()); request.setCreated(System.currentTimeMillis()); passwordResetRequestService.save(request); try { MailNew emailPasswordReset = mailBuilder.emailPasswordReset(request, userAccount, session); mailService.sendMail(emailPasswordReset); } catch (Exception e) { log.error("Unable to send confirmation email", e); } return status; }