@@ -3,6 +3,7 @@ package ru.soune.nocopy.dto;
|
||||
public enum MessageCode {
|
||||
SUCCESS(0, "Operation successful"),
|
||||
REG_EMAIL_EXISTS(1, "Email already registered"),
|
||||
REG_EMAIL_OR_PHONE_EXISTS(1, "Email or phone already registered"),
|
||||
INVALID_FIELD(2, "Invalid field"),
|
||||
INVALID_JSON_BODY(2, "Invalid fields in JSON object"),
|
||||
MSG_ID_NOT_FOUND(4, "Message id not found"),
|
||||
|
||||
@@ -42,6 +42,7 @@ public class User {
|
||||
private String password;
|
||||
|
||||
@Size(min = 11, max = 14)
|
||||
@Column(unique = true)
|
||||
private String phone;
|
||||
|
||||
@Enumerated(EnumType.STRING)
|
||||
|
||||
@@ -33,13 +33,15 @@ public class RegRequestHandler implements RequestHandler {
|
||||
public BaseResponse handle(BaseRequest request) throws ValidationException {
|
||||
RegRequest regRequest = objectMapper.convertValue(request.getMessageBody(), RegRequest.class);
|
||||
|
||||
if (userRepository.existsByEmail(regRequest.getEmail())) {
|
||||
if (userRepository.existsByEmail(regRequest.getEmail()) || userRepository.existsByPhone(regRequest.getPhone())) {
|
||||
RegAnswer regAnswer = new RegAnswer();
|
||||
regAnswer.setFieldErrors(Arrays.asList(Map.of("email", regRequest.getEmail())));
|
||||
regAnswer.setFieldErrors(Arrays.asList(Map.of("phone", regRequest.getPhone())));
|
||||
|
||||
throw new NotValidFieldException("User already exists with email: " + regRequest.getEmail(),
|
||||
new BaseResponse(request.getMsgId(), MessageCode.REG_EMAIL_EXISTS.getCode(),
|
||||
MessageCode.REG_EMAIL_EXISTS.getDescription(), regAnswer));
|
||||
throw new NotValidFieldException("User already exists with email:" + regRequest.getEmail() + " or phone: " +
|
||||
regRequest.getPhone(), new BaseResponse(request.getMsgId(),
|
||||
MessageCode.REG_EMAIL_OR_PHONE_EXISTS.getCode(),
|
||||
MessageCode.REG_EMAIL_OR_PHONE_EXISTS.getDescription(), regAnswer));
|
||||
}
|
||||
|
||||
BindingResult bindingResult = new BeanPropertyBindingResult(regRequest, "regRequest");
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package ru.soune.nocopy.repository;
|
||||
|
||||
import jakarta.validation.constraints.Size;
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
import ru.soune.nocopy.entity.User;
|
||||
|
||||
@@ -8,4 +9,5 @@ import java.util.Optional;
|
||||
public interface UserRepository extends JpaRepository<User, Long> {
|
||||
Optional<User> findByEmail(String email);
|
||||
boolean existsByEmail(String email);
|
||||
boolean existsByPhone(@Size(min = 11, max = 14) String phone);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user