From a5c9dee29300cef2a6e547798a6020305687da65 Mon Sep 17 00:00:00 2001 From: hajeu Date: Mon, 20 Nov 2023 22:17:51 +0900 Subject: [PATCH 1/4] =?UTF-8?q?:sparkles:=20=EC=82=AC=EC=9A=A9=EC=9E=90?= =?UTF-8?q?=EC=9D=98=20profileUrl=EC=9D=84=20=EB=93=B1=EB=A1=9D=ED=95=98?= =?UTF-8?q?=EB=8A=94=20=EB=A1=9C=EC=A7=81=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/user/controller/UserController.kt | 25 +++++++++++++ .../service/ProfileUrlRegistrationService.kt | 37 +++++++++++++++++++ 2 files changed, 62 insertions(+) create mode 100644 src/main/kotlin/team/themoment/gsmNetworking/domain/user/controller/UserController.kt create mode 100644 src/main/kotlin/team/themoment/gsmNetworking/domain/user/service/ProfileUrlRegistrationService.kt diff --git a/src/main/kotlin/team/themoment/gsmNetworking/domain/user/controller/UserController.kt b/src/main/kotlin/team/themoment/gsmNetworking/domain/user/controller/UserController.kt new file mode 100644 index 00000000..06340f4a --- /dev/null +++ b/src/main/kotlin/team/themoment/gsmNetworking/domain/user/controller/UserController.kt @@ -0,0 +1,25 @@ +package team.themoment.gsmNetworking.domain.user.controller + +import org.springframework.http.HttpStatus +import org.springframework.http.ResponseEntity +import org.springframework.web.bind.annotation.PathVariable +import org.springframework.web.bind.annotation.PostMapping +import org.springframework.web.bind.annotation.RequestMapping +import org.springframework.web.bind.annotation.RestController +import team.themoment.gsmNetworking.common.manager.AuthenticatedUserManager +import team.themoment.gsmNetworking.domain.user.service.ProfileUrlRegistrationService + +@RestController +@RequestMapping("/api/v1/user") +class UserController( + private val authenticatedUserManager: AuthenticatedUserManager, + private val profileUrlRegistrationService: ProfileUrlRegistrationService +) { + + @PostMapping("/profile/{profileUrl}") + fun profileUrlRegistration(@PathVariable profileUrl: String): ResponseEntity { + val authenticationId = authenticatedUserManager.getName() + profileUrlRegistrationService.execute(authenticationId, profileUrl) + return ResponseEntity.status(HttpStatus.CREATED).build() + } +} diff --git a/src/main/kotlin/team/themoment/gsmNetworking/domain/user/service/ProfileUrlRegistrationService.kt b/src/main/kotlin/team/themoment/gsmNetworking/domain/user/service/ProfileUrlRegistrationService.kt new file mode 100644 index 00000000..3fe6ef69 --- /dev/null +++ b/src/main/kotlin/team/themoment/gsmNetworking/domain/user/service/ProfileUrlRegistrationService.kt @@ -0,0 +1,37 @@ +package team.themoment.gsmNetworking.domain.user.service + +import org.springframework.http.HttpStatus +import org.springframework.stereotype.Service +import org.springframework.transaction.annotation.Transactional +import team.themoment.gsmNetworking.common.exception.ExpectedException +import team.themoment.gsmNetworking.domain.user.domain.User +import team.themoment.gsmNetworking.domain.user.repository.UserRepository + +@Service +@Transactional(rollbackFor = [Exception::class]) +class ProfileUrlRegistrationService( + private val userRepository: UserRepository +) { + + fun execute(authenticationId: Long, profileUrl: String) { + val user = userRepository.findByAuthenticationId(authenticationId) + ?: throw ExpectedException("user를 찾을 수 없습니다.", HttpStatus.NOT_FOUND) + + profileUrlRegistration(user, profileUrl) + } + + fun profileUrlRegistration(user: User, profileUrl: String) { + val addProfileUrlToUser = User( + user.userId, + user.authenticationId, + user.name, + user.generation, + user.email, + user.phoneNumber, + user.snsUrl, + profileUrl + ) + + userRepository.save(addProfileUrlToUser) + } +} From 6fdb022fb8ba8ca5d99cb03382d1fe663372b57f Mon Sep 17 00:00:00 2001 From: hajeu Date: Mon, 20 Nov 2023 22:26:50 +0900 Subject: [PATCH 2/4] =?UTF-8?q?:sparkles:=20profileUrl=EB=93=B1=EB=A1=9D?= =?UTF-8?q?=20api=20=EC=A0=91=EA=B7=BC=20=EC=A0=9C=ED=95=9C=20=EC=84=A4?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../themoment/gsmNetworking/global/security/SecurityConfig.kt | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/main/kotlin/team/themoment/gsmNetworking/global/security/SecurityConfig.kt b/src/main/kotlin/team/themoment/gsmNetworking/global/security/SecurityConfig.kt index 8533d80a..03ff1ece 100644 --- a/src/main/kotlin/team/themoment/gsmNetworking/global/security/SecurityConfig.kt +++ b/src/main/kotlin/team/themoment/gsmNetworking/global/security/SecurityConfig.kt @@ -92,6 +92,10 @@ class SecurityConfig( .mvcMatchers(HttpMethod.POST, "/api/v1/mentee").hasAnyRole( Authority.UNAUTHENTICATED.name ) + // /user + .mvcMatchers("/api/v1/user/**").hasAnyRole( + Authority.USER.name + ) // /file .mvcMatchers("/api/v1/file").hasAnyRole( Authority.USER.name From 8e2d8d97638f1a65e2646a7ec598f79e8efa7763 Mon Sep 17 00:00:00 2001 From: hajeu Date: Mon, 20 Nov 2023 22:32:32 +0900 Subject: [PATCH 3/4] =?UTF-8?q?:recycle:=20=EB=A9=94=EC=84=9C=EB=93=9C=20?= =?UTF-8?q?=EB=AA=85=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/user/service/ProfileUrlRegistrationService.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/kotlin/team/themoment/gsmNetworking/domain/user/service/ProfileUrlRegistrationService.kt b/src/main/kotlin/team/themoment/gsmNetworking/domain/user/service/ProfileUrlRegistrationService.kt index 3fe6ef69..07184447 100644 --- a/src/main/kotlin/team/themoment/gsmNetworking/domain/user/service/ProfileUrlRegistrationService.kt +++ b/src/main/kotlin/team/themoment/gsmNetworking/domain/user/service/ProfileUrlRegistrationService.kt @@ -17,10 +17,10 @@ class ProfileUrlRegistrationService( val user = userRepository.findByAuthenticationId(authenticationId) ?: throw ExpectedException("user를 찾을 수 없습니다.", HttpStatus.NOT_FOUND) - profileUrlRegistration(user, profileUrl) + profileUrlRegistered(user, profileUrl) } - fun profileUrlRegistration(user: User, profileUrl: String) { + fun profileUrlRegistered(user: User, profileUrl: String) { val addProfileUrlToUser = User( user.userId, user.authenticationId, From 9753c1d3d6b4158a8293272a8782e5494556633d Mon Sep 17 00:00:00 2001 From: hajeu Date: Mon, 20 Nov 2023 23:00:29 +0900 Subject: [PATCH 4/4] =?UTF-8?q?:recycle:=20=EB=B3=80=EC=88=98=20=EB=AA=85?= =?UTF-8?q?=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/user/service/ProfileUrlRegistrationService.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/kotlin/team/themoment/gsmNetworking/domain/user/service/ProfileUrlRegistrationService.kt b/src/main/kotlin/team/themoment/gsmNetworking/domain/user/service/ProfileUrlRegistrationService.kt index 07184447..dba2253f 100644 --- a/src/main/kotlin/team/themoment/gsmNetworking/domain/user/service/ProfileUrlRegistrationService.kt +++ b/src/main/kotlin/team/themoment/gsmNetworking/domain/user/service/ProfileUrlRegistrationService.kt @@ -21,7 +21,7 @@ class ProfileUrlRegistrationService( } fun profileUrlRegistered(user: User, profileUrl: String) { - val addProfileUrlToUser = User( + val userUpdatedProfileUrl = User( user.userId, user.authenticationId, user.name, @@ -32,6 +32,6 @@ class ProfileUrlRegistrationService( profileUrl ) - userRepository.save(addProfileUrlToUser) + userRepository.save(userUpdatedProfileUrl) } }