@ -1,4 +1,8 @@ | |||
package com.cristobalbernal.foro.Respositorios; | |||
public interface ICategoriaForo { | |||
import com.cristobalbernal.foro.Entidades.CategoriaForoEntity; | |||
import org.springframework.data.jpa.repository.JpaRepository; | |||
public interface ICategoriaForo extends JpaRepository<CategoriaForoEntity,Integer> { | |||
} |
@ -0,0 +1,28 @@ | |||
package com.cristobalbernal.foro.Servicios; | |||
import com.cristobalbernal.foro.Entidades.Foro; | |||
import com.cristobalbernal.foro.Entidades.UsersEntity; | |||
import com.cristobalbernal.foro.Respositorios.IForo; | |||
import com.cristobalbernal.foro.Respositorios.IUsers; | |||
import org.springframework.beans.factory.annotation.Autowired; | |||
import org.springframework.stereotype.Service; | |||
import java.util.List; | |||
@Service | |||
public class ServicioUser { | |||
@Autowired | |||
private IUsers iUsers; | |||
public List<UsersEntity> init(){ | |||
return iUsers.findAll(); | |||
} | |||
/* | |||
public UsersEntity findById(long id){ | |||
return iUsers.findById((int) id).orElse(null); | |||
} | |||
*/ | |||
} |
@ -1,44 +0,0 @@ | |||
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/{id}").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); | |||
} | |||
} |
@ -0,0 +1,59 @@ | |||
package com.cristobalbernal.foro.seguridad; | |||
import com.cristobalbernal.foro.seguridad.models.CustomUserDetailService; | |||
import org.springframework.context.annotation.Bean; | |||
import org.springframework.context.annotation.Configuration; | |||
import org.springframework.security.authentication.dao.DaoAuthenticationProvider; | |||
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.crypto.bcrypt.BCryptPasswordEncoder; | |||
import org.springframework.security.crypto.password.PasswordEncoder; | |||
import org.springframework.security.web.SecurityFilterChain; | |||
@Configuration | |||
@EnableWebSecurity | |||
public class SegurityConfig { | |||
@Bean | |||
public CustomUserDetailService userDetailsService(){ | |||
return new CustomUserDetailService(); | |||
} | |||
@Bean | |||
public PasswordEncoder passwordEncoder() { | |||
return new BCryptPasswordEncoder(); | |||
} | |||
@Bean | |||
public DaoAuthenticationProvider authenticationProvider() { | |||
DaoAuthenticationProvider authProvider = new DaoAuthenticationProvider(); | |||
authProvider.setUserDetailsService(userDetailsService()); | |||
authProvider.setPasswordEncoder(passwordEncoder()); | |||
return authProvider; | |||
} | |||
@Bean | |||
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { | |||
http | |||
.authorizeHttpRequests() | |||
.requestMatchers("/crearPregunta","/miperfil").authenticated() | |||
.anyRequest().permitAll() | |||
.and() | |||
.formLogin() | |||
.usernameParameter("email") | |||
.loginPage("/login") | |||
.defaultSuccessUrl("/home") | |||
.permitAll() | |||
.and() | |||
.logout(LogoutConfigurer::permitAll); | |||
return http.build(); | |||
} | |||
} |
@ -0,0 +1,23 @@ | |||
package com.cristobalbernal.foro.seguridad.models; | |||
import com.cristobalbernal.foro.Entidades.UsersEntity; | |||
import com.cristobalbernal.foro.Respositorios.IUsers; | |||
import org.springframework.beans.factory.annotation.Autowired; | |||
import org.springframework.security.core.userdetails.UserDetails; | |||
import org.springframework.security.core.userdetails.UserDetailsService; | |||
import org.springframework.security.core.userdetails.UsernameNotFoundException; | |||
import java.util.ArrayList; | |||
public class CustomUserDetailService implements UserDetailsService { | |||
@Autowired | |||
private IUsers iUsers; | |||
@Override | |||
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException { | |||
UsersEntity users = iUsers.findByEmail(username); | |||
return new CustomUserDetails(users); | |||
} | |||
} |
@ -0,0 +1,53 @@ | |||
package com.cristobalbernal.foro.seguridad.models; | |||
import com.cristobalbernal.foro.Entidades.UsersEntity; | |||
import org.springframework.context.annotation.Bean; | |||
import org.springframework.security.core.GrantedAuthority; | |||
import org.springframework.security.core.userdetails.UserDetails; | |||
import java.util.Collection; | |||
public class CustomUserDetails implements UserDetails { | |||
private final UsersEntity user; | |||
public CustomUserDetails(UsersEntity user) { | |||
this.user = user; | |||
} | |||
@Override | |||
public Collection<? extends GrantedAuthority> getAuthorities() { | |||
return null; | |||
} | |||
@Override | |||
public String getPassword() { | |||
return user.getPassword(); | |||
} | |||
@Override | |||
public String getUsername() { | |||
return user.getEmail(); | |||
} | |||
@Override | |||
public boolean isAccountNonExpired() { | |||
return true; | |||
} | |||
@Override | |||
public boolean isAccountNonLocked() { | |||
return true; | |||
} | |||
@Override | |||
public boolean isCredentialsNonExpired() { | |||
return true; | |||
} | |||
@Override | |||
public boolean isEnabled() { | |||
return true; | |||
} | |||
} |