cleanup work
This commit is contained in:
parent
e667993c18
commit
b4c54fdb71
@ -19,7 +19,7 @@ public interface IUserService {
|
|||||||
|
|
||||||
VerificationToken getVerificationToken(String VerificationToken);
|
VerificationToken getVerificationToken(String VerificationToken);
|
||||||
|
|
||||||
VerificationToken updateVerificationToken(String token);
|
VerificationToken generateNewVerificationToken(String token);
|
||||||
|
|
||||||
void createPasswordResetTokenForUser(User user, String token);
|
void createPasswordResetTokenForUser(User user, String token);
|
||||||
|
|
||||||
|
@ -38,7 +38,7 @@ public class UserService implements IUserService {
|
|||||||
// API
|
// API
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public User registerNewUserAccount(UserDto accountDto) throws EmailExistsException {
|
public User registerNewUserAccount(final UserDto accountDto) throws EmailExistsException {
|
||||||
if (emailExist(accountDto.getEmail())) {
|
if (emailExist(accountDto.getEmail())) {
|
||||||
throw new EmailExistsException("There is an account with that email adress: " + accountDto.getEmail());
|
throw new EmailExistsException("There is an account with that email adress: " + accountDto.getEmail());
|
||||||
}
|
}
|
||||||
@ -54,67 +54,74 @@ public class UserService implements IUserService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public User getUser(String verificationToken) {
|
public User getUser(final String verificationToken) {
|
||||||
User user = tokenRepository.findByToken(verificationToken).getUser();
|
final User user = tokenRepository.findByToken(verificationToken).getUser();
|
||||||
return user;
|
return user;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public VerificationToken getVerificationToken(String VerificationToken) {
|
public VerificationToken getVerificationToken(final String VerificationToken) {
|
||||||
return tokenRepository.findByToken(VerificationToken);
|
return tokenRepository.findByToken(VerificationToken);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void saveRegisteredUser(User user) {
|
public void saveRegisteredUser(final User user) {
|
||||||
repository.save(user);
|
repository.save(user);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void deleteUser(User user) {
|
public void deleteUser(final User user) {
|
||||||
repository.delete(user);
|
repository.delete(user);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void createVerificationTokenForUser(User user, String token) {
|
public void createVerificationTokenForUser(final User user, final String token) {
|
||||||
VerificationToken myToken = new VerificationToken(token, user);
|
final VerificationToken myToken = new VerificationToken(token, user);
|
||||||
tokenRepository.save(myToken);
|
tokenRepository.save(myToken);
|
||||||
}
|
}
|
||||||
|
|
||||||
public VerificationToken updateVerificationToken(String verificationToken) {
|
@Override
|
||||||
VerificationToken vToken = tokenRepository.findByToken(verificationToken);
|
public VerificationToken generateNewVerificationToken(final String existingVerificationToken) {
|
||||||
|
VerificationToken vToken = tokenRepository.findByToken(existingVerificationToken);
|
||||||
vToken.updateToken(UUID.randomUUID().toString());
|
vToken.updateToken(UUID.randomUUID().toString());
|
||||||
vToken = tokenRepository.save(vToken);
|
vToken = tokenRepository.save(vToken);
|
||||||
return vToken;
|
return vToken;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void createPasswordResetTokenForUser(User user, String token) {
|
@Override
|
||||||
PasswordResetToken myToken = new PasswordResetToken(token, user);
|
public void createPasswordResetTokenForUser(final User user, final String token) {
|
||||||
|
final PasswordResetToken myToken = new PasswordResetToken(token, user);
|
||||||
passwordTokenRepository.save(myToken);
|
passwordTokenRepository.save(myToken);
|
||||||
}
|
}
|
||||||
|
|
||||||
public User findUserByEmail(String email) {
|
@Override
|
||||||
|
public User findUserByEmail(final String email) {
|
||||||
return repository.findByEmail(email);
|
return repository.findByEmail(email);
|
||||||
}
|
}
|
||||||
|
|
||||||
public PasswordResetToken getPasswordResetToken(String token) {
|
@Override
|
||||||
|
public PasswordResetToken getPasswordResetToken(final String token) {
|
||||||
return passwordTokenRepository.findByToken(token);
|
return passwordTokenRepository.findByToken(token);
|
||||||
}
|
}
|
||||||
|
|
||||||
public User getUserByPasswordResetToken(String token) {
|
@Override
|
||||||
|
public User getUserByPasswordResetToken(final String token) {
|
||||||
return passwordTokenRepository.findByToken(token).getUser();
|
return passwordTokenRepository.findByToken(token).getUser();
|
||||||
}
|
}
|
||||||
|
|
||||||
public User getUserByID(long id) {
|
@Override
|
||||||
|
public User getUserByID(final long id) {
|
||||||
return repository.findOne(id);
|
return repository.findOne(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void changeUserPassword(User user, String password) {
|
@Override
|
||||||
|
public void changeUserPassword(final User user, final String password) {
|
||||||
user.setPassword(passwordEncoder.encode(password));
|
user.setPassword(passwordEncoder.encode(password));
|
||||||
repository.save(user);
|
repository.save(user);
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean emailExist(String email) {
|
private boolean emailExist(final String email) {
|
||||||
User user = repository.findByEmail(email);
|
final User user = repository.findByEmail(email);
|
||||||
if (user != null) {
|
if (user != null) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -44,7 +44,7 @@ public class RegistrationController {
|
|||||||
private final Logger LOGGER = LoggerFactory.getLogger(getClass());
|
private final Logger LOGGER = LoggerFactory.getLogger(getClass());
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private IUserService service;
|
private IUserService userService;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private MessageSource messages;
|
private MessageSource messages;
|
||||||
@ -62,28 +62,30 @@ public class RegistrationController {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// API
|
||||||
|
|
||||||
@RequestMapping(value = "/user/registration", method = RequestMethod.GET)
|
@RequestMapping(value = "/user/registration", method = RequestMethod.GET)
|
||||||
public String showRegistrationForm(WebRequest request, Model model) {
|
public String showRegistrationForm(final WebRequest request, final Model model) {
|
||||||
LOGGER.debug("Rendering registration page.");
|
LOGGER.debug("Rendering registration page.");
|
||||||
UserDto accountDto = new UserDto();
|
final UserDto accountDto = new UserDto();
|
||||||
model.addAttribute("user", accountDto);
|
model.addAttribute("user", accountDto);
|
||||||
return "registration";
|
return "registration";
|
||||||
}
|
}
|
||||||
|
|
||||||
@RequestMapping(value = "/regitrationConfirm", method = RequestMethod.GET)
|
@RequestMapping(value = "/regitrationConfirm", method = RequestMethod.GET)
|
||||||
public String confirmRegistration(WebRequest request, Model model, @RequestParam("token") String token) {
|
public String confirmRegistration(final WebRequest request, final Model model, @RequestParam("token") final String token) {
|
||||||
Locale locale = request.getLocale();
|
final Locale locale = request.getLocale();
|
||||||
|
|
||||||
VerificationToken verificationToken = service.getVerificationToken(token);
|
final VerificationToken verificationToken = userService.getVerificationToken(token);
|
||||||
if (verificationToken == null) {
|
if (verificationToken == null) {
|
||||||
String message = messages.getMessage("auth.message.invalidToken", null, locale);
|
final String message = messages.getMessage("auth.message.invalidToken", null, locale);
|
||||||
model.addAttribute("message", message);
|
model.addAttribute("message", message);
|
||||||
return "redirect:/badUser.html?lang=" + locale.getLanguage();
|
return "redirect:/badUser.html?lang=" + locale.getLanguage();
|
||||||
}
|
}
|
||||||
|
|
||||||
User user = verificationToken.getUser();
|
final User user = verificationToken.getUser();
|
||||||
Calendar cal = Calendar.getInstance();
|
final Calendar cal = Calendar.getInstance();
|
||||||
DateFormat df = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss");
|
final DateFormat df = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss");
|
||||||
System.out.println(df.format(verificationToken.getExpiryDate()));
|
System.out.println(df.format(verificationToken.getExpiryDate()));
|
||||||
System.out.println(df.format(cal.getTime()));
|
System.out.println(df.format(cal.getTime()));
|
||||||
|
|
||||||
@ -95,46 +97,40 @@ public class RegistrationController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
user.setEnabled(true);
|
user.setEnabled(true);
|
||||||
service.saveRegisteredUser(user);
|
userService.saveRegisteredUser(user);
|
||||||
return "redirect:/login.html?lang=" + locale.getLanguage();
|
return "redirect:/login.html?lang=" + locale.getLanguage();
|
||||||
}
|
}
|
||||||
|
|
||||||
@RequestMapping(value = "/user/registration", method = RequestMethod.POST)
|
@RequestMapping(value = "/user/registration", method = RequestMethod.POST)
|
||||||
public ModelAndView registerUserAccount(@ModelAttribute("user") @Valid UserDto accountDto, BindingResult result, WebRequest request, Errors errors) {
|
public ModelAndView registerUserAccount(@ModelAttribute("user") @Valid final UserDto accountDto, final BindingResult result, final WebRequest request, final Errors errors) {
|
||||||
LOGGER.debug("Registering user account with information: {}", accountDto);
|
LOGGER.debug("Registering user account with information: {}", accountDto);
|
||||||
if (result.hasErrors()) {
|
if (result.hasErrors()) {
|
||||||
return new ModelAndView("registration", "user", accountDto);
|
return new ModelAndView("registration", "user", accountDto);
|
||||||
}
|
}
|
||||||
|
|
||||||
User registered = createUserAccount(accountDto);
|
final User registered = createUserAccount(accountDto);
|
||||||
if (registered == null) {
|
if (registered == null) {
|
||||||
result.rejectValue("email", "message.regError");
|
result.rejectValue("email", "message.regError");
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
String appUrl = request.getContextPath();
|
final String appUrl = request.getContextPath();
|
||||||
eventPublisher.publishEvent(new OnRegistrationCompleteEvent(registered, request.getLocale(), appUrl));
|
eventPublisher.publishEvent(new OnRegistrationCompleteEvent(registered, request.getLocale(), appUrl));
|
||||||
} catch (Exception me) {
|
} catch (final Exception me) {
|
||||||
return new ModelAndView("emailError", "user", accountDto);
|
return new ModelAndView("emailError", "user", accountDto);
|
||||||
}
|
}
|
||||||
return new ModelAndView("successRegister", "user", accountDto);
|
return new ModelAndView("successRegister", "user", accountDto);
|
||||||
}
|
}
|
||||||
|
|
||||||
@RequestMapping(value = "/user/resendRegistrationToken", method = RequestMethod.GET)
|
@RequestMapping(value = "/user/resendRegistrationToken", method = RequestMethod.GET)
|
||||||
public String resendRegistrationToken(WebRequest request, Model model, @RequestParam("token") String token) {
|
public String resendRegistrationToken(final WebRequest request, final Model model, @RequestParam("token") final String existingToken) {
|
||||||
Locale locale = request.getLocale();
|
final Locale locale = request.getLocale();
|
||||||
VerificationToken newToken = service.updateVerificationToken(token);
|
final VerificationToken newToken = userService.generateNewVerificationToken(existingToken);
|
||||||
User user = service.getUser(newToken.getToken());
|
final User user = userService.getUser(newToken.getToken());
|
||||||
try {
|
try {
|
||||||
String confirmationUrl = request.getContextPath() + "/regitrationConfirm.html?token=" + newToken.getToken();
|
final SimpleMailMessage email = constructResetVerificationTokenEmail(request.getContextPath(), request.getLocale(), newToken, user);
|
||||||
String message = messages.getMessage("message.resendToken", null, request.getLocale());
|
|
||||||
SimpleMailMessage email = new SimpleMailMessage();
|
|
||||||
email.setTo(user.getEmail());
|
|
||||||
email.setSubject("Resend Registration Token");
|
|
||||||
email.setText(message + " \r\n" + "http://localhost:8080" + confirmationUrl);
|
|
||||||
System.out.println(email.getText());
|
|
||||||
mailSender.send(email);
|
mailSender.send(email);
|
||||||
System.out.println(email.getText());
|
} catch (final Exception e) {
|
||||||
} catch (Exception e) {
|
// MailException
|
||||||
return "redirect:/emailError.html?lang=" + locale.getLanguage();
|
return "redirect:/emailError.html?lang=" + locale.getLanguage();
|
||||||
}
|
}
|
||||||
model.addAttribute("message", messages.getMessage("message.resendToken", null, locale));
|
model.addAttribute("message", messages.getMessage("message.resendToken", null, locale));
|
||||||
@ -142,27 +138,26 @@ public class RegistrationController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@RequestMapping(value = "/user/resetPassword", method = RequestMethod.POST)
|
@RequestMapping(value = "/user/resetPassword", method = RequestMethod.POST)
|
||||||
public String resetPassword(WebRequest request, Model model, @RequestParam("email") String userEmail) {
|
public String resetPassword(final WebRequest request, final Model model, @RequestParam("email") final String userEmail) {
|
||||||
|
final User user = userService.findUserByEmail(userEmail);
|
||||||
User user = service.findUserByEmail(userEmail);
|
|
||||||
if (user == null) {
|
if (user == null) {
|
||||||
model.addAttribute("message", messages.getMessage("auth.message.expired", null, request.getLocale()));
|
model.addAttribute("message", messages.getMessage("auth.message.expired", null, request.getLocale()));
|
||||||
return "redirect:/login.html?lang=" + request.getLocale().getLanguage();
|
return "redirect:/login.html?lang=" + request.getLocale().getLanguage();
|
||||||
}
|
}
|
||||||
|
|
||||||
String token = UUID.randomUUID().toString();
|
final String token = UUID.randomUUID().toString();
|
||||||
service.createPasswordResetTokenForUser(user, token);
|
userService.createPasswordResetTokenForUser(user, token);
|
||||||
try {
|
try {
|
||||||
String url = request.getContextPath() + "/user/changePassword?id=" + user.getId() + "&token=" + token;
|
final String url = request.getContextPath() + "/user/changePassword?id=" + user.getId() + "&token=" + token;
|
||||||
String message = messages.getMessage("message.resetPassword", null, request.getLocale());
|
final String message = messages.getMessage("message.resetPassword", null, request.getLocale());
|
||||||
SimpleMailMessage email = new SimpleMailMessage();
|
final SimpleMailMessage email = new SimpleMailMessage();
|
||||||
email.setTo(user.getEmail());
|
email.setTo(user.getEmail());
|
||||||
email.setSubject("Reset Password");
|
email.setSubject("Reset Password");
|
||||||
email.setText(message + " \r\n" + "http://localhost:8080" + url);
|
email.setText(message + " \r\n" + "http://localhost:8080" + url);
|
||||||
System.out.println(email.getText());
|
System.out.println(email.getText());
|
||||||
mailSender.send(email);
|
mailSender.send(email);
|
||||||
System.out.println(email.getText());
|
System.out.println(email.getText());
|
||||||
} catch (Exception e) {
|
} catch (final Exception e) {
|
||||||
return "redirect:/emailError.html?lang=" + request.getLocale().getLanguage();
|
return "redirect:/emailError.html?lang=" + request.getLocale().getLanguage();
|
||||||
}
|
}
|
||||||
model.addAttribute("message", messages.getMessage("message.resetPassword", null, request.getLocale()));
|
model.addAttribute("message", messages.getMessage("message.resetPassword", null, request.getLocale()));
|
||||||
@ -170,26 +165,26 @@ public class RegistrationController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@RequestMapping(value = "/user/changePassword", method = RequestMethod.GET)
|
@RequestMapping(value = "/user/changePassword", method = RequestMethod.GET)
|
||||||
public String changePassword(WebRequest request, Model model, @RequestParam("id") long id, @RequestParam("token") String token) {
|
public String changePassword(final WebRequest request, final Model model, @RequestParam("id") final long id, @RequestParam("token") final String token) {
|
||||||
Locale locale = request.getLocale();
|
final Locale locale = request.getLocale();
|
||||||
|
|
||||||
PasswordResetToken passToken = service.getPasswordResetToken(token);
|
final PasswordResetToken passToken = userService.getPasswordResetToken(token);
|
||||||
User user = passToken.getUser();
|
final User user = passToken.getUser();
|
||||||
if (passToken == null || user.getId() != id) {
|
if (passToken == null || user.getId() != id) {
|
||||||
String message = messages.getMessage("auth.message.invalidToken", null, locale);
|
final String message = messages.getMessage("auth.message.invalidToken", null, locale);
|
||||||
model.addAttribute("message", message);
|
model.addAttribute("message", message);
|
||||||
System.out.println(id);
|
System.out.println(id);
|
||||||
System.out.println(passToken);
|
System.out.println(passToken);
|
||||||
return "redirect:/login.html?lang=" + locale.getLanguage();
|
return "redirect:/login.html?lang=" + locale.getLanguage();
|
||||||
}
|
}
|
||||||
|
|
||||||
Calendar cal = Calendar.getInstance();
|
final Calendar cal = Calendar.getInstance();
|
||||||
if ((passToken.getExpiryDate().getTime() - cal.getTime().getTime()) <= 0) {
|
if ((passToken.getExpiryDate().getTime() - cal.getTime().getTime()) <= 0) {
|
||||||
model.addAttribute("message", messages.getMessage("auth.message.expired", null, locale));
|
model.addAttribute("message", messages.getMessage("auth.message.expired", null, locale));
|
||||||
return "redirect:/login.html?lang=" + locale.getLanguage();
|
return "redirect:/login.html?lang=" + locale.getLanguage();
|
||||||
}
|
}
|
||||||
|
|
||||||
Authentication auth = new UsernamePasswordAuthenticationToken(user, null, userDetailsService.loadUserByUsername(user.getEmail()).getAuthorities());
|
final Authentication auth = new UsernamePasswordAuthenticationToken(user, null, userDetailsService.loadUserByUsername(user.getEmail()).getAuthorities());
|
||||||
SecurityContextHolder.getContext().setAuthentication(auth);
|
SecurityContextHolder.getContext().setAuthentication(auth);
|
||||||
|
|
||||||
return "redirect:/updatePassword.html?lang=" + locale.getLanguage();
|
return "redirect:/updatePassword.html?lang=" + locale.getLanguage();
|
||||||
@ -197,22 +192,36 @@ public class RegistrationController {
|
|||||||
|
|
||||||
@RequestMapping(value = "/user/savePassword", method = RequestMethod.POST)
|
@RequestMapping(value = "/user/savePassword", method = RequestMethod.POST)
|
||||||
@PreAuthorize("hasRole('READ_PRIVILEGE')")
|
@PreAuthorize("hasRole('READ_PRIVILEGE')")
|
||||||
public String savePassword(WebRequest request, Model model, @RequestParam("password") String password) {
|
public String savePassword(final WebRequest request, final Model model, @RequestParam("password") final String password) {
|
||||||
Locale locale = request.getLocale();
|
final Locale locale = request.getLocale();
|
||||||
|
|
||||||
User user = (User) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
|
final User user = (User) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
|
||||||
service.changeUserPassword(user, password);
|
userService.changeUserPassword(user, password);
|
||||||
|
|
||||||
return "redirect:/login.html?lang=" + locale;
|
return "redirect:/login.html?lang=" + locale;
|
||||||
}
|
}
|
||||||
|
|
||||||
private User createUserAccount(UserDto accountDto) {
|
// NON-API
|
||||||
|
|
||||||
|
private final SimpleMailMessage constructResetVerificationTokenEmail(final String contextPath, final Locale locale, final VerificationToken newToken, final User user) {
|
||||||
|
final String confirmationUrl = contextPath + "/regitrationConfirm.html?token=" + newToken.getToken();
|
||||||
|
final String message = messages.getMessage("message.resendToken", null, locale);
|
||||||
|
final SimpleMailMessage email = new SimpleMailMessage();
|
||||||
|
email.setSubject("Resend Registration Token");
|
||||||
|
email.setText(message + " \r\n" + "http://localhost:8080" + confirmationUrl);
|
||||||
|
|
||||||
|
email.setTo(user.getEmail());
|
||||||
|
return email;
|
||||||
|
}
|
||||||
|
|
||||||
|
private User createUserAccount(final UserDto accountDto) {
|
||||||
User registered = null;
|
User registered = null;
|
||||||
try {
|
try {
|
||||||
registered = service.registerNewUserAccount(accountDto);
|
registered = userService.registerNewUserAccount(accountDto);
|
||||||
} catch (EmailExistsException e) {
|
} catch (final EmailExistsException e) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
return registered;
|
return registered;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
Loading…
x
Reference in New Issue
Block a user