source: jobvista-backend/src/main/java/mk/ukim/finki/predmeti/internettehnologii/jobvistabackend/config/SecurityConfiguration.java@ 19398ad

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

Implemented backend and frontend CRUD operations for job advertisements

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