source: jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/config/SecurityConfiguration.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.1 KB
Line 
1package mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.config;
2
3import lombok.RequiredArgsConstructor;
4import mk.ukim.finki.predmeti.internettehnologii.jobvistabackend.models.enumerations.Role;
5import org.springframework.context.annotation.Bean;
6import org.springframework.context.annotation.Configuration;
7import org.springframework.security.authentication.AuthenticationManager;
8import org.springframework.security.authentication.AuthenticationProvider;
9import org.springframework.security.authentication.dao.DaoAuthenticationProvider;
10import org.springframework.security.config.annotation.authentication.configuration.AuthenticationConfiguration;
11import org.springframework.security.config.annotation.web.builders.HttpSecurity;
12import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
13import org.springframework.security.config.annotation.web.configurers.AbstractHttpConfigurer;
14import org.springframework.security.config.http.SessionCreationPolicy;
15import org.springframework.security.core.userdetails.UserDetailsService;
16import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
17import org.springframework.security.crypto.password.PasswordEncoder;
18import org.springframework.security.web.SecurityFilterChain;
19import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;
20
21@Configuration
22@EnableWebSecurity
23@RequiredArgsConstructor
24public class SecurityConfiguration {
25
26 private final JwtAuthFilter jwtAuthFilter;
27 //private final UserService userService;
28 private final UserDetailsService userDetailsService;
29
30 @Bean
31 public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
32 http.csrf(AbstractHttpConfigurer::disable)
33 .authorizeHttpRequests(request -> request.requestMatchers("/api/auth/**")
34 .permitAll()
35 .requestMatchers("/api/admin").hasAnyAuthority(Role.ROLE_ADMIN.name())
36 .requestMatchers("/api/job-seeker").hasAnyAuthority(Role.ROLE_JOBSEEKER.name())
37 .requestMatchers("/api/recruiter").hasAnyAuthority(Role.ROLE_RECRUITER.name())
38 .anyRequest().authenticated())
39 .sessionManagement(manager -> manager.sessionCreationPolicy(SessionCreationPolicy.STATELESS))
40 .authenticationProvider(authenticationProvider()).addFilterBefore(
41 jwtAuthFilter, UsernamePasswordAuthenticationFilter.class
42 );
43 return http.build();
44 }
45
46 @Bean
47 public AuthenticationProvider authenticationProvider() {
48 DaoAuthenticationProvider authenticationProvider = new DaoAuthenticationProvider();
49 authenticationProvider.setUserDetailsService(userDetailsService);
50 authenticationProvider.setPasswordEncoder(passwordEncoder());
51 return authenticationProvider;
52 }
53
54 @Bean
55 public PasswordEncoder passwordEncoder() {
56 return new BCryptPasswordEncoder();
57 }
58
59 @Bean
60 public AuthenticationManager authenticationManager(AuthenticationConfiguration config) throws Exception {
61 return config.getAuthenticationManager();
62 }
63}
Note: See TracBrowser for help on using the repository browser.