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

main
Last change on this file since b248810 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.1 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 // TO DO: FIX PERMISSIONS
33 .requestMatchers("/api/job-advertisements/**","/api/job-advertisements/view/**","/api/recruiter/info/**",
34 "/api/job-advertisements/apply/**","/api/auth/**", "/api/resume/**", "/api/my-applications/**", "/api/applications/{id}/update", "/api/admin/**").permitAll()
35 //.requestMatchers("/api/job-advertisements/**").hasAnyAuthority(Role.ROLE_RECRUITER.name())
36 .anyRequest().authenticated())
37 .sessionManagement(manager -> manager.sessionCreationPolicy(SessionCreationPolicy.STATELESS))
38 .authenticationProvider(authenticationProvider()).addFilterBefore(
39 jwtAuthFilter, UsernamePasswordAuthenticationFilter.class
40 );
41 return http.build();
42 }
43
44 @Bean
45 public AuthenticationProvider authenticationProvider() {
46 DaoAuthenticationProvider authenticationProvider = new DaoAuthenticationProvider();
47 authenticationProvider.setUserDetailsService(userDetailsService);
48 authenticationProvider.setPasswordEncoder(passwordEncoder());
49 return authenticationProvider;
50 }
51
52 @Bean
53 public PasswordEncoder passwordEncoder() {
54 return new BCryptPasswordEncoder();
55 }
56
57 @Bean
58 public AuthenticationManager authenticationManager(AuthenticationConfiguration config) throws Exception {
59 return config.getAuthenticationManager();
60 }
61}
Note: See TracBrowser for help on using the repository browser.