Skip to content

Commit

Permalink
Merge pull request #17 from Team-Going/feature/16
Browse files Browse the repository at this point in the history
[feat] 회원가입 API 구현
  • Loading branch information
gardening-y authored Jan 7, 2024
2 parents e086dd1 + 95481df commit 91639e7
Show file tree
Hide file tree
Showing 4 changed files with 45 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import org.doorip.common.ApiResponseUtil;
import org.doorip.message.SuccessMessage;
import org.doorip.user.dto.request.UserSignInRequest;
import org.doorip.user.dto.request.UserSignUpRequest;
import org.doorip.user.dto.response.UserResponse;
import org.doorip.user.service.UserService;
import org.springframework.http.ResponseEntity;
Expand All @@ -19,8 +20,15 @@ public class UserApiController {

@PostMapping("/signin")
public ResponseEntity<ApiResponse<?>> signIn(@RequestHeader("Authorization") final String token,
@RequestParam final UserSignInRequest request) {
@RequestBody final UserSignInRequest request) {
final UserResponse response = userService.signIn(token, request);
return ApiResponseUtil.success(SuccessMessage.OK, response);
}

@PostMapping("/signup")
public ResponseEntity<ApiResponse<?>> signUp(@RequestHeader("Authorization") final String token,
@RequestBody final UserSignUpRequest request) {
final UserResponse response = userService.signUp(token, request);
return ApiResponseUtil.success(SuccessMessage.CREATED, response);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package org.doorip.user.dto.request;

public record UserSignUpRequest(
String name,
String intro,
String platform
) {
}
20 changes: 18 additions & 2 deletions doorip-api/src/main/java/org/doorip/user/service/UserService.java
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
import org.doorip.user.domain.RefreshToken;
import org.doorip.user.domain.User;
import org.doorip.user.dto.request.UserSignInRequest;
import org.doorip.user.dto.request.UserSignUpRequest;
import org.doorip.user.dto.response.UserResponse;
import org.doorip.user.repository.RefreshTokenRepository;
import org.doorip.user.repository.UserRepository;
Expand All @@ -19,18 +20,18 @@

import static org.doorip.user.domain.Platform.APPLE;
import static org.doorip.user.domain.Platform.getEnumPlatformFromStringPlatform;
import static org.doorip.user.domain.User.createUser;

@RequiredArgsConstructor
@Service
@Transactional(readOnly = true)
@Transactional
public class UserService {
private final UserRepository userRepository;
private final RefreshTokenRepository refreshTokenRepository;
private final JwtProvider jwtProvider;
private final AppleOAuthProvider appleOAuthProvider;
private final KakaoOAuthProvider kakaoOAuthProvider;

@Transactional
public UserResponse signIn(String token, UserSignInRequest request) {
Platform enumPlatform = getEnumPlatformFromStringPlatform(request.platform());
String platformId = getPlatformId(token, enumPlatform);
Expand All @@ -41,6 +42,16 @@ public UserResponse signIn(String token, UserSignInRequest request) {
return UserResponse.of(issueToken);
}

public UserResponse signUp(String token, UserSignUpRequest request) {
Platform enumPlatform = getEnumPlatformFromStringPlatform(request.platform());
String platformId = getPlatformId(token, enumPlatform);
User savedUser = saveUser(request, platformId, enumPlatform);
Token issueToken = jwtProvider.issueToken(savedUser.getId());
updateRefreshToken(issueToken.refreshToken(), savedUser);

return UserResponse.of(issueToken);
}

private String getPlatformId(String token, Platform platform) {
if (platform == APPLE) {
return appleOAuthProvider.getApplePlatformId(token);
Expand All @@ -57,4 +68,9 @@ private void updateRefreshToken(String refreshToken, User user) {
user.updateRefreshToken(refreshToken);
refreshTokenRepository.save(RefreshToken.createRefreshToken(user.getId(), refreshToken));
}

private User saveUser(UserSignUpRequest request, String platformId, Platform enumPlatform) {
User user = createUser(request.name(), request.intro(), platformId, enumPlatform);
return userRepository.save(user);
}
}
10 changes: 10 additions & 0 deletions doorip-domain/src/main/java/org/doorip/user/domain/User.java
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,16 @@ public class User extends BaseTimeEntity {
@OneToMany(mappedBy = "user", cascade = CascadeType.REMOVE)
private List<Participant> participants = new ArrayList<>();

public static User createUser(String name, String intro, String platformId, Platform platform) {

return User.builder()
.name(name)
.intro(intro)
.platformId(platformId)
.platform(platform)
.build();
}

public void updateRefreshToken(String refreshToken) {
this.refreshToken = refreshToken;
}
Expand Down

0 comments on commit 91639e7

Please sign in to comment.