class SpringSecurityConfig {

    public SpringSecurityConfig() {
        super();
    }


    @Bean
    public SecurityFilterChain filterChain(final HttpSecurity http) throws Exception {<FILL_FUNCTION_BODY>}


    @Bean
    public InMemoryUserDetailsManager userDetailsService() {
        return new InMemoryUserDetailsManager(
                User.withUsername("jim").password("{noop}demo").roles("ADMIN").build(),
                User.withUsername("bob").password("{noop}demo").roles("USER").build(),
                User.withUsername("ted").password("{noop}demo").roles("USER","ADMIN").build());
    }


}

        http
            .formLogin(formLogin -> formLogin
                    .loginPage("/login.html")
                    .failureUrl("/login-error.html"))
            .logout(logout -> logout
                    .logoutSuccessUrl("/index.html"))
            .authorizeHttpRequests(authorize -> authorize
                    .requestMatchers(
                            new AntPathRequestMatcher("/"),
                            new AntPathRequestMatcher("/index.html"),
                            new AntPathRequestMatcher("/login.html"),
                            new AntPathRequestMatcher("/css/**"),
                            new AntPathRequestMatcher("/favicon.ico")).permitAll()
                    .requestMatchers(new AntPathRequestMatcher("/admin/**")).hasRole("ADMIN")
                    .requestMatchers(new AntPathRequestMatcher("/user/**")).hasRole("USER")
                    .requestMatchers(new AntPathRequestMatcher("/shared/**")).hasAnyRole("USER","ADMIN")
                    .anyRequest().authenticated())
            .exceptionHandling(handling -> handling
                    .accessDeniedPage("/403.html"));
        return http.build();
    
<no_super_class>