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

main
Last change on this file since 19398ad was 19398ad, checked in by 223021 <daniel.ilievski.2@…>, 7 weeks ago

Implemented backend and frontend CRUD operations for job advertisements

  • Property mode set to 100644
File size: 3.4 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.util.HashMap;
21
22@Service
23@RequiredArgsConstructor
24public class AuthServiceImpl implements AuthService {
25
26 private final RecruiterRepository recruiterRepository;
27 private final JobSeekerRepository jobSeekerRepository;
28 private final PasswordEncoder passwordEncoder;
29 private final AuthenticationManager authenticationManager;
30 private final UserRepository userRepository;
31 private final JwtService jwtService;
32
33 @Override
34 public User signUpJobSeeker(JobSeeker jobSeeker) {
35 jobSeeker.setPassword(passwordEncoder.encode(jobSeeker.getPassword()));
36 return jobSeekerRepository.save(jobSeeker);
37 }
38
39 public User signUpRecruiter(Recruiter recruiter) {
40 recruiter.setPassword(passwordEncoder.encode(recruiter.getPassword()));
41 return recruiterRepository.save(recruiter);
42 }
43
44 public JwtAuthResponse signIn(SignInDTO signInDTO) {
45 authenticationManager.authenticate(new UsernamePasswordAuthenticationToken(signInDTO.getEmail(), signInDTO.getPassword()));
46
47 User user = userRepository.findByEmail(signInDTO.getEmail()).orElseThrow(() -> new IllegalArgumentException("Email or password is incorrect"));
48 String jwt = jwtService.generateToken(user);
49 String refreshJwt = jwtService.generateRefreshToken(new HashMap<>(), user);
50
51 return new JwtAuthResponse(user.getId(), user.getEmail(), user.getName(), user.getRole().name(), jwt, refreshJwt);
52 }
53
54 public JwtAuthResponse refreshToken(RefreshTokenRequest refreshTokenRequest) {
55 String userEmail = jwtService.extractUsername(refreshTokenRequest.getToken());
56 User user = userRepository.findByEmail(userEmail).orElseThrow();
57 if(jwtService.isTokenValid(refreshTokenRequest.getToken(), user)) {
58 String jwt = jwtService.generateToken(user);
59
60 return new JwtAuthResponse(user.getId(), user.getEmail(), user.getName(), user.getRole().name(), jwt, refreshTokenRequest.getToken());
61 }
62 return null;
63 }
64}
Note: See TracBrowser for help on using the repository browser.