diff --git a/pom.xml b/pom.xml index be1615d..b9f5a77 100644 --- a/pom.xml +++ b/pom.xml @@ -59,9 +59,6 @@ 6.2.0 - - - org.springframework.boot spring-boot-devtools @@ -73,6 +70,17 @@ spring-boot-starter-test test + + org.springframework.boot + spring-boot-starter-security + + + org.springframework.security + spring-security-test + test + + + diff --git a/src/main/java/com/cristobalbernal/foro/controlador/Controlador.java b/src/main/java/com/cristobalbernal/foro/controlador/Controlador.java index 89816a5..f9e0bc9 100644 --- a/src/main/java/com/cristobalbernal/foro/controlador/Controlador.java +++ b/src/main/java/com/cristobalbernal/foro/controlador/Controlador.java @@ -15,15 +15,12 @@ public class Controlador { @Autowired private ServicioRespuestas servicioRespuestas; - @GetMapping({"/entrar/{usuario}", "/entrar", "/usuario/{usuario}", "/usuario"}) - public String login(@PathVariable(name = "usuario", required = false) String usuario, - Model model) throws MalformedURLException { - model.addAttribute("titulo", "Panel de control"); - model.addAttribute("usuario", usuario); - return "admin/login"; + @GetMapping("/miperfil") + public String login(){ + return "login/login"; } - @GetMapping("/home") + @GetMapping({"","/home","/"}) public String indice(Model model){ model.addAttribute("listaRespuestas",servicioRespuestas.findAll()); return "index"; diff --git a/src/main/java/com/cristobalbernal/foro/seguridad/ConfigSeguridad.java b/src/main/java/com/cristobalbernal/foro/seguridad/ConfigSeguridad.java new file mode 100644 index 0000000..49814f6 --- /dev/null +++ b/src/main/java/com/cristobalbernal/foro/seguridad/ConfigSeguridad.java @@ -0,0 +1,44 @@ +package com.cristobalbernal.foro.seguridad; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +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.configurers.LogoutConfigurer; +import org.springframework.security.core.userdetails.User; +import org.springframework.security.core.userdetails.UserDetails; +import org.springframework.security.core.userdetails.UserDetailsService; +import org.springframework.security.provisioning.InMemoryUserDetailsManager; +import org.springframework.security.web.SecurityFilterChain; + +@Configuration +@EnableWebSecurity +public class ConfigSeguridad { + @Bean + public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { + http + .authorizeHttpRequests((requests) -> requests + .requestMatchers("","/home","/","/registrar","/css/**","/image/**","/fonts/**","js/**","/postdetall").permitAll() + .anyRequest().authenticated() + ) + .formLogin((form) -> form + .loginPage("/login") + .permitAll() + ) + .logout(LogoutConfigurer::permitAll); + + return http.build(); + } + + @Bean + public UserDetailsService userDetailsService() { + UserDetails user = + User.withDefaultPasswordEncoder() + .username("tobal") + .password("1234") + .roles("USER") + .build(); + + return new InMemoryUserDetailsManager(user); + } +} diff --git a/src/main/java/com/cristobalbernal/foro/seguridad/MvcConfig.java b/src/main/java/com/cristobalbernal/foro/seguridad/MvcConfig.java new file mode 100644 index 0000000..4167e58 --- /dev/null +++ b/src/main/java/com/cristobalbernal/foro/seguridad/MvcConfig.java @@ -0,0 +1,17 @@ +package com.cristobalbernal.foro.seguridad; + +import org.springframework.context.annotation.Configuration; +import org.springframework.web.servlet.config.annotation.ViewControllerRegistration; +import org.springframework.web.servlet.config.annotation.ViewControllerRegistry; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; + +@Configuration +public class MvcConfig implements WebMvcConfigurer { + @Override + public void addViewControllers(ViewControllerRegistry registration){ + registration.addViewController("/").setViewName("inicio"); + registration.addViewController("/crearPregunta").setViewName("crearPregunta"); + registration.addViewController("/login").setViewName("login"); + + } +} diff --git a/src/main/resources/templates/admin/login.html b/src/main/resources/templates/login/login.html similarity index 86% rename from src/main/resources/templates/admin/login.html rename to src/main/resources/templates/login/login.html index b030432..f003375 100644 --- a/src/main/resources/templates/admin/login.html +++ b/src/main/resources/templates/login/login.html @@ -24,17 +24,15 @@ - - diff --git a/src/main/resources/templates/menu/menu.html b/src/main/resources/templates/menu/menu.html index 1e60fd6..5b41ba5 100644 --- a/src/main/resources/templates/menu/menu.html +++ b/src/main/resources/templates/menu/menu.html @@ -13,7 +13,7 @@