package sklep.security;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.Customizer;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.web.SecurityFilterChain;

@Configuration
@EnableWebSecurity
public class SecurityConfig {

    // Metoda odpowiedzialna za ogólną konfigurację security aplikacj webowej, w tym:
    // - reguły autoryzacji, czyli kot może wykonywać jakie zapytania
    // - sposób uwierzytelniania
    //   (czy tradycyjny formularz logowania, czy HttpBasic, czy OAuth2, ...)
    
    // W tej wersji jawnie wpisujemy takie ustawienia, które są ustawieniami domyślnymi.
    @Bean
    SecurityFilterChain configHttpSecurity(HttpSecurity httpSecurity) throws Exception {
        httpSecurity.authorizeHttpRequests(authz -> authz
                .anyRequest().authenticated()
            ).formLogin(Customizer.withDefaults())
        ;
        return httpSecurity.build();
    }

}
