jpe-controle/FencerJudgeBack/src/main/kotlin/fr/teamflash/fencerjudgeback/config/ConfigSecurity.kt
2025-06-03 10:53:50 +02:00

56 lines
2 KiB
Kotlin

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)
}
}