NCBACK-33 #16

Merged
backdev merged 13 commits from NCBACK-33 into dev 2026-01-27 09:11:31 +08:00
5 changed files with 40 additions and 25 deletions
Showing only changes of commit 4560925183 - Show all commits
@@ -24,7 +24,8 @@ public enum MessageCode {
AUTH_TOKEN_MISMATCH(4, "Token mismatch"), AUTH_TOKEN_MISMATCH(4, "Token mismatch"),
AUTH_TOKEN_NOT_FOUND(4, "Token not found"), AUTH_TOKEN_NOT_FOUND(4, "Token not found"),
FILE_NOT_FOUND(4, "File not found"), FILE_NOT_FOUND(4, "File not found"),
AUTH_PASSWORD_NOT_MATCHES(2, "Password does not match"); AUTH_PASSWORD_NOT_MATCHES(2, "Password does not match"),
SEND_EMAIL_EXCEPTION(2, "Send email exception"),;
private final Integer code; private final Integer code;
@@ -17,5 +17,9 @@ public class RegAnswer {
private boolean isVerified; private boolean isVerified;
private Long userId;
private String email;
private List<Map<String, String>> fieldErrors; private List<Map<String, String>> fieldErrors;
} }
@@ -61,14 +61,24 @@ public class RegRequestHandler implements RequestHandler {
AuthToken authToken = authService.register(regRequest); AuthToken authToken = authService.register(regRequest);
EmailVerificationToken emailToken = emailService.createEmailVerificationToken(authToken); EmailVerificationToken emailToken = emailService.createEmailVerificationToken(authToken);
try {
emailService.sendVerificationEmail(authToken.getUser(), emailToken.getToken()); emailService.sendVerificationEmail(authToken.getUser(), emailToken.getToken());
} catch (Exception e) {
return new BaseResponse(request.getMsgId(), MessageCode.SEND_EMAIL_EXCEPTION.getCode(),
MessageCode.SEND_EMAIL_EXCEPTION.getDescription(), Map.of(
"message", "not send",
"email", regRequest.getEmail()
));
}
String token = authToken.getToken(); String token = authToken.getToken();
authService.useUserAuthToken(token); authService.useUserAuthToken(token);
RegAnswer regAnswer = new RegAnswer(); RegAnswer regAnswer = new RegAnswer();
regAnswer.setToken(token);
regAnswer.setVerified(false); regAnswer.setVerified(false);
regAnswer.setActive(false); regAnswer.setActive(false);
regAnswer.setUserId(authToken.getUser().getId());
return new BaseResponse(request.getMsgId(), MessageCode.SUCCESS.getCode(), return new BaseResponse(request.getMsgId(), MessageCode.SUCCESS.getCode(),
MessageCode.SUCCESS.getDescription(), regAnswer); MessageCode.SUCCESS.getDescription(), regAnswer);
@@ -1,6 +1,7 @@
package ru.soune.nocopy.handler; package ru.soune.nocopy.handler;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import jakarta.mail.MessagingException;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
@@ -21,6 +22,7 @@ import ru.soune.nocopy.service.mail.EmailService;
import ru.soune.nocopy.service.register.AuthService; import ru.soune.nocopy.service.register.AuthService;
import ru.soune.nocopy.service.user.UserService; import ru.soune.nocopy.service.user.UserService;
import java.io.IOException;
import java.util.Map; import java.util.Map;
import java.util.Optional; import java.util.Optional;
@@ -43,7 +45,7 @@ public class VerifyRegisterUserHandler implements RequestHandler {
private final AuthService authService; private final AuthService authService;
@Override @Override
public BaseResponse handle(BaseRequest request) { public BaseResponse handle(BaseRequest request) throws MessagingException, IOException {
VerifyUserRequest verifyUserRequest = objectMapper.convertValue(request.getMessageBody(), VerifyUserRequest.class); VerifyUserRequest verifyUserRequest = objectMapper.convertValue(request.getMessageBody(), VerifyUserRequest.class);
Long userId = verifyUserRequest.getUserId(); Long userId = verifyUserRequest.getUserId();
@@ -62,7 +64,7 @@ public class VerifyRegisterUserHandler implements RequestHandler {
return handleVerify(request, user, authToken, verifyUserRequest.getVerifyToken()); return handleVerify(request, user, authToken, verifyUserRequest.getVerifyToken());
} }
private BaseResponse handleResend(BaseRequest request, User user, AuthToken authToken) { private BaseResponse handleResend(BaseRequest request, User user, AuthToken authToken) throws MessagingException, IOException {
EmailVerificationToken token = emailVerificationTokenRepository.findByUserId(user.getId()); EmailVerificationToken token = emailVerificationTokenRepository.findByUserId(user.getId());
@@ -70,7 +72,8 @@ public class VerifyRegisterUserHandler implements RequestHandler {
emailService.sendVerificationEmail(user, token.getToken()); emailService.sendVerificationEmail(user, token.getToken());
log.info("Verification token resent for user {}", user.getEmail()); log.info("Verification token resent for user {}", user.getEmail());
return successResponse(request, authToken, "Verification code has been resent", false, false); return successResponse(request, authToken, "Verification code has been resent", false,
false, user.getEmail());
} }
if (token != null) { if (token != null) {
@@ -84,7 +87,7 @@ public class VerifyRegisterUserHandler implements RequestHandler {
log.info("New verification token generated for user {}", user.getEmail()); log.info("New verification token generated for user {}", user.getEmail());
return successResponse(request, authToken, "New verification code has been sent", return successResponse(request, authToken, "New verification code has been sent",
false, false); false, false, user.getEmail());
} }
@@ -99,19 +102,20 @@ public class VerifyRegisterUserHandler implements RequestHandler {
} }
User updateUser = userService.activateAndVerifyUser(user.getId()); User updateUser = userService.activateAndVerifyUser(user.getId());
emailVerificationTokenRepository.delete(token); emailVerificationTokenRepository.delete(token);
return successResponse(request, authToken, MessageCode.SUCCESS.getDescription(), updateUser.isActive(), return successResponse(request, authToken, MessageCode.SUCCESS.getDescription(), updateUser.isActive(),
updateUser.isEmailVerified()); updateUser.isEmailVerified(), updateUser.getEmail());
} }
private BaseResponse successResponse(BaseRequest request, AuthToken authToken, String message, boolean isActive, private BaseResponse successResponse(BaseRequest request, AuthToken authToken, String message, boolean isActive,
boolean isVerified) { boolean isVerified, String email) {
RegAnswer regAnswer = new RegAnswer(); RegAnswer regAnswer = new RegAnswer();
regAnswer.setToken(authToken.getToken()); regAnswer.setToken(authToken.getToken());
regAnswer.setVerified(isVerified); regAnswer.setVerified(isVerified);
regAnswer.setActive(isActive); regAnswer.setActive(isActive);
regAnswer.setEmail(email);
return new BaseResponse(request.getMsgId(), MessageCode.SUCCESS.getCode(), message, regAnswer); return new BaseResponse(request.getMsgId(), MessageCode.SUCCESS.getCode(), message, regAnswer);
} }
@@ -1,5 +1,6 @@
package ru.soune.nocopy.service.mail; package ru.soune.nocopy.service.mail;
import jakarta.mail.MessagingException;
import jakarta.mail.internet.MimeMessage; import jakarta.mail.internet.MimeMessage;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@@ -37,8 +38,7 @@ public class EmailService {
@Value("${app.email.verification.user}") @Value("${app.email.verification.user}")
private String user; private String user;
public void sendVerificationEmail(User user, String code) { public void sendVerificationEmail(User user, String code) throws MessagingException, IOException {
try {
MimeMessage message = mailSender.createMimeMessage(); MimeMessage message = mailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(message, true, "UTF-8"); MimeMessageHelper helper = new MimeMessageHelper(message, true, "UTF-8");
@@ -52,10 +52,6 @@ public class EmailService {
mailSender.send(message); mailSender.send(message);
log.info("Email sent to: {}", user.getEmail()); log.info("Email sent to: {}", user.getEmail());
} catch (Exception e) {
log.error("Failed to send email: {}", e.getMessage());
}
} }
@Transactional @Transactional