Skip to content

Commit

Permalink
merge: 멤버 이름 추가
Browse files Browse the repository at this point in the history
Feature/#65 멤버 이름 추가
  • Loading branch information
hong-sile authored Apr 6, 2024
2 parents 437e56f + b3593f2 commit 6976563
Show file tree
Hide file tree
Showing 5 changed files with 26 additions and 11 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ public class LoginController implements LoginControllerDocs {
public ResponseEntity<JwtTokenResponse> registerToken(
@Valid @RequestBody final LoginRequest loginRequest
) {
final var token = loginService.createToken(loginRequest.token(), loginRequest.email());
final var token = loginService.createToken(loginRequest);
return ResponseEntity.ok(new JwtTokenResponse(token));
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ public interface LoginControllerDocs {
{
\t"token": "apple id toekn...",
\t"email": "[email protected]"
\t"name": "다연"
}""")
})))
ResponseEntity<JwtTokenResponse> registerToken(@Valid @RequestBody final LoginRequest request);
Expand All @@ -44,6 +45,5 @@ public interface LoginControllerDocs {
})
@Operation(summary = "로그인한 사용자 정보 조회")
ResponseEntity<LoginResponse> getLoginInfo(
@Parameter(hidden = true)
final Member member);
@Parameter(hidden = true) final Member member);
}
6 changes: 6 additions & 0 deletions src/main/java/unithon/team5/login/dto/LoginRequest.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,17 @@
import jakarta.validation.constraints.Email;
import jakarta.validation.constraints.NotEmpty;

import java.util.Optional;

public record LoginRequest(
String name,
@NotEmpty
String token,
@Email
String email
) {

public Optional<String> getName() {
return Optional.ofNullable(name);
}
}
13 changes: 9 additions & 4 deletions src/main/java/unithon/team5/login/service/LoginService.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,11 @@
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import unithon.team5.login.dto.LoginRequest;
import unithon.team5.member.Member;
import unithon.team5.member.repository.MemberRepository;

import java.util.Optional;
import java.util.UUID;

@Service
Expand All @@ -16,22 +18,25 @@ public class LoginService {
private final MemberRepository memberRepository;

@Transactional
public String createToken(final String idToken, final String email) {
final String memberIdentifier = jwtProvider.decodeSub(idToken, email);
public String createToken(final LoginRequest loginRequest) {
final String memberIdentifier = jwtProvider.decodeSub(loginRequest.token(), loginRequest.email());
final Member registeredMember = memberRepository.findByIdentifier(memberIdentifier)
.orElseGet(() -> registerMember(memberIdentifier, email));
.orElseGet(() -> registerMember(memberIdentifier, loginRequest.email(), loginRequest.getName()));
final UUID id = registeredMember.getId();
return jwtProvider.createAccessTokenWith(id);
}

private Member registerMember(final String memberAppleIdentifier, final String email) {
private Member registerMember(final String memberAppleIdentifier, final String email, final Optional<String> name) {
final String nickname = parseEmail(email);
final String validateNickname = generateValidateNickname(nickname);
final String memberName = name.orElse(validateNickname);

final Member member = Member.builder()
.nickname(validateNickname)
.identifier(memberAppleIdentifier)
.name(memberName)
.build();

return memberRepository.save(member);
}

Expand Down
12 changes: 8 additions & 4 deletions src/main/java/unithon/team5/member/Member.java
Original file line number Diff line number Diff line change
Expand Up @@ -18,15 +18,17 @@ protected Member() {
super(null);
}

private Member(final UUID id, final String nickname, final String identifier) {
private Member(final UUID id, final String name, final String nickname, final String identifier) {
super(id);
this.name = name;
this.nickname = nickname;
this.identifier = identifier;
}

@Builder
public Member(final String nickname, final String identifier) {
public Member(final String name, final String nickname, final String identifier) {
super(null);
this.name = name;
this.nickname = nickname;
this.identifier = identifier;
}
Expand All @@ -36,7 +38,9 @@ public Member(final String nickname, final String identifier) {

private String identifier;

public static Member create(final String nickname, final String identifier) {
return new Member(null, nickname, identifier);
private String name;

public static Member create(final String name, final String nickname, final String identifier) {
return new Member(null, name, nickname, identifier);
}
}

0 comments on commit 6976563

Please sign in to comment.