Skip to content

Commit

Permalink
Merge pull request #319 from GSM-MSG/318-membership-userroll-authoriz…
Browse files Browse the repository at this point in the history
…ation-student-revision

🔀 :: 회원가입 수락시에 UserRole 추가
  • Loading branch information
Umjiseung authored May 3, 2024
2 parents 22f8f7e + 8cc83a7 commit 69858d6
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 62 deletions.
12 changes: 0 additions & 12 deletions src/main/kotlin/com/msg/gauth/domain/auth/service/SignUpService.kt
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@ import org.springframework.security.crypto.password.PasswordEncoder
@TransactionalService
class SignUpService(
private val userRepository: UserRepository,
private val userRoleRepository: UserRoleRepository,
private val passwordEncoder: PasswordEncoder,
private val emailAuthRepository: EmailAuthRepository,
private val applicationEventPublisher: ApplicationEventPublisher
Expand Down Expand Up @@ -48,19 +47,8 @@ class SignUpService(

val savedUser = userRepository.save(user)

saveUserRole(user)

applicationEventPublisher.publishEvent(SignupLoggingEvent(user.email))

return savedUser.id
}

private fun saveUserRole(user: User) {
val userRole = UserRole(
user = user,
userRoleType = UserRoleType.ROLE_STUDENT
)

userRoleRepository.save(userRole)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ data class AcceptUserReqDto(
val classNum: Int?,
val num: Int?
) {
fun toStudentEntity(user: User): User {
fun toEntity(user: User): User {
return User(
id = user.id,
email = user.email,
Expand All @@ -29,43 +29,10 @@ data class AcceptUserReqDto(
grade = grade,
classNum = classNum,
num = num,
roles = mutableListOf(UserRoleType.ROLE_STUDENT),
state = UserState.CREATED,
profileUrl = user.profileUrl,
wrongPasswordCount = user.wrongPasswordCount,
oauthWrongPasswordCount = user.oauthWrongPasswordCount
)
}

fun toTeacherEntity(user: User): User{
return User(
id = user.id,
email = user.email,
password = user.password,
gender = gender,
name = name,
grade = grade,
classNum = classNum,
num = num,
roles = mutableListOf(UserRoleType.ROLE_TEACHER),
state = UserState.CREATED,
profileUrl = user.profileUrl
)
}

fun toGraduateEntity(user: User): User{
return User(
id = user.id,
email = user.email,
password = user.password,
gender = gender,
name = name,
grade = grade,
classNum = classNum,
num = num,
roles = mutableListOf(UserRoleType.ROLE_GRADUATE),
state = UserState.CREATED,
profileUrl = user.profileUrl
)
}
}
Original file line number Diff line number Diff line change
@@ -1,37 +1,43 @@
package com.msg.gauth.domain.user.service

import com.msg.gauth.domain.client.exception.BadUserRoleRequestException
import com.msg.gauth.domain.user.User
import com.msg.gauth.domain.user.UserRole
import com.msg.gauth.domain.user.enums.UserRoleType
import com.msg.gauth.domain.user.enums.UserState
import com.msg.gauth.domain.user.exception.UserNotFoundException
import com.msg.gauth.domain.user.presentation.dto.request.AcceptUserReqDto
import com.msg.gauth.domain.user.repository.UserRepository
import com.msg.gauth.domain.user.repository.UserRoleRepository
import com.msg.gauth.global.annotation.service.TransactionalService

@TransactionalService
class AcceptUserSignUpService(
private val userRepository: UserRepository
private val userRepository: UserRepository,
private val userRoleRepository: UserRoleRepository
) {

fun execute(id: Long, acceptUserReqDto: AcceptUserReqDto) =
when(acceptUserReqDto.userRoleType){
UserRoleType.ROLE_STUDENT -> acceptStudent(id, acceptUserReqDto)
UserRoleType.ROLE_TEACHER -> acceptTeacher(id, acceptUserReqDto)
UserRoleType.ROLE_GRADUATE -> acceptGraduate(id, acceptUserReqDto)
else -> throw BadUserRoleRequestException()
}
fun execute(id: Long, acceptUserReqDto: AcceptUserReqDto) {
val user = acceptUserReqDto.toEntity(getUser(id))
saveUser(user, acceptUserReqDto)
}

private fun getUser(id: Long) =
userRepository.findByIdAndState(id, UserState.PENDING)
?: throw UserNotFoundException()

private fun acceptStudent(id: Long, acceptUserReqDto: AcceptUserReqDto)=
userRepository.save(acceptUserReqDto.toStudentEntity(getUser(id)))
private fun saveUser(user: User, acceptUserReqDto: AcceptUserReqDto) {
saveUserRole(user, acceptUserReqDto.userRoleType)
userRepository.save(user)
}

private fun saveUserRole(user: User, userRoleType: UserRoleType) {
val userRole = UserRole(
user = user,
userRoleType = userRoleType
)
userRoleRepository.save(userRole)
}

private fun acceptTeacher(id: Long, acceptUserReqDto: AcceptUserReqDto) =
userRepository.save(acceptUserReqDto.toTeacherEntity(getUser(id)))

private fun acceptGraduate(id: Long, acceptUserReqDto: AcceptUserReqDto) =
userRepository.save(acceptUserReqDto.toGraduateEntity(getUser(id)))
}

}

0 comments on commit 69858d6

Please sign in to comment.