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

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

Initial commit - implementirano registracija i logiranje so Spring Security i JSON Web Token-i vo backend-ot kako i navbar i formi za istoto vo frontend-ot

  • Property mode set to 100644
File size: 3.3 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
34 @Override
35 public User signUpJobSeeker(JobSeeker jobSeeker) {
36 jobSeeker.setPassword(passwordEncoder.encode(jobSeeker.getPassword()));
37 return jobSeekerRepository.save(jobSeeker);
38 }
39
40 public User signUpRecruiter(Recruiter recruiter) {
41 recruiter.setPassword(passwordEncoder.encode(recruiter.getPassword()));
42 return recruiterRepository.save(recruiter);
43 }
44
45 public JwtAuthResponse signIn(SignInDTO signInDTO) {
46 authenticationManager.authenticate(new UsernamePasswordAuthenticationToken(signInDTO.getEmail(), signInDTO.getPassword()));
47
48 User user = userRepository.findByEmail(signInDTO.getEmail()).orElseThrow(() -> new IllegalArgumentException("Email or password is incorrect"));
49 String jwt = jwtService.generateToken(user);
50 String refreshJwt = jwtService.generateRefreshToken(new HashMap<>(), user);
51
52 return new JwtAuthResponse(user.getEmail(), user.getName(), user.getRole().name(), jwt, refreshJwt);
53 }
54
55 public JwtAuthResponse refreshToken(RefreshTokenRequest refreshTokenRequest) {
56 String userEmail = jwtService.extractUsername(refreshTokenRequest.getToken());
57 User user = userRepository.findByEmail(userEmail).orElseThrow();
58 if(jwtService.isTokenValid(refreshTokenRequest.getToken(), user)) {
59 String jwt = jwtService.generateToken(user);
60
61 return new JwtAuthResponse(user.getEmail(), user.getName(), user.getRole().name(), jwt, refreshTokenRequest.getToken());
62 }
63 return null;
64 }
65}
Note: See TracBrowser for help on using the repository browser.