source: src/main/java/mk/ukim/finki/eglas/config/WebSecurityConfig.java@ ac151d1

main
Last change on this file since ac151d1 was ac151d1, checked in by David <darsov2@…>, 11 days ago

initial

  • Property mode set to 100644
File size: 3.2 KB
Line 
1package mk.ukim.finki.eglas.config;
2
3import org.springframework.context.annotation.Bean;
4import org.springframework.context.annotation.Configuration;
5import org.springframework.security.authentication.AuthenticationManager;
6import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
7import org.springframework.security.config.annotation.method.configuration.EnableMethodSecurity;
8import org.springframework.security.config.annotation.web.builders.HttpSecurity;
9import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
10import org.springframework.security.config.annotation.web.configurers.AbstractHttpConfigurer;
11import org.springframework.security.core.userdetails.User;
12import org.springframework.security.core.userdetails.UserDetails;
13import org.springframework.security.core.userdetails.UserDetailsService;
14import org.springframework.security.crypto.password.PasswordEncoder;
15import org.springframework.security.provisioning.InMemoryUserDetailsManager;
16import org.springframework.security.web.SecurityFilterChain;
17
18
19@Configuration
20@EnableWebSecurity
21@EnableMethodSecurity
22public class WebSecurityConfig {
23
24 private final PasswordEncoder passwordEncoder;
25 private final CustomUsernamePasswordAuthenticationProvider authProvider;
26
27 public WebSecurityConfig(PasswordEncoder passwordEncoder, CustomUsernamePasswordAuthenticationProvider authProvider) {
28 this.passwordEncoder = passwordEncoder;
29 this.authProvider = authProvider;
30 }
31
32 @Bean
33 public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
34
35 http
36 .csrf(AbstractHttpConfigurer::disable)
37 .authorizeHttpRequests( (requests) -> requests
38 .requestMatchers("/admin/electionRealizationInterface").hasAnyRole("COMMITTEE")
39 .anyRequest()
40 .permitAll()
41// .requestMatchers("/admin/**").hasRole("ADMIN")
42// .anyRequest()
43// .authenticated()
44 )
45 .formLogin(x -> x.permitAll())
46// .formLogin((form) -> form
47// .loginPage("/login")
48// .permitAll()
49// .failureUrl("/login?error=BadCredentials")
50// .defaultSuccessUrl("/products", true)
51// )
52 .logout((logout) -> logout
53 .logoutUrl("/logout")
54 .clearAuthentication(true)
55 .invalidateHttpSession(true)
56 .deleteCookies("JSESSIONID")
57 .logoutSuccessUrl("/login")
58 )
59 .exceptionHandling((ex) -> ex
60 .accessDeniedPage("/access_denied")
61 );
62
63 return http.build();
64 }
65
66 @Bean
67 public AuthenticationManager authManager(HttpSecurity http) throws Exception {
68 AuthenticationManagerBuilder authenticationManagerBuilder =
69 http.getSharedObject(AuthenticationManagerBuilder.class);
70 authenticationManagerBuilder.authenticationProvider(authProvider);
71 return authenticationManagerBuilder.build();
72 }
73}
Note: See TracBrowser for help on using the repository browser.