Skip to content

Commit

Permalink
Merge pull request #157 from IT-Cotato/refactor/156
Browse files Browse the repository at this point in the history
[REFACTOR] 재학 인증 요청 리팩토링, 게시글 작성 자격 수정
  • Loading branch information
u-genuine authored Feb 20, 2025
2 parents fac80f2 + f7c974e commit d42d0b9
Show file tree
Hide file tree
Showing 9 changed files with 28 additions and 26 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import com.cotato.kampus.domain.board.enums.BoardStatus;
import com.cotato.kampus.domain.board.enums.BoardType;
import com.cotato.kampus.domain.user.dto.UserDto;
import com.cotato.kampus.domain.user.enums.UserRole;
import com.cotato.kampus.global.error.ErrorCode;
import com.cotato.kampus.global.error.exception.AppException;

Expand Down Expand Up @@ -40,6 +41,11 @@ public void validateUniqueName(String boardName) {
}

public void validatePostCreationAccess(UserDto userDto, BoardDto boardDto) {
// 재학생 검증
if (!(userDto.userRole() == UserRole.VERIFIED || userDto.userRole() == UserRole.ADMIN)) {
throw new AppException(ErrorCode.USER_UNVERIFIED);
}

// 학교 게시판인 경우 자격 검증
if (boardDto.boardType() == BoardType.UNIVERSITY &&
!Objects.equals(boardDto.universityId(), userDto.universityId())) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -151,7 +151,7 @@ public Slice<TrendingPostPreview> findTrendingPosts(int page) {
Long userUnivId = userDto.universityId();

// Trending 게시글 조회 (타 대학 게시글 제외)
return postFinder.findAllTrendingPosts(userUnivId, page);
return postFinder.findAllTrendingPosts(userUnivId, page);
}

public PostDetails findPostDetail(Long postId) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,12 +28,6 @@ public Long findUniversityId(String universityName) {
return university.getId();
}

public Long findUniversityId(Long verificationRecordId) {
return verificationRecordRepository.findById(verificationRecordId)
.orElseThrow(() -> new AppException(ErrorCode.UNIVERSITY_NOT_FOUND))
.getUniversityId();
}

public University findUniversity(Long universityId) {
return universityRepository.findById(universityId)
.orElseThrow(() -> new AppException(ErrorCode.UNIVERSITY_NOT_FOUND));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,7 @@ public ResponseEntity<DataResponse<SendMailResponse>> sendVerificationCode(
return ResponseEntity.ok(DataResponse.from(
SendMailResponse.from(
userService.sendMail(
request.email(), request.universityId()
request.email(), request.universityName()
)
)
)
Expand All @@ -132,7 +132,7 @@ public ResponseEntity<DataResponse<ConfirmMailResponse>> verifyEmailCode(
return ResponseEntity.ok(DataResponse.from(
ConfirmMailResponse.from(
userService.verifyEmailCode(
request.email(), request.universityId(), request.code()
request.email(), request.universityName(), request.code()
)
)
)
Expand All @@ -142,14 +142,14 @@ public ResponseEntity<DataResponse<ConfirmMailResponse>> verifyEmailCode(
@PostMapping(value = "/verify/document", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
@Operation(summary = "재학생 서류 사진 제출", description = "재학생 인증 서류 사진을 제출합니다.")
public ResponseEntity<DataResponse<Void>> uploadCert(
@RequestParam("universityId") @NotNull Long universityId,
@RequestParam("universityName") @NotNull String universityName,
@RequestPart("certImage") MultipartFile certImage
) throws ImageException {
if (certImage.isEmpty()) {
throw new AppException(ErrorCode.EMPTY_FILE_EXCEPTION);
}

userService.uploadCert(universityId, certImage);
userService.uploadCert(universityName, certImage);
return ResponseEntity.ok(DataResponse.ok());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -67,23 +67,20 @@ public Long updateUserDetails(String nickname, Nationality nationality, Preferre
}

@Transactional
public Map<String, Object> sendMail(String email, Long universityId) throws IOException {
University university = univFinder.findUniversity(universityId);
return univEmailVerifier.sendMail(email, university.getUniversityName());
public Map<String, Object> sendMail(String email, String universityName) throws IOException {
return univEmailVerifier.sendMail(email, universityName);
}

@Transactional
public Long verifyEmailCode(String email, Long universityId, int code) throws IOException {
public Long verifyEmailCode(String email, String universityName, int code) throws IOException {
// 이미 재학생 인증 되었는지 확인
userValidator.validateDuplicateStudentVerification();

// 학교 이름 조회
String univName = univFinder.findUniversity(universityId).getUniversityName();

// 코드 인증
univEmailVerifier.verifyCode(email, univName, code);
univEmailVerifier.verifyCode(email, universityName, code);

// VerificationRecord 추가
Long universityId = univFinder.findUniversityId(universityName);
verificationRecordAppender.appendEmailType(universityId);

// 유저 조회
Expand All @@ -94,14 +91,15 @@ public Long verifyEmailCode(String email, Long universityId, int code) throws IO
}

@Transactional
public void uploadCert(Long universityId, MultipartFile certImage) throws ImageException {
public void uploadCert(String universityName, MultipartFile certImage) throws ImageException {
// 이미 재학생 인증 되었는지 검증
Long userId = userValidator.validateDuplicateStudentVerification();

// s3에 이미지 업로드
String imageUrl = s3Uploader.uploadFile(certImage, STUDENT_CERT_IMAGE_FOLDER);

// VerificationRecord 추가
Long universityId = univFinder.findUniversityId(universityName);
Long verificationRecordId = verificationRecordAppender.appendPhotoType(userId, universityId);

// 인증서 이미지 추가
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,13 @@ public Long updateDetails(String nickname, PreferredLanguage preferredLanguage)
@Transactional
public Long updateVerificationStatus(Long userId, Long universityId) {
User user = userFinder.findById(userId);
user.updateVerificationStatus(universityId);

// 관리자가 아닌 경우만 UserRole VERIFIED로 변경
if(!user.getUserRole().equals(UserRole.ADMIN)) {
user.updateRole(UserRole.VERIFIED);
}

user.setUniversityId(universityId);
return user.getId();
}

Expand Down
4 changes: 1 addition & 3 deletions src/main/java/com/cotato/kampus/domain/user/domain/User.java
Original file line number Diff line number Diff line change
Expand Up @@ -98,10 +98,8 @@ public User update(String email, String username) {
return this;
}

public User updateVerificationStatus(Long universityId) {
this.userRole = UserRole.VERIFIED;
public void setUniversityId(Long universityId) {
this.universityId = universityId;
return this;
}

public User updateDeviceToken(String deviceToken) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

public record ConfirmMailRequest(
String email,
Long universityId,
String universityName,
int code
) {
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,6 @@

public record SendMailRequest(
String email,
Long universityId
String universityName
) {
}

0 comments on commit d42d0b9

Please sign in to comment.