[cf9cdbf] | 1 | package edu.gjoko.schedlr.config;
|
---|
| 2 |
|
---|
[401a211] | 3 | import edu.gjoko.schedlr.services.PostgresUserDetailsService;
|
---|
[cf9cdbf] | 4 | import org.springframework.context.annotation.Bean;
|
---|
| 5 | import org.springframework.context.annotation.Configuration;
|
---|
[401a211] | 6 | import org.springframework.security.authentication.AuthenticationManager;
|
---|
| 7 | import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
|
---|
[cf9cdbf] | 8 | import org.springframework.security.config.annotation.web.builders.HttpSecurity;
|
---|
[401a211] | 9 | import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
|
---|
| 10 | import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
|
---|
[cf9cdbf] | 11 | import org.springframework.security.config.core.GrantedAuthorityDefaults;
|
---|
| 12 | import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
|
---|
[401a211] | 13 | import org.springframework.security.web.authentication.AuthenticationSuccessHandler;
|
---|
[cf9cdbf] | 14 | import org.springframework.security.web.authentication.www.BasicAuthenticationFilter;
|
---|
| 15 |
|
---|
| 16 | @Configuration
|
---|
[401a211] | 17 | @EnableWebSecurity
|
---|
| 18 | public class AppSecurityConfig extends WebSecurityConfigurerAdapter {
|
---|
| 19 |
|
---|
| 20 | private final PostgresUserDetailsService userDetailsService;
|
---|
| 21 |
|
---|
| 22 | private final BCryptPasswordEncoder passwordEncoder;
|
---|
| 23 |
|
---|
| 24 | private final AuthenticationSuccessHandler authenticationSuccessHandler;
|
---|
| 25 |
|
---|
| 26 | public AppSecurityConfig(PostgresUserDetailsService userDetailsService, BCryptPasswordEncoder passwordEncoder,
|
---|
| 27 | AuthenticationSuccessHandler authenticationSuccessHandler) {
|
---|
| 28 | this.userDetailsService = userDetailsService;
|
---|
| 29 | this.passwordEncoder = passwordEncoder;
|
---|
| 30 | this.authenticationSuccessHandler = authenticationSuccessHandler;
|
---|
| 31 | }
|
---|
[cf9cdbf] | 32 |
|
---|
| 33 | @Bean
|
---|
[401a211] | 34 | public AuthenticationManager customAuthenticationManager() throws Exception {
|
---|
| 35 | return authenticationManager();
|
---|
| 36 | }
|
---|
| 37 |
|
---|
| 38 | @Override
|
---|
| 39 | protected void configure(AuthenticationManagerBuilder auth) throws Exception {
|
---|
| 40 | auth.userDetailsService(userDetailsService).passwordEncoder(passwordEncoder);
|
---|
| 41 | }
|
---|
| 42 |
|
---|
| 43 | @Override
|
---|
| 44 | protected void configure(HttpSecurity http) throws Exception {
|
---|
| 45 | http.csrf()
|
---|
[cf9cdbf] | 46 | .disable()
|
---|
[401a211] | 47 | .authorizeRequests()
|
---|
[763289e] | 48 | .antMatchers("/login").permitAll()
|
---|
[204464d] | 49 | .antMatchers("/register_customer").permitAll()
|
---|
| 50 | .antMatchers("/register_business").permitAll()
|
---|
[763289e] | 51 | .antMatchers("/homepage").permitAll()
|
---|
[401a211] | 52 | .antMatchers("/css/**").permitAll()
|
---|
[044bd76] | 53 | .antMatchers("/js/**").permitAll()
|
---|
[401a211] | 54 | .antMatchers("/anonymous*").anonymous()
|
---|
| 55 | .anyRequest()
|
---|
| 56 | .fullyAuthenticated()
|
---|
| 57 | .and()
|
---|
[cf9cdbf] | 58 | .httpBasic()
|
---|
| 59 | .authenticationEntryPoint(new AppAuthenticationEntryPoint())
|
---|
| 60 | .and()
|
---|
| 61 | .addFilterBefore(new AppFilter(), BasicAuthenticationFilter.class)
|
---|
| 62 | .formLogin()
|
---|
| 63 | .loginPage("/login")
|
---|
| 64 | .loginProcessingUrl("/login")
|
---|
[763289e] | 65 | .successHandler(authenticationSuccessHandler)
|
---|
| 66 | .defaultSuccessUrl("/homepage");
|
---|
[cf9cdbf] | 67 | }
|
---|
| 68 | }
|
---|