-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
40f3d4a
commit afeb0a0
Showing
16 changed files
with
273 additions
and
45 deletions.
There are no files selected for viewing
20 changes: 20 additions & 0 deletions
20
application/src/main/kotlin/com/threedays/application/auth/port/inbound/IssueLoginTokens.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
package com.threedays.application.auth.port.inbound | ||
|
||
import com.threedays.domain.auth.entity.AccessToken | ||
import com.threedays.domain.auth.entity.RefreshToken | ||
import com.threedays.domain.user.entity.User | ||
|
||
interface IssueLoginTokens { | ||
|
||
fun invoke(command: Command): Result | ||
|
||
data class Command(val user: User) | ||
|
||
data class Result( | ||
val accessToken: AccessToken, | ||
val refreshToken: RefreshToken, | ||
val accessTokenExpiresIn: Long, | ||
val refreshTokenExpiresIn: Long | ||
) | ||
|
||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
38 changes: 38 additions & 0 deletions
38
application/src/main/kotlin/com/threedays/application/auth/service/AuthTokenService.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,38 @@ | ||
package com.threedays.application.auth.service | ||
|
||
import com.threedays.application.auth.config.AuthProperties | ||
import com.threedays.application.auth.port.inbound.IssueLoginTokens | ||
import com.threedays.domain.auth.entity.AccessToken | ||
import com.threedays.domain.auth.entity.RefreshToken | ||
import com.threedays.domain.user.entity.User | ||
import org.springframework.stereotype.Service | ||
|
||
@Service | ||
class AuthTokenService( | ||
private val authProperties: AuthProperties, | ||
) : IssueLoginTokens { | ||
|
||
override fun invoke(command: IssueLoginTokens.Command): IssueLoginTokens.Result { | ||
val user: User = command.user | ||
|
||
val accessToken: AccessToken = AccessToken.generate( | ||
secret = authProperties.tokenSecret, | ||
expirationSeconds = authProperties.accessTokenExpirationSeconds, | ||
userId = user.id | ||
) | ||
|
||
val refreshToken: RefreshToken = RefreshToken.generate( | ||
secret = authProperties.tokenSecret, | ||
expirationSeconds = authProperties.refreshTokenExpirationSeconds, | ||
userId = user.id | ||
) | ||
|
||
return IssueLoginTokens.Result( | ||
accessToken = accessToken, | ||
refreshToken = refreshToken, | ||
accessTokenExpiresIn = authProperties.accessTokenExpirationSeconds, | ||
refreshTokenExpiresIn = authProperties.refreshTokenExpirationSeconds | ||
) | ||
} | ||
|
||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
33 changes: 33 additions & 0 deletions
33
...on/src/testFixtures/kotlin/com/threedays/application/auth/service/IssueLoginTokensStub.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
package com.threedays.application.auth.service | ||
|
||
import com.threedays.application.auth.config.AuthProperties | ||
import com.threedays.application.auth.port.inbound.IssueLoginTokens | ||
import com.threedays.domain.auth.entity.AccessToken | ||
import com.threedays.domain.auth.entity.RefreshToken | ||
|
||
class IssueLoginTokensStub( | ||
private val authProperties: AuthProperties | ||
) : IssueLoginTokens { | ||
|
||
override fun invoke(command: IssueLoginTokens.Command): IssueLoginTokens.Result { | ||
val accessToken: AccessToken = AccessToken.generate( | ||
secret = authProperties.tokenSecret, | ||
expirationSeconds = authProperties.accessTokenExpirationSeconds, | ||
userId = command.user.id | ||
) | ||
|
||
val refreshToken: RefreshToken = RefreshToken.generate( | ||
secret = authProperties.tokenSecret, | ||
expirationSeconds = authProperties.refreshTokenExpirationSeconds, | ||
userId = command.user.id | ||
) | ||
|
||
return IssueLoginTokens.Result( | ||
accessToken = accessToken, | ||
refreshToken = refreshToken, | ||
accessTokenExpiresIn = authProperties.accessTokenExpirationSeconds, | ||
refreshTokenExpiresIn = authProperties.refreshTokenExpirationSeconds | ||
) | ||
} | ||
|
||
} |
54 changes: 54 additions & 0 deletions
54
bootstrap/api/src/main/kotlin/com/threedays/bootstrap/api/user/UserController.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,54 @@ | ||
package com.threedays.bootstrap.api.user | ||
|
||
import com.threedays.application.user.port.inbound.RegisterUser | ||
import com.threedays.domain.auth.vo.PhoneNumber | ||
import com.threedays.domain.user.entity.Job | ||
import com.threedays.domain.user.entity.User | ||
import com.threedays.domain.user.entity.UserDesiredPartner | ||
import com.threedays.domain.user.vo.Gender | ||
import com.threedays.oas.api.UsersApi | ||
import com.threedays.oas.model.RegisterUserRequest | ||
import com.threedays.oas.model.TokenResponse | ||
import com.threedays.support.common.base.domain.UUIDTypeId | ||
import org.springframework.http.ResponseEntity | ||
import org.springframework.web.bind.annotation.RestController | ||
import java.time.Year | ||
|
||
@RestController | ||
class UserController( | ||
private val registerUser: RegisterUser | ||
) : UsersApi { | ||
|
||
override fun registerUser( | ||
xRegisterToken: String, | ||
registerUserRequest: RegisterUserRequest | ||
): ResponseEntity<TokenResponse> { | ||
val result: RegisterUser.Result = RegisterUser.Command( | ||
name = User.Name(registerUserRequest.name), | ||
phoneNumber = PhoneNumber(registerUserRequest.phoneNumber), | ||
userGender = Gender.valueOf(registerUserRequest.profile.gender.name), | ||
userBirthYear = Year.of(registerUserRequest.profile.birthYear), | ||
userCompanyId = UUIDTypeId.from(registerUserRequest.profile.companyId), | ||
userJobId = UUIDTypeId.from(registerUserRequest.profile.jobId), | ||
userLocationIds = registerUserRequest.profile.locationIds.map(UUIDTypeId::from), | ||
partnerJobOccupations = registerUserRequest.desiredPartner.jobOccupations | ||
.let { requestData -> requestData.map { Job.Occupation.valueOf(it.name) } }, | ||
partnerBirthYearRange = registerUserRequest.desiredPartner.birthYearRange | ||
?.let { Year.of(it.start)..Year.of(it.end) }, | ||
partnerPreferDistance = UserDesiredPartner | ||
.PreferDistance | ||
.valueOf(registerUserRequest.desiredPartner.preferDistance.name), | ||
).let { | ||
registerUser.invoke(it) | ||
} | ||
|
||
return TokenResponse( | ||
result.accessToken.value, | ||
result.refreshToken.value, | ||
result.expiresIn.toInt() | ||
).let { | ||
ResponseEntity.ok(it) | ||
} | ||
} | ||
|
||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.