changes: api/usuarios/registrar para que admita solo un rol y los roles esten en la base de datos
This commit is contained in:
@@ -43,6 +43,7 @@ public class SecurityConfig {
|
|||||||
.requestMatchers("/ws/**").permitAll() // WebSocket
|
.requestMatchers("/ws/**").permitAll() // WebSocket
|
||||||
.requestMatchers("/auth/**").permitAll()
|
.requestMatchers("/auth/**").permitAll()
|
||||||
.requestMatchers("/favicon.ico", "/error", "/static/**", "/contador/**", "/api/**").permitAll()
|
.requestMatchers("/favicon.ico", "/error", "/static/**", "/contador/**", "/api/**").permitAll()
|
||||||
|
.requestMatchers("/admin/**").hasRole("ADMIN")
|
||||||
.anyRequest().authenticated()
|
.anyRequest().authenticated()
|
||||||
)
|
)
|
||||||
.httpBasic(Customizer.withDefaults());
|
.httpBasic(Customizer.withDefaults());
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package com.example.fercoganbackend.controller;
|
package com.example.fercoganbackend.controller;
|
||||||
|
|
||||||
import com.example.fercoganbackend.entity.Rol;
|
import com.example.fercoganbackend.entity.Rol;
|
||||||
|
import com.example.fercoganbackend.entity.Roles;
|
||||||
import com.example.fercoganbackend.entity.Usuario;
|
import com.example.fercoganbackend.entity.Usuario;
|
||||||
import com.example.fercoganbackend.otros.ConfirmadoTF;
|
import com.example.fercoganbackend.otros.ConfirmadoTF;
|
||||||
import com.example.fercoganbackend.service.UsuarioService;
|
import com.example.fercoganbackend.service.UsuarioService;
|
||||||
@@ -31,7 +32,7 @@ public class UserController {
|
|||||||
// ✅ Registrar nuevo usuario
|
// ✅ Registrar nuevo usuario
|
||||||
@PostMapping("/registrar")
|
@PostMapping("/registrar")
|
||||||
public Usuario registrarUsuario(@RequestBody UsuarioRequest request) {
|
public Usuario registrarUsuario(@RequestBody UsuarioRequest request) {
|
||||||
return service.registrarUsuario(request.getUsername(), request.getPassword(), request.getRoles());
|
return service.registrarUsuario(request.getUsername(), request.getPassword(), request.getRoles(), request.getRol() );
|
||||||
}
|
}
|
||||||
|
|
||||||
// ✅ Listar usuarios pendientes (no aprobados)
|
// ✅ Listar usuarios pendientes (no aprobados)
|
||||||
@@ -85,11 +86,21 @@ public class UserController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// ✅ DTO interno para registro
|
// ✅ DTO interno para registro
|
||||||
public static class UsuarioRequest {
|
public static class UsuarioRequest {
|
||||||
private String username;
|
private String username;
|
||||||
private String password;
|
private String password;
|
||||||
private Set<Rol> roles;
|
private Set<Rol> roles; //ignora esto
|
||||||
|
private Long rolId;
|
||||||
|
|
||||||
|
public Long getRol() {
|
||||||
|
return rolId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setRol(Long rol) {
|
||||||
|
this.rolId = rol;
|
||||||
|
}
|
||||||
|
|
||||||
public String getUsername() {
|
public String getUsername() {
|
||||||
return username;
|
return username;
|
||||||
|
|||||||
32
src/main/java/com/example/fercoganbackend/entity/Roles.java
Normal file
32
src/main/java/com/example/fercoganbackend/entity/Roles.java
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
package com.example.fercoganbackend.entity;
|
||||||
|
|
||||||
|
import jakarta.persistence.Entity;
|
||||||
|
import jakarta.persistence.GeneratedValue;
|
||||||
|
import jakarta.persistence.GenerationType;
|
||||||
|
import jakarta.persistence.Id;
|
||||||
|
|
||||||
|
@Entity
|
||||||
|
public class Roles {
|
||||||
|
|
||||||
|
@Id
|
||||||
|
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||||
|
private Long Id;
|
||||||
|
|
||||||
|
private String name;
|
||||||
|
|
||||||
|
public String getName() {
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setName(String name) {
|
||||||
|
this.name = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Long getId() {
|
||||||
|
return Id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setId(Long id) {
|
||||||
|
Id = id;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -19,11 +19,23 @@ public class Usuario {
|
|||||||
@Enumerated(EnumType.STRING)
|
@Enumerated(EnumType.STRING)
|
||||||
private Set<Rol> roles; // aquí consumes el enum
|
private Set<Rol> roles; // aquí consumes el enum
|
||||||
|
|
||||||
|
@ManyToOne
|
||||||
|
@JoinColumn(name = "RolId")
|
||||||
|
private Roles rol;
|
||||||
|
|
||||||
private Boolean visible = true;
|
private Boolean visible = true;
|
||||||
|
|
||||||
// getters y setters
|
// getters y setters
|
||||||
|
|
||||||
|
|
||||||
|
public Roles getRol() {
|
||||||
|
return rol;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setRol(Roles rol) {
|
||||||
|
this.rol = rol;
|
||||||
|
}
|
||||||
|
|
||||||
public Boolean getVisible() {
|
public Boolean getVisible() {
|
||||||
return visible;
|
return visible;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,7 @@
|
|||||||
|
package com.example.fercoganbackend.repository;
|
||||||
|
|
||||||
|
import com.example.fercoganbackend.entity.Roles;
|
||||||
|
import org.springframework.data.jpa.repository.JpaRepository;
|
||||||
|
|
||||||
|
public interface RolesRepository extends JpaRepository<Roles, Long> {
|
||||||
|
}
|
||||||
@@ -1,7 +1,9 @@
|
|||||||
package com.example.fercoganbackend.service;
|
package com.example.fercoganbackend.service;
|
||||||
import com.example.fercoganbackend.entity.Rol;
|
import com.example.fercoganbackend.entity.Rol;
|
||||||
|
import com.example.fercoganbackend.entity.Roles;
|
||||||
import com.example.fercoganbackend.entity.Usuario;
|
import com.example.fercoganbackend.entity.Usuario;
|
||||||
import com.example.fercoganbackend.otros.ConfirmadoTF;
|
import com.example.fercoganbackend.otros.ConfirmadoTF;
|
||||||
|
import com.example.fercoganbackend.repository.RolesRepository;
|
||||||
import com.example.fercoganbackend.repository.UsuarioRepository;
|
import com.example.fercoganbackend.repository.UsuarioRepository;
|
||||||
import org.springframework.security.crypto.password.PasswordEncoder;
|
import org.springframework.security.crypto.password.PasswordEncoder;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
@@ -12,20 +14,25 @@ import java.util.Set;
|
|||||||
public class UsuarioService {
|
public class UsuarioService {
|
||||||
private final UsuarioRepository repo;
|
private final UsuarioRepository repo;
|
||||||
private final PasswordEncoder encoder;
|
private final PasswordEncoder encoder;
|
||||||
|
private final RolesRepository rolesRepository;
|
||||||
|
|
||||||
public List<Usuario> getAll(){
|
public List<Usuario> getAll(){
|
||||||
return repo.findAll();
|
return repo.findAll();
|
||||||
}
|
}
|
||||||
public UsuarioService(UsuarioRepository repo, PasswordEncoder encoder) {
|
public UsuarioService(UsuarioRepository repo, PasswordEncoder encoder, RolesRepository rolesRepository) {
|
||||||
this.repo = repo;
|
this.repo = repo;
|
||||||
this.encoder = encoder;
|
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();
|
Usuario u = new Usuario();
|
||||||
u.setUsername(username);
|
u.setUsername(username);
|
||||||
u.setPassword(encoder.encode(password));
|
u.setPassword(encoder.encode(password));
|
||||||
u.setRoles(roles);
|
u.setRoles(roles);
|
||||||
|
u.setRol(rol);
|
||||||
u.setAprobado(false); // no aprobado hasta aceptación
|
u.setAprobado(false); // no aprobado hasta aceptación
|
||||||
return repo.save(u);
|
return repo.save(u);
|
||||||
}
|
}
|
||||||
@@ -82,6 +89,12 @@ public class UsuarioService {
|
|||||||
return usuario.getId();
|
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
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user