Skip to content

Commit 8ff5b3e

Browse files
committed
Registration with PasswordEncoding
1 parent c6cc467 commit 8ff5b3e

File tree

11 files changed

+42
-26
lines changed

11 files changed

+42
-26
lines changed

spring-security-login-and-registration/src/main/java/org/baeldung/event/OnRegistrationCompleteEvent.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,7 @@
33
import java.util.Locale;
44

55
import org.baeldung.persistence.model.User;
6-
import org.baeldung.web.controller.RegistrationController;
76
import org.springframework.context.ApplicationEvent;
8-
import org.springframework.web.context.request.WebRequest;
97

108
@SuppressWarnings("serial")
119
public class OnRegistrationCompleteEvent extends ApplicationEvent {

spring-security-login-and-registration/src/main/java/org/baeldung/event/listener/RegistrationListener.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ private void confirmRegistration(OnRegistrationCompleteEvent event) {
3232
User user = event.getUser();
3333
String token = UUID.randomUUID().toString();
3434
service.createVerificationTokenForUser(user, token);
35-
35+
3636
String recipientAddress = user.getEmail();
3737
String subject = "Registration Confirmation";
3838
String confirmationUrl = event.getAppUrl() + "/regitrationConfirm.html?token=" + token;
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package org.baeldung.hashing;
2+
3+
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
4+
5+
public class HashGenerator {
6+
7+
public String getHashedPassword(String password) {
8+
BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
9+
String hashedPassword = passwordEncoder.encode(password);
10+
return hashedPassword;
11+
}
12+
}

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

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

33
import javax.persistence.CascadeType;
4-
import javax.persistence.Column;
54
import javax.persistence.Entity;
65
import javax.persistence.FetchType;
76
import javax.persistence.GeneratedValue;
@@ -23,7 +22,6 @@ public class Role {
2322
@JoinColumn(name = "user_id")
2423
private User user;
2524

26-
@Column(name = "role")
2725
private Integer role;
2826

2927
public Role() {

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

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
import java.util.Calendar;
44
import java.sql.Date;
55
import java.sql.Timestamp;
6-
76
import javax.persistence.Entity;
87
import javax.persistence.FetchType;
98
import javax.persistence.GeneratedValue;

spring-security-login-and-registration/src/main/java/org/baeldung/persistence/service/UserService.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import javax.transaction.Transactional;
44

5+
import org.baeldung.hashing.HashGenerator;
56
import org.baeldung.persistence.dao.UserRepository;
67
import org.baeldung.persistence.dao.VerificationTokenRepository;
78
import org.baeldung.persistence.model.Role;
@@ -20,7 +21,8 @@ public class UserService implements IUserService {
2021
@Autowired
2122
private VerificationTokenRepository tokenRepository;
2223

23-
// API
24+
@Autowired
25+
private HashGenerator hashGenerator;
2426

2527
@Override
2628
public User registerNewUserAccount(UserDto accountDto) throws EmailExistsException {
@@ -30,7 +32,8 @@ public User registerNewUserAccount(UserDto accountDto) throws EmailExistsExcepti
3032
User user = new User();
3133
user.setFirstName(accountDto.getFirstName());
3234
user.setLastName(accountDto.getLastName());
33-
user.setPassword(accountDto.getPassword());
35+
String hashedPassword = hashGenerator.getHashedPassword(accountDto.getPassword());
36+
user.setPassword(hashedPassword);
3437
user.setEmail(accountDto.getEmail());
3538
user.setRole(new Role(Integer.valueOf(1), user));
3639
return repository.save(user);
@@ -63,8 +66,6 @@ public void createVerificationTokenForUser(User user, String token) {
6366
tokenRepository.save(myToken);
6467
}
6568

66-
//
67-
6869
private boolean emailExist(String email) {
6970
User user = repository.findByEmail(email);
7071
if (user != null) {

spring-security-login-and-registration/src/main/java/org/baeldung/security/MyUserDetailsService.java

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,10 @@
33
import java.util.ArrayList;
44
import java.util.Collection;
55
import java.util.List;
6+
67
import org.springframework.security.core.userdetails.UserDetails;
78
import org.springframework.security.core.userdetails.UserDetailsService;
89
import org.springframework.security.core.userdetails.UsernameNotFoundException;
9-
import org.slf4j.Logger;
10-
import org.slf4j.LoggerFactory;
1110
import org.baeldung.persistence.dao.UserRepository;
1211
import org.baeldung.persistence.model.User;
1312
import org.baeldung.persistence.service.IUserService;
@@ -22,8 +21,6 @@
2221
@Transactional
2322
public class MyUserDetailsService implements UserDetailsService {
2423

25-
private final Logger LOGGER = LoggerFactory.getLogger(getClass());
26-
2724
@Autowired
2825
private UserRepository userRepository;
2926
@Autowired
@@ -41,14 +38,12 @@ public UserDetails loadUserByUsername(String email) throws UsernameNotFoundExcep
4138
boolean credentialsNonExpired = true;
4239
boolean accountNonLocked = true;
4340
try {
44-
LOGGER.debug("Loading user by username: {}", email);
4541
User user = userRepository.findByEmail(email);
46-
LOGGER.debug("Found user: {}", user);
4742
if (user == null) {
4843
return new org.springframework.security.core.userdetails.User(" ", " ", enabled, true, true, true, getAuthorities(new Integer(1)));
4944
}
50-
51-
return new org.springframework.security.core.userdetails.User(user.getEmail(), user.getPassword().toLowerCase(), user.isEnabled(), accountNonExpired, credentialsNonExpired, accountNonLocked, getAuthorities(user.getRole().getRole()));
45+
46+
return new org.springframework.security.core.userdetails.User(user.getEmail(), user.getPassword(), user.isEnabled(), accountNonExpired, credentialsNonExpired, accountNonLocked, getAuthorities(user.getRole().getRole()));
5247
} catch (Exception e) {
5348
throw new RuntimeException(e);
5449
}

spring-security-login-and-registration/src/main/java/org/baeldung/spring/MvcConfig.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import java.util.Locale;
44

5+
import org.baeldung.hashing.HashGenerator;
56
import org.baeldung.validation.service.EmailValidator;
67
import org.baeldung.validation.service.PasswordMatchesValidator;
78
import org.springframework.context.MessageSource;
@@ -100,4 +101,11 @@ public PasswordMatchesValidator passwordMatchesValidator() {
100101
return passwordMatchesValidator;
101102
}
102103

104+
// DIC 7
105+
@Bean
106+
public HashGenerator hashGenerator() {
107+
HashGenerator hashGenerator = new HashGenerator();
108+
return hashGenerator;
109+
}
110+
103111
}

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -60,21 +60,21 @@ public String showRegistrationForm(WebRequest request, Model model) {
6060
@RequestMapping(value = "/regitrationConfirm", method = RequestMethod.GET)
6161
public String confirmRegistration(WebRequest request, Model model, @RequestParam("token") String token) {
6262
Locale locale = request.getLocale();
63-
63+
6464
VerificationToken verificationToken = service.getVerificationToken(token);
6565
if (verificationToken == null) {
6666
String message = messages.getMessage("auth.message.invalidToken", null, locale);
6767
model.addAttribute("message", message);
6868
return "redirect:/badUser.html?lang=" + locale.getLanguage();
6969
}
70-
70+
7171
User user = verificationToken.getUser();
7272
Calendar cal = Calendar.getInstance();
7373
if ((verificationToken.getExpiryDate().getTime() - cal.getTime().getTime()) <= 0) {
7474
model.addAttribute("message", messages.getMessage("auth.message.expired", null, locale));
7575
return "redirect:/badUser.html?lang=" + locale.getLanguage();
7676
}
77-
77+
7878
user.setEnabled(true);
7979
service.saveRegisteredUser(user);
8080
return "redirect:/login.html?lang=" + locale.getLanguage();

spring-security-login-and-registration/src/main/resources/application.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,4 +14,4 @@ smtp.port=465
1414
smtp.protocol=smtps
1515
smtp.username=xxx777@gmail.com
1616
smtp.password=
17-
support.email=xxx777@gmail.com
17+
support.email=xxx777@gmail.com

0 commit comments

Comments
 (0)