package com.example.demo.config; import org.springframework.context.annotation.Configuration; import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; import org.springframework.security.crypto.password.PasswordEncoder; import org.thymeleaf.TemplateEngine; @Configuration @EnableWebSecurity @EnableGlobalMethodSecurity(securedEnabled = true, prePostEnabled = true) public class WebSecurityConfig extends WebSecurityConfigurerAdapter { private final PasswordEncoder passwordEncoder; private final CustomUsernamePasswordAuthenticationProvider authenticationProvider; public WebSecurityConfig( PasswordEncoder passwordEncoder, CustomUsernamePasswordAuthenticationProvider authenticationProvider) { this.passwordEncoder = passwordEncoder; this.authenticationProvider = authenticationProvider; } @Override protected void configure(HttpSecurity http) throws Exception { http.csrf().disable() .authorizeRequests() // .antMatchers("/").permitAll() .antMatchers("/login","/projections","/**","/auditoriums","/reserve/add","/css/**", "/tests/reserve/projection/add","/reserve","/reserve/projection/**", "/view/movies/**","/","/movie/projections/detailed-preview/","/tests","/home/videos/**", "/videos/**","/projections/view","/movies/view/**", "/home", "/home/**" ,"/assets/**", "/register","/movies", "/api/**","/logout").permitAll() .antMatchers("/admin/**","/projections/add-form","/movies/add-form").hasRole("EMPLOYEE") .anyRequest().authenticated() .and() .formLogin() //.loginPage("/login").permitAll() .failureUrl("/login?error=BadCredentials") .defaultSuccessUrl("/movies", true) .and() .logout() .logoutUrl("/logout") .clearAuthentication(true) .invalidateHttpSession(true) .deleteCookies("JSESSIONID") .logoutSuccessUrl("/login") .and() .exceptionHandling().accessDeniedPage("/access_denied"); } @Override protected void configure(AuthenticationManagerBuilder auth) throws Exception { // auth.inMemoryAuthentication() // .withUser("kostadin.mishev") // .password(passwordEncoder.encode("km")) // .authorities("ROLE_USER") // .and() // .withUser("admin") // .password(passwordEncoder.encode("admin")) // .authorities("ROLE_ADMIN"); auth.authenticationProvider(authenticationProvider); } // @Override // protected void configure(AuthenticationManagerBuilder auth) throws Exception { // auth.inMemoryAuthentication() // .withUser("admin") // .password(passwordEncoder.encode("admin")).authorities("ROLE_EMPLOYEE"); // } }