source: jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/service/impl/AuthServiceImpl.java

main
Last change on this file was b248810, checked in by 223021 <daniel.ilievski.2@…>, 3 weeks ago

Added no access page for new recruiters and admin panel for granting access

  • Property mode set to 100644
File size: 3.6 KB
Line 
1package mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.service.impl;
2
3import lombok.RequiredArgsConstructor;
4import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.users.DTO.SignInDTO;
5import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.users.DTO.JwtAuthResponse;
6import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.users.DTO.RefreshTokenRequest;
7import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.users.JobSeeker;
8import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.users.Recruiter;
9import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.users.User;
10import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.repositories.JobSeekerRepository;
11import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.repositories.RecruiterRepository;
12import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.repositories.UserRepository;
13import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.service.intef.AuthService;
14import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.service.intef.JwtService;
15import org.springframework.security.authentication.AuthenticationManager;
16import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
17import org.springframework.security.crypto.password.PasswordEncoder;
18import org.springframework.stereotype.Service;
19
20import java.time.LocalDateTime;
21import java.util.HashMap;
22
23@Service
24@RequiredArgsConstructor
25public class AuthServiceImpl implements AuthService {
26
27 private final RecruiterRepository recruiterRepository;
28 private final JobSeekerRepository jobSeekerRepository;
29 private final PasswordEncoder passwordEncoder;
30 private final AuthenticationManager authenticationManager;
31 private final UserRepository userRepository;
32 private final JwtService jwtService;
33
34 @Override
35 public User signUpJobSeeker(JobSeeker jobSeeker) {
36 jobSeeker.setPassword(passwordEncoder.encode(jobSeeker.getPassword()));
37 jobSeeker.setHasAccess(true);
38 jobSeeker.setRegisteredOn(LocalDateTime.now());
39 return jobSeekerRepository.save(jobSeeker);
40 }
41
42 public User signUpRecruiter(Recruiter recruiter) {
43 recruiter.setPassword(passwordEncoder.encode(recruiter.getPassword()));
44 recruiter.setHasAccess(false);
45 recruiter.setRegisteredOn(LocalDateTime.now());
46 return recruiterRepository.save(recruiter);
47 }
48
49 public JwtAuthResponse signIn(SignInDTO signInDTO) {
50 authenticationManager.authenticate(new UsernamePasswordAuthenticationToken(signInDTO.getEmail(), signInDTO.getPassword()));
51
52 User user = userRepository.findByEmail(signInDTO.getEmail()).orElseThrow(() -> new IllegalArgumentException("Email or password is incorrect"));
53 String jwt = jwtService.generateToken(user);
54 String refreshJwt = jwtService.generateRefreshToken(new HashMap<>(), user);
55
56 return new JwtAuthResponse(user.getId(), user.getEmail(), user.getName(), user.getRole().name(), user.isHasAccess(), jwt, refreshJwt);
57 }
58
59 public JwtAuthResponse refreshToken(RefreshTokenRequest refreshTokenRequest) {
60 String userEmail = jwtService.extractUsername(refreshTokenRequest.getToken());
61 User user = userRepository.findByEmail(userEmail).orElseThrow();
62 if(jwtService.isTokenValid(refreshTokenRequest.getToken(), user)) {
63 String jwt = jwtService.generateToken(user);
64
65 return new JwtAuthResponse(user.getId(), user.getEmail(), user.getName(), user.getRole().name(), user.isHasAccess(), jwt, refreshTokenRequest.getToken());
66 }
67 return null;
68 }
69}
Note: See TracBrowser for help on using the repository browser.