private void activateUser(User user, Token token) { user.setActivated(true); userService.save(user); tokenRepository.delete(token); }
@GetMapping("register/activate") public String doActivate(@RequestParam(value = "uid", required = false) String userId, @RequestParam(value = "tid", required = false) String tokenId) { try { final HashMap<String, Object> parameters = new HashMap<>(); final User user = userService.findById(userId).getContent(); final Token token = tokenRepository.findById(tokenId).orElse(null); final Calendar calendar = Calendar.getInstance(); if (user == null) { throw new EntityException("No user found"); } if (user.isActivated()) { throw new EntityException("User is already activated"); } if (token == null || !(token.getExpiryDate().getTime() - calendar.getTime().getTime() > 0)) { throw new EntityException("Invalid token"); } parameters.put("do", RegistrationEvent.ACTIVATE_USER); parameters.put("user", user); parameters.put("token", token); publisher.publishEvent(new RegistrationEvent(parameters)); return "redirect:/catalog"; } catch (EntityException e) { return "error/500"; } }
private void sendConfirmationEmail(User user, String baseUrl) { Thread thread = new Thread(() -> { try { final Token token = new Token(); final StringBuilder builder = new StringBuilder(); final String address = "ermdev.io@gmail.com"; final String recipientAddress = user.getEmail(); final String title = "Cloth Shop"; final String subject = "Account Details for " + user.getName() + " at " + title; token.setKey(String.valueOf(IdGenerator.randomUUID())); token.setExpiryDate(new DateHelper().setTimeNow().addTimeInMinute(DateHelper.DAY_IN_MINUTE).getDate()); tokenRepository.save(token); builder.append(baseUrl); builder.append("register/activate"); builder.append("?uid="); builder.append(user.getId()); builder.append("&tid="); builder.append(token.getKey()); MimeMailMessage mailMessage = new MimeMailMessage(mailSender.createMimeMessage()); mailMessage.setTo(recipientAddress); mailMessage.setSubject(subject); mailMessage.getMimeMessage().setFrom(new InternetAddress(address, title)); mailMessage.getMimeMessage().setContent(builder.toString(), "text/html"); mailSender.send(mailMessage.getMimeMessage()); } catch (Exception e) { e.printStackTrace(); } }); thread.start(); }