feat(user/dto): añadida validación para contraseña segura en UserInputDto

parent d23c882f
......@@ -13,6 +13,7 @@ import com.example.apprecetas.user.infrastructure.mapper.UserMapper;
import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor;
import org.mapstruct.factory.Mappers;
import org.springframework.context.support.DefaultMessageSourceResolvable;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.security.crypto.password.PasswordEncoder;
......@@ -73,7 +74,7 @@ public class AuthController {
BindingResult result) {
if (result.hasErrors()) {
String errorMsg = result.getFieldErrors().stream()
.map(fieldError -> fieldError.getField() + ": " + fieldError.getDefaultMessage())
.map(DefaultMessageSourceResolvable::getDefaultMessage)
.collect(Collectors.joining("; "));
throw new UnprocessableEntityException(errorMsg);
}
......
......@@ -2,6 +2,7 @@ package com.example.apprecetas.user.infrastructure.controller.dto.input;
import jakarta.validation.constraints.Email;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.Pattern;
import jakarta.validation.constraints.Size;
import lombok.AllArgsConstructor;
import lombok.Data;
......@@ -12,17 +13,22 @@ import lombok.NoArgsConstructor;
@NoArgsConstructor
public class UserInputDto {
@NotBlank(message = "El nombre no debe estar vacío")
@Size(min = 2, max = 20, message = "El nombre debe tener entre 2 y 20 caracteres")
private String name;
@Size(min = 6, max = 20, message = "Los apellidos deben tener entre 6 y 20 caracteres")
@NotBlank(message = "El campo apellidos no debe estar vacío")
@Size(min = 6, max = 30, message = "Los apellidos deben tener entre 6 y 20 caracteres")
private String surname;
@Email(message = "El email debe tener formato de correo electrónico")
@NotBlank(message = "El email no debe estar vacío")
private String email;
@NotBlank(message = "La contraseña no debe estar vacía")
@Size(min = 8, message = "La contraseña debe tener al menos 8 caracteres")
@Pattern(regexp = "^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)(?=.*[@#$.%`&+=!*:;,?-])\\S+$",
message = "La contraseña debe contener al menos una letra minúscula, una mayúscula, un número y un carácter especial (sin espacios)")
private String password;
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment