source: phonelux-backend/src/main/java/finki/it/phoneluxbackend/security/configs/WebSecurityConfig.java@ ffd50db

Last change on this file since ffd50db was 5201690, checked in by Marko <Marko@…>, 22 months ago

Admin and specifications controllers added

  • Property mode set to 100644
File size: 3.0 KB
Line 
1package finki.it.phoneluxbackend.security.configs;
2
3import finki.it.phoneluxbackend.security.CustomAuthenticationFilter;
4import finki.it.phoneluxbackend.security.CustomAuthorizationFilter;
5import finki.it.phoneluxbackend.services.UserService;
6import lombok.AllArgsConstructor;
7import org.springframework.context.annotation.Bean;
8import org.springframework.context.annotation.Configuration;
9import org.springframework.security.authentication.AuthenticationManager;
10import org.springframework.security.authentication.dao.DaoAuthenticationProvider;
11import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
12import org.springframework.security.config.annotation.web.builders.HttpSecurity;
13import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
14import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
15import org.springframework.security.config.http.SessionCreationPolicy;
16import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
17import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;
18
19import static org.springframework.http.HttpMethod.GET;
20
21@Configuration
22@AllArgsConstructor
23@EnableWebSecurity
24public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
25
26 private final UserService userService;
27 private final BCryptPasswordEncoder bCryptPasswordEncoder;
28
29 @Override
30 protected void configure(HttpSecurity http) throws Exception {
31
32
33 http.csrf().disable();
34 http.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS);
35
36 http.authorizeRequests()
37 .and()
38 .authorizeRequests()
39 .antMatchers("/user/**")
40 .hasAnyAuthority("USER","ADMIN", "SUPERADMIN")
41 .and()
42 .authorizeRequests()
43 .antMatchers("/management/**")
44 .hasAnyAuthority("SUPERADMIN")
45 .and()
46 .authorizeRequests()
47 .antMatchers("/admin/**")
48 .hasAnyAuthority("ADMIN","SUPERADMIN")
49 .anyRequest().permitAll();
50
51
52
53 http.addFilter(new CustomAuthenticationFilter(authenticationManagerBean()));
54 http.addFilterBefore(new CustomAuthorizationFilter(), UsernamePasswordAuthenticationFilter.class);
55
56 }
57
58 @Override
59 protected void configure(AuthenticationManagerBuilder auth) throws Exception {
60 auth.authenticationProvider(daoAuthenticationProvider());
61 }
62
63 @Bean
64 @Override
65 public AuthenticationManager authenticationManagerBean() throws Exception {
66 return super.authenticationManagerBean();
67 }
68
69 public DaoAuthenticationProvider daoAuthenticationProvider(){
70 DaoAuthenticationProvider provider = new DaoAuthenticationProvider();
71 provider.setPasswordEncoder(bCryptPasswordEncoder);
72 provider.setUserDetailsService(userService);
73 return provider;
74 }
75
76}
Note: See TracBrowser for help on using the repository browser.