source: src/main/java/com/example/salonbella/service/UserService.java@ 4d7e387

Last change on this file since 4d7e387 was 4d7e387, checked in by makyjovanovsky <mjovanovski04@…>, 18 months ago

commit 1

  • Property mode set to 100644
File size: 3.6 KB
Line 
1package com.example.salonbella.service;
2
3import com.example.salonbella.controller.register.RegisterRequest;
4import com.example.salonbella.entity.ConfirmationTokenEntity;
5import com.example.salonbella.entity.UserEntity;
6import com.example.salonbella.repository.UserRepository;
7import com.example.salonbella.service.mail.ConfirmationTokenService;
8import com.example.salonbella.service.mail.EmailService;
9import org.springframework.beans.factory.annotation.Autowired;
10import org.springframework.security.core.userdetails.User;
11import org.springframework.security.core.userdetails.UserDetails;
12import org.springframework.security.core.userdetails.UserDetailsService;
13import org.springframework.security.core.userdetails.UsernameNotFoundException;
14import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
15import org.springframework.security.crypto.password.PasswordEncoder;
16import org.springframework.stereotype.Service;
17
18import java.time.LocalDateTime;
19import java.util.List;
20import java.util.UUID;
21
22@Service
23public class UserService implements UserDetailsService {
24 private final UserRepository repository;
25 private final ConfirmationTokenService confirmationTokenService;
26 private final EmailService emailService;
27
28 @Autowired
29 public UserService(UserRepository repository, ConfirmationTokenService confirmationTokenService, EmailService emailService) {
30 this.repository = repository;
31 this.confirmationTokenService = confirmationTokenService;
32 this.emailService = emailService;
33 }
34
35 public void registerNewUser(RegisterRequest registerRequest) {
36 PasswordEncoder encoder = new BCryptPasswordEncoder(10);
37 UserEntity userEntity = new UserEntity();
38 userEntity.setName(registerRequest.getName());
39 userEntity.setSurname(registerRequest.getSurname());
40 userEntity.setNumber(registerRequest.getNumber());
41 userEntity.setEmail(registerRequest.getEmail());
42 userEntity.setUsername(registerRequest.getUsername());
43 userEntity.setPassword(encoder.encode(registerRequest.getPassword()));
44
45 String token = UUID.randomUUID().toString();
46 ConfirmationTokenEntity confirmationTokenEntity = new ConfirmationTokenEntity(
47 token,
48 LocalDateTime.now(),
49 LocalDateTime.now().plusMinutes(30),
50 userEntity
51 );
52 repository.save(userEntity);
53 confirmationTokenService.saveConfirmationToken(confirmationTokenEntity);
54 emailService.send(registerRequest.getEmail(), registerRequest.getName(), token);
55 }
56
57 public void registerAdmin(UserEntity userEntity) {
58 repository.save(userEntity);
59 }
60
61 public boolean checkUsernameExists(String username) {
62 List<UserEntity> userEntities = repository.findAll();
63 for (UserEntity u : userEntities) {
64 if (u.getUsername().equalsIgnoreCase(username)) {
65 return true;
66 }
67 }
68 return false;
69 }
70
71 public boolean checkEmailExists(String email) {
72 List<UserEntity> userEntities = repository.findAll();
73 for (UserEntity u : userEntities) {
74 if (u.getEmail().equalsIgnoreCase(email)) {
75 return true;
76 }
77 }
78 return false;
79 }
80
81 @Override
82 public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
83
84 final UserEntity user = repository.findByUsername(username);
85 if (user == null || !user.isValid())
86 throw new UsernameNotFoundException(username);
87 return User.withUsername(user.getUsername()).password(user.getPassword()).roles(user.getRole()).build();
88 }
89}
Note: See TracBrowser for help on using the repository browser.