changes: api/usuarios/registrar para que admita solo un rol y los roles esten en la base de datos

This commit is contained in:
2026-02-14 12:13:59 -04:00
parent e5b699945c
commit a6a3b5a971
6 changed files with 80 additions and 4 deletions

View File

@@ -1,7 +1,9 @@
package com.example.fercoganbackend.service;
import com.example.fercoganbackend.entity.Rol;
import com.example.fercoganbackend.entity.Roles;
import com.example.fercoganbackend.entity.Usuario;
import com.example.fercoganbackend.otros.ConfirmadoTF;
import com.example.fercoganbackend.repository.RolesRepository;
import com.example.fercoganbackend.repository.UsuarioRepository;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.stereotype.Service;
@@ -12,20 +14,25 @@ import java.util.Set;
public class UsuarioService {
private final UsuarioRepository repo;
private final PasswordEncoder encoder;
private final RolesRepository rolesRepository;
public List<Usuario> getAll(){
return repo.findAll();
}
public UsuarioService(UsuarioRepository repo, PasswordEncoder encoder) {
public UsuarioService(UsuarioRepository repo, PasswordEncoder encoder, RolesRepository rolesRepository) {
this.repo = repo;
this.encoder = encoder;
this.rolesRepository = rolesRepository;
}
public Usuario registrarUsuario(String username, String password, Set<Rol> roles) {
public Usuario registrarUsuario(String username, String password, Set<Rol> roles, Long rolId) {
Roles rol = rolesRepository.findById(rolId)
.orElseThrow(() -> new RuntimeException("Rol no encontrado"));
Usuario u = new Usuario();
u.setUsername(username);
u.setPassword(encoder.encode(password));
u.setRoles(roles);
u.setRol(rol);
u.setAprobado(false); // no aprobado hasta aceptación
return repo.save(u);
}
@@ -82,6 +89,12 @@ public class UsuarioService {
return usuario.getId();
}
public Long obtenerIdRolPorUsername(String username) {
return repo.findByUsername(username)
.map(usuario -> usuario.getRol().getId()) // Navega: Usuario -> Rol -> Id
.orElse(null); // O podrías lanzar una excepción si el usuario no existe
}
}