Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,15 @@
import java.util.Collection;
import java.util.Map;
import java.util.Objects;

import lombok.Getter;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.oauth2.core.user.OAuth2User;

@Getter

public class CustomOAuth2User implements OAuth2User, Serializable {

private final Long id;
Expand Down Expand Up @@ -70,4 +74,6 @@ public String toString() {
.append("[OAuth2UserInfo]")
.toString();
}


}
Original file line number Diff line number Diff line change
@@ -1,12 +1,40 @@
package com.sequence.anonymous.user.application;

import com.sequence.anonymous.security.CustomOAuth2User;
import com.sequence.anonymous.user.domain.repository.UserRepository;
import com.sequence.anonymous.user.domain.user.Gender;
import com.sequence.anonymous.user.domain.user.User;
import com.sequence.anonymous.user.dto.InitializeRequest;
import lombok.RequiredArgsConstructor;
import org.springframework.security.core.annotation.AuthenticationPrincipal;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.Optional;

@RequiredArgsConstructor
@Service
public class UserService {

private final UserRepository userRepository;


public User findById(Long userId) {
return userRepository.findById(userId)
.orElseThrow(() -> new IllegalArgumentException("not found : " + userId));
}

public User findByName(String userName) {
return userRepository.findByName(userName)
.orElseThrow(() -> new IllegalArgumentException("not found : " + userName));
}

public void initializeProfile(Long userId, InitializeRequest initializeRequest){


User user = userRepository.findById(userId).orElseThrow(() -> new IllegalArgumentException("not found : " + userId));
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

findById().orElseThrow() 사이에 줄바꿈을 넣어주시면 더욱 가독성 좋은 코드가 될 것 같습니다!

User user = userRepository.findById(userId)
    .orElseThrow(() -> new IllegalArgumentException("not found : " + userId));

user.initializeProfile(initializeRequest.getName(), initializeRequest.getAge(), initializeRequest.getGender());
}


}
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.sequence.anonymous.user.domain.repository;

import com.sequence.anonymous.user.domain.user.User;

import java.util.Optional;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
Expand All @@ -9,4 +10,7 @@
public interface UserRepository extends JpaRepository<User, Long> {

Optional<User> findByEmailAndProviderId(String email, String providerId);
Optional<User> findByName(String name);


}
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package com.sequence.anonymous.user.dto;

import com.sequence.anonymous.user.domain.user.Gender;
import com.sequence.anonymous.user.domain.user.User;
import lombok.Getter;

@Getter
public class InitializeRequest {
private String name;
private Integer age;
private Gender gender;


}
35 changes: 35 additions & 0 deletions src/main/java/com/sequence/anonymous/user/dto/UserResponse.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
package com.sequence.anonymous.user.dto;

import com.sequence.anonymous.user.domain.user.Gender;
import com.sequence.anonymous.user.domain.user.OAuth2Provider;
import com.sequence.anonymous.user.domain.user.Role;
import com.sequence.anonymous.user.domain.user.User;
import lombok.Getter;


@Getter

public class UserResponse {

private final Long id;
private final String providerId;
private final OAuth2Provider provider;
private final String name;
private final Integer age;
private final Gender gender;
private final String email;
private final Role role;
private final Boolean withdrawal;

public UserResponse(User user){
this.id = user.getId();
this.providerId = user.getProviderId();
this.provider = user.getProvider();
this.name = user.getName();
this.age = user.getAge();
this.gender = user.getGender();
this.email = user.getEmail();
this.role = user.getRole();
this.withdrawal = user.getWithdrawal();
}
}
Original file line number Diff line number Diff line change
@@ -1,14 +1,58 @@
package com.sequence.anonymous.user.presentation;

import com.sequence.anonymous.security.CustomOAuth2User;
import com.sequence.anonymous.user.application.UserService;
import com.sequence.anonymous.user.domain.user.Gender;
import com.sequence.anonymous.user.domain.user.User;
import com.sequence.anonymous.user.dto.InitializeRequest;
import com.sequence.anonymous.user.dto.UserResponse;
import jakarta.transaction.Transactional;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.http.ResponseEntity;
import org.springframework.security.core.annotation.AuthenticationPrincipal;

import org.springframework.web.bind.annotation.*;

@Transactional
@RequiredArgsConstructor
@RestController
@RequestMapping("/users")
public class UserController {

private final UserService userService;

@GetMapping("/me")
public ResponseEntity<UserResponse> findMyInfo(@AuthenticationPrincipal CustomOAuth2User user){
Long currentUserId = user.getId();
User currentUser = userService.findById(currentUserId);

return ResponseEntity.ok(new UserResponse((User) currentUser));

}

@GetMapping
public ResponseEntity<UserResponse> findUser(@RequestParam(name = "id", required = false) Long id,
@RequestParam(name = "name", required = false) String name) {
if (id != null) {
User user = userService.findById(id);
return ResponseEntity.ok(new UserResponse(user));
}

else if (name != null) {
User user = userService.findByName(name);
return ResponseEntity.ok(new UserResponse(user));
}

else {
throw new IllegalArgumentException("Unexpected user");
}
}



@PostMapping("/profiles")
public void initializeProfile(@RequestBody InitializeRequest initializeRequest, @AuthenticationPrincipal CustomOAuth2User user) {
userService.initializeProfile(user.getId(), initializeRequest);
}

}