From 70cef45a546d4f8c03defcebf25f904c4a36aba1 Mon Sep 17 00:00:00 2001 From: endermaru <127807229+endermaru@users.noreply.github.com> Date: Wed, 29 Jan 2025 21:46:45 +0900 Subject: [PATCH] =?UTF-8?q?Refc/#93/endermaru=20-=20Resume=20=EC=84=9C?= =?UTF-8?q?=EB=B9=84=EC=8A=A4=20=EA=B0=9C=EC=84=A0=20=EB=B0=8F=20Post=20?= =?UTF-8?q?=EC=97=90=EB=9F=AC=20=EC=88=98=EC=A0=95=20(#94)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * user parameter hidden * Bearer만 제시할 때 null 반환 * dummy post에 title 추가 * Categori enum 문자열 출력 & post 더미 데이터 생성 수정 --- .../com/waffletoy/team1server/post/PostContants.kt | 14 ++++++++++++++ .../team1server/post/service/PostService.kt | 4 +++- .../resume/controller/ResumeController.kt | 11 ++++++----- .../team1server/resume/service/ResumeService.kt | 10 +++++++--- .../team1server/user/UserOrNullArgumentResolver.kt | 7 ++++++- 5 files changed, 36 insertions(+), 10 deletions(-) diff --git a/src/main/kotlin/com/waffletoy/team1server/post/PostContants.kt b/src/main/kotlin/com/waffletoy/team1server/post/PostContants.kt index 443430c..eb69414 100644 --- a/src/main/kotlin/com/waffletoy/team1server/post/PostContants.kt +++ b/src/main/kotlin/com/waffletoy/team1server/post/PostContants.kt @@ -10,6 +10,20 @@ enum class Category { DESIGN, PLANNER, MARKETING, + ; + + fun displayName(): String { + return when (this) { + FRONT -> "프론트엔드 개발" + APP -> "앱 개발" + BACKEND -> "백엔드 개발" + DATA -> "데이터 분석" + OTHERS -> "기타" + DESIGN -> "디자인" + PLANNER -> "기획" + MARKETING -> "마케팅" + } + } } enum class Series { diff --git a/src/main/kotlin/com/waffletoy/team1server/post/service/PostService.kt b/src/main/kotlin/com/waffletoy/team1server/post/service/PostService.kt index df5be7a..1d8662b 100644 --- a/src/main/kotlin/com/waffletoy/team1server/post/service/PostService.kt +++ b/src/main/kotlin/com/waffletoy/team1server/post/service/PostService.kt @@ -17,6 +17,7 @@ import org.springframework.data.repository.findByIdOrNull import org.springframework.stereotype.Service import org.springframework.transaction.annotation.Transactional import java.time.LocalDateTime +import kotlin.random.Random @Service class PostService( @@ -214,7 +215,7 @@ class PostService( admin = admin, companyName = "dummy Company $index", explanation = "Explanation of dummy Company $index", - email = "dummy$index@example.com", + email = "dummy${index}_${Random.nextInt(0, 10001)}@example.com", slogan = "Slogan of dummy$index", investAmount = (1000..5000).random(), investCompany = "Company A$index, Company B$index", @@ -227,6 +228,7 @@ class PostService( Category.entries.shuffled().take((1..3).random()).forEach { category -> positions.add( PositionEntity( + title = "Title of $index", category = category, detail = "Detail of $category", headcount = "${(1..3).random()}", diff --git a/src/main/kotlin/com/waffletoy/team1server/resume/controller/ResumeController.kt b/src/main/kotlin/com/waffletoy/team1server/resume/controller/ResumeController.kt index 30bc168..33bb320 100644 --- a/src/main/kotlin/com/waffletoy/team1server/resume/controller/ResumeController.kt +++ b/src/main/kotlin/com/waffletoy/team1server/resume/controller/ResumeController.kt @@ -3,6 +3,7 @@ package com.waffletoy.team1server.resume.controller import com.waffletoy.team1server.resume.service.ResumeService import com.waffletoy.team1server.user.AuthUser import com.waffletoy.team1server.user.dtos.User +import io.swagger.v3.oas.annotations.Parameter import jakarta.validation.constraints.NotBlank import jakarta.validation.constraints.Size import org.springframework.http.ResponseEntity @@ -18,7 +19,7 @@ class ResumeController( // 커피챗 상세 페이지 불러오기 @GetMapping("/{resumeId}") fun getResumeDetail( - @AuthUser user: User?, + @Parameter(hidden = true) @AuthUser user: User, @PathVariable resumeId: String, ): ResponseEntity { return ResponseEntity.ok( @@ -29,7 +30,7 @@ class ResumeController( // 커피챗 목록 불러오기 @GetMapping fun getResumes( - @AuthUser user: User?, + @Parameter(hidden = true) @AuthUser user: User, ): ResponseEntity { return ResponseEntity.ok( Resumes( @@ -41,7 +42,7 @@ class ResumeController( // 커피챗 신청하기 @PostMapping("/{postId}") fun postResume( - @AuthUser user: User?, + @Parameter(hidden = true) @AuthUser user: User, @PathVariable postId: String, @RequestBody coffee: Coffee, ): ResponseEntity { @@ -57,7 +58,7 @@ class ResumeController( // 커피챗 삭제하기 @DeleteMapping("/{resumeId}") fun deleteResume( - @AuthUser user: User?, + @Parameter(hidden = true) @AuthUser user: User, @PathVariable resumeId: String, ): ResponseEntity { resumeService.deleteResume(user, resumeId) @@ -67,7 +68,7 @@ class ResumeController( // 커피챗 수정하기 @PatchMapping("/{resumeId}") fun patchResume( - @AuthUser user: User?, + @Parameter(hidden = true) @AuthUser user: User, @PathVariable resumeId: String, @RequestBody coffee: Coffee, ): ResponseEntity { diff --git a/src/main/kotlin/com/waffletoy/team1server/resume/service/ResumeService.kt b/src/main/kotlin/com/waffletoy/team1server/resume/service/ResumeService.kt index d6dd8e4..c811943 100644 --- a/src/main/kotlin/com/waffletoy/team1server/resume/service/ResumeService.kt +++ b/src/main/kotlin/com/waffletoy/team1server/resume/service/ResumeService.kt @@ -18,6 +18,7 @@ import org.springframework.beans.factory.annotation.Value import org.springframework.data.repository.findByIdOrNull import org.springframework.stereotype.Service import org.springframework.transaction.annotation.Transactional +import java.time.format.DateTimeFormatter @Service class ResumeService( @@ -112,7 +113,8 @@ class ResumeService( // 이메일 전송 try { emailService.sendEmail( - to = companyEntity.email, +// to = companyEntity.email, + to = "endermaru@snu.ac.kr", subject = "[인턴하샤] 지원자 커피챗이 도착하였습니다.", text = """ @@ -121,8 +123,10 @@ class ResumeService( - 회사명: ${companyEntity.companyName} - 회사 이메일: ${companyEntity.email} - 직무명: ${positionEntity.title} - - 카테고리: ${positionEntity.category} - - 지원 마감일: ${positionEntity.employmentEndDate ?: "정보 없음"} + - 카테고리: ${positionEntity.category.displayName()} + - 지원 마감일: ${positionEntity.employmentEndDate + ?.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm")) + ?: "정보 없음"} 지원자 정보: - 이름: ${validUser.name} diff --git a/src/main/kotlin/com/waffletoy/team1server/user/UserOrNullArgumentResolver.kt b/src/main/kotlin/com/waffletoy/team1server/user/UserOrNullArgumentResolver.kt index bca1375..ad9f898 100644 --- a/src/main/kotlin/com/waffletoy/team1server/user/UserOrNullArgumentResolver.kt +++ b/src/main/kotlin/com/waffletoy/team1server/user/UserOrNullArgumentResolver.kt @@ -42,12 +42,17 @@ class UserOrNullArgumentResolver( // Check if the Authorization header is present and not blank if (authorizationHeader.isNullOrBlank()) { - logger.warn("Authorization header is missing or blank") return null } // Split the header and validate the format (e.g., "Bearer ") val tokenParts = authorizationHeader.split(" ") + + // 실제 토큰이 없는 "Bearer" 일 때 null 반환 + if (tokenParts.size == 1 && tokenParts[0] == "Bearer") { + return null + } + if (tokenParts.size != 2 || tokenParts[0] != "Bearer") { logger.warn("Authorization header is malformed: $authorizationHeader") throw BadAuthorizationHeaderException(