source: sources/app/src/main/java/parkup/services/GuestService.java@ e8b1076

Last change on this file since e8b1076 was e8b1076, checked in by DavidTrajkovski <davidtrajkovski11@…>, 2 years ago

guest login

  • Property mode set to 100644
File size: 2.3 KB
Line 
1package parkup.services;
2
3import java.util.List;
4import java.util.Optional;
5import org.springframework.beans.factory.annotation.Autowired;
6import org.springframework.security.core.userdetails.UserDetails;
7import org.springframework.security.core.userdetails.UserDetailsService;
8import org.springframework.security.core.userdetails.UsernameNotFoundException;
9import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
10import org.springframework.stereotype.Service;
11import parkup.entities.Guest;
12import parkup.repositories.GuestRepository;
13
14@Service
15public class GuestService implements UserDetailsService {
16 private final GuestRepository guestRepository;
17 private final BCryptPasswordEncoder passwordEncoder;
18
19 @Autowired
20 public GuestService(GuestRepository guestRepository, BCryptPasswordEncoder passwordEncoder) {
21 this.guestRepository = guestRepository;
22 this.passwordEncoder = passwordEncoder;
23 }
24
25 public List<Guest> getGuests() {
26 return this.guestRepository.findAll();
27 }
28
29 public Guest findById(int guestId) {
30 Optional<Guest> guest = Optional.ofNullable(this.guestRepository.findByGuestId(guestId));
31 return guest.orElse(null);
32 }
33
34 public Guest addGuest(Guest guest) {
35 Optional<Guest> guestOpt = this.guestRepository.findGuestByEmail(guest.getEmail());
36 if (guestOpt.isPresent()) {
37 throw new IllegalStateException("Email already taken, try adding a guest with a different valid email address");
38 } else {
39 double random = Math.random()*10000;
40 guest.setPassword(Integer.toString((int)random));
41 return this.guestRepository.save(guest);
42 }
43 }
44
45 public void deleteGuest(int guestId) {
46 Optional<Guest> guest = Optional.ofNullable(this.guestRepository.findByGuestId(guestId));
47 if (guest.isPresent()) {
48 this.guestRepository.deleteByGuestId(guestId);
49 } else {
50 throw new IllegalStateException("Guest doesn't exist, therefore can't be deleted");
51 }
52 }
53
54 @Override
55 public UserDetails loadUserByUsername(String s) throws UsernameNotFoundException {
56 return guestRepository.findGuestByEmail(s)
57 .orElseThrow(() ->
58 new UsernameNotFoundException("Email not found"));
59 }
60}
Note: See TracBrowser for help on using the repository browser.