43 lines
1.4 KiB
Java
43 lines
1.4 KiB
Java
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);
|
|
}
|
|
}
|