auth listo y contador terminados
This commit is contained in:
@@ -0,0 +1,33 @@
|
||||
package com.example.fercoganbackend.service;
|
||||
|
||||
// ContadorService.java
|
||||
import org.springframework.stereotype.Service;
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
|
||||
@Service
|
||||
public class ContadorService {
|
||||
private final AtomicInteger contador = new AtomicInteger(200);
|
||||
private boolean sw = true;
|
||||
|
||||
public int incrementar() {
|
||||
int valorActual = contador.get();
|
||||
int incremento;
|
||||
if (valorActual < 300) {
|
||||
incremento = sw ? 20 : 30;
|
||||
sw = !sw; // alterna el booleano
|
||||
} else if (valorActual < 1000) {
|
||||
incremento = 50;
|
||||
} else if (valorActual < 2000) {
|
||||
incremento = 100;
|
||||
} else {
|
||||
incremento = 500;
|
||||
}
|
||||
return contador.getAndAdd(incremento);
|
||||
}
|
||||
|
||||
|
||||
public int getContador() {
|
||||
return contador.get();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,47 @@
|
||||
package com.example.fercoganbackend.service;
|
||||
|
||||
import com.example.fercoganbackend.entity.Usuario;
|
||||
import com.example.fercoganbackend.otros.UsuarioPrincipal;
|
||||
import com.example.fercoganbackend.repository.UsuarioRepository;
|
||||
import org.springframework.security.core.authority.SimpleGrantedAuthority;
|
||||
import org.springframework.security.core.userdetails.UserDetails;
|
||||
import org.springframework.security.core.userdetails.UserDetailsService;
|
||||
import org.springframework.security.core.userdetails.UsernameNotFoundException;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
|
||||
@Service
|
||||
public class UsuarioDetailsService implements UserDetailsService {
|
||||
|
||||
private final UsuarioRepository usuarioRepository;
|
||||
private final Logger logger = LoggerFactory.getLogger(UsuarioDetailsService.class);
|
||||
|
||||
public UsuarioDetailsService(UsuarioRepository usuarioRepository) {
|
||||
this.usuarioRepository = usuarioRepository;
|
||||
}
|
||||
|
||||
@Override
|
||||
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
|
||||
logger.info("Intentando autenticar usuario: {}", username);
|
||||
|
||||
Usuario usuario = usuarioRepository.findByUsername(username)
|
||||
.orElseThrow(() -> {
|
||||
logger.warn("Usuario no encontrado: {}", username);
|
||||
return new UsernameNotFoundException("Usuario no encontrado");
|
||||
});
|
||||
|
||||
logger.info("Usuario encontrado: {}, aprobado: {}", usuario.getUsername(), usuario.isAprobado());
|
||||
logger.info("Roles del usuario: {}", usuario.getRoles());
|
||||
|
||||
return new org.springframework.security.core.userdetails.User(
|
||||
usuario.getUsername(),
|
||||
usuario.getPassword(),
|
||||
usuario.isAprobado(), true, true, true,
|
||||
usuario.getRoles().stream()
|
||||
.map(r -> new SimpleGrantedAuthority(r.name()))
|
||||
.toList()
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,42 @@
|
||||
package com.example.fercoganbackend.service;
|
||||
import com.example.fercoganbackend.entity.Rol;
|
||||
import com.example.fercoganbackend.entity.Usuario;
|
||||
import com.example.fercoganbackend.repository.UsuarioRepository;
|
||||
import org.springframework.security.crypto.password.PasswordEncoder;
|
||||
import org.springframework.stereotype.Service;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
@Service
|
||||
public class UsuarioService {
|
||||
private final UsuarioRepository repo;
|
||||
private final PasswordEncoder encoder;
|
||||
|
||||
public UsuarioService(UsuarioRepository repo, PasswordEncoder encoder) {
|
||||
this.repo = repo;
|
||||
this.encoder = encoder;
|
||||
}
|
||||
|
||||
public Usuario registrarUsuario(String username, String password, Set<Rol> roles) {
|
||||
Usuario u = new Usuario();
|
||||
u.setUsername(username);
|
||||
u.setPassword(encoder.encode(password));
|
||||
u.setRoles(roles);
|
||||
u.setAprobado(false); // no aprobado hasta aceptación
|
||||
return repo.save(u);
|
||||
}
|
||||
|
||||
public List<Usuario> listarPendientes() {
|
||||
return repo.findAll().stream().filter(u -> !u.isAprobado()).toList();
|
||||
}
|
||||
|
||||
public Usuario aceptarUsuario(Long id) {
|
||||
Usuario u = repo.findById(id).orElseThrow();
|
||||
u.setAprobado(true);
|
||||
return repo.save(u);
|
||||
}
|
||||
|
||||
public boolean estaAprobado(String username) {
|
||||
return repo.findByUsername(username).map(Usuario::isAprobado).orElse(false);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user