package com.tarento.retail.config; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.security.authentication.AuthenticationManager; 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.config.http.SessionCreationPolicy; import org.springframework.security.core.userdetails.UserDetailsService; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter; import com.tarento.retail.util.PathRoutes; import javax.annotation.Resource; @Configuration @EnableWebSecurity @EnableGlobalMethodSecurity(prePostEnabled = true) public class WebSecurityConfig extends WebSecurityConfigurerAdapter { @Resource(name = "userService") private UserDetailsService userDetailsService; @Autowired private JwtAuthenticationEntryPoint unauthorizedHandler; @Override @Bean public AuthenticationManager authenticationManagerBean() throws Exception { return super.authenticationManagerBean(); } @Autowired public void globalUserDetails(AuthenticationManagerBuilder auth) throws Exception { auth.userDetailsService(userDetailsService).passwordEncoder(encoder()); } @Bean public JwtAuthenticationFilter authenticationTokenFilterBean() throws Exception { return new JwtAuthenticationFilter(); } @Override protected void configure(HttpSecurity http) throws Exception { http.cors().and().csrf().disable().authorizeRequests() .antMatchers("/login", "/signup", "/user/role/mapping/delete", "/user/org/getCountryList", "/user/getCountryList", "/token/validate", "/user/role/mapping", "/user/tokenValidate", "/user/createOrUpdateCountry", "/user/createOrUpdate", "/user", "/user/getAllUser", "/user/add/role", "/user/roles/{orgId}", "/user/user/{id}", "/images", "/user/actions/_get", "/getUserDetails", "/getNumberOfUsers", "/upload", "/user/deleteCountry", "/user/deleteRole", "/user/deleteUser", "/user/getMapActionToRole", "/user/getUnmapActionToRole", "/user/mapActionToRole", "/user/unmapActionToRole", "/user/getUsersByMasterRole", "/user/mapUserMasterRoleCountryOrg", "/user/getMasterRoleByOrgDomain", "/user/domainRole", "/user/getUsersByRole", "/user/addOrgDomainRoles","/user/createBulkInstitute", "/user/admin/deleteUser", "/v2/api-docs", "/configuration/ui", "/swagger-resources/**", "/configuration/security", "/swagger-ui.html", "/webjars/**", PathRoutes.USER_ACTIONS_URL + PathRoutes.UserRoutes.REQUEST_OTP, PathRoutes.AuthenticationRoutes.SIGN_IN, PathRoutes.USER_ACTIONS_URL + PathRoutes.UserRoutes.GENERATE_PIN) .permitAll().anyRequest().authenticated().and().exceptionHandling() .authenticationEntryPoint(unauthorizedHandler).and().sessionManagement() .sessionCreationPolicy(SessionCreationPolicy.STATELESS); http.addFilterBefore(authenticationTokenFilterBean(), UsernamePasswordAuthenticationFilter.class); } @Bean public BCryptPasswordEncoder encoder() { return new BCryptPasswordEncoder(); } }