package fr.teamflash.fencerjudgeback.config import org.springframework.beans.factory.annotation.Autowired import org.springframework.context.annotation.Bean import org.springframework.context.annotation.Configuration import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder import org.springframework.security.config.annotation.web.builders.HttpSecurity import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity import org.springframework.security.core.userdetails.User import org.springframework.security.core.userdetails.UserDetailsService import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder import org.springframework.security.provisioning.InMemoryUserDetailsManager import org.springframework.security.web.SecurityFilterChain @Configuration @EnableWebSecurity class SecurityConfig { @Autowired open fun configureGlobal(auth: AuthenticationManagerBuilder) { val encoder = BCryptPasswordEncoder() //Créer des utilisateurs fixes auth.inMemoryAuthentication() .passwordEncoder(encoder) .withUser("aaa") .password(encoder.encode("bbb")) .roles("USER") .and() .withUser("Admin") .password(encoder.encode("Admin")) .roles("ADMIN") } @Bean open fun securityFilterChain(http: HttpSecurity): SecurityFilterChain { http.authorizeHttpRequests { authorize -> authorize.requestMatchers("/ws/*").authenticated() .anyRequest().permitAll() } .httpBasic { } .formLogin { } .csrf { it.disable() } return http.build() } @Bean fun userDetailsService(): UserDetailsService { val user = User.withUsername("user") .password("{noop}password") // {noop} = pas de hash pour dev .roles("USER") .build() return InMemoryUserDetailsManager(user) } }