source: phonelux-backend/src/main/java/finki/it/phoneluxbackend/services/UserService.java@ dfd5d87

Last change on this file since dfd5d87 was dfd5d87, checked in by Marko <Marko@…>, 22 months ago

Registration logic with confirmation token implemented

  • Property mode set to 100644
File size: 2.0 KB
Line 
1package finki.it.phoneluxbackend.services;
2
3import finki.it.phoneluxbackend.entities.User;
4import finki.it.phoneluxbackend.repositories.UserRepository;
5import finki.it.phoneluxbackend.entities.ConfirmationToken;
6import lombok.AllArgsConstructor;
7import org.springframework.security.core.userdetails.UserDetails;
8import org.springframework.security.core.userdetails.UserDetailsService;
9import org.springframework.security.core.userdetails.UsernameNotFoundException;
10import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
11import org.springframework.stereotype.Service;
12
13import java.time.LocalDateTime;
14import java.util.UUID;
15
16@Service
17@AllArgsConstructor
18public class UserService implements UserDetailsService {
19 private final UserRepository userRepository;
20 private final BCryptPasswordEncoder bCryptPasswordEncoder;
21 private final ConfirmationTokenService confirmationTokenService;
22
23
24 @Override
25 public UserDetails loadUserByUsername(String email) throws UsernameNotFoundException {
26 return userRepository.findByEmail(email)
27 .orElseThrow(() -> new UsernameNotFoundException("User with email "+email+" not found!"));
28 }
29
30 public String signUpUser(User user)
31 {
32 boolean userExists = userRepository.findByEmail(user.getEmail()).isPresent();
33
34 if (userExists && user.getEnabled()){
35 throw new IllegalStateException("Email "+user.getEmail()+" already taken!");
36 }
37
38 String encodedPassword = bCryptPasswordEncoder.encode(user.getPassword());
39
40 user.setPassword(encodedPassword);
41
42 String token = UUID.randomUUID().toString();
43 ConfirmationToken confirmationToken = new ConfirmationToken(token,
44 LocalDateTime.now(),
45 LocalDateTime.now().plusMinutes(15),
46 user
47 );
48
49 confirmationTokenService.saveConfirmationToken(confirmationToken);
50
51 return token;
52 }
53
54 public int enableUser(String email) {
55 return userRepository.enableUser(email);
56 }
57
58
59}
Note: See TracBrowser for help on using the repository browser.