Skip to content

Commit fce81e9

Browse files
committed
[250406] User : 빌더 패턴으로 객체생성 통일 / userId기준으로 토큰 생성 / Users 엔티티네임 변경 / users 데이터 저장 오류 수정
1 parent d6e1562 commit fce81e9

File tree

10 files changed

+89
-108
lines changed

10 files changed

+89
-108
lines changed
Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,11 @@
11
package com.ecommerce.member.dto.requset;
22

3+
import io.micrometer.common.util.StringUtils;
4+
import lombok.AllArgsConstructor;
5+
import lombok.NoArgsConstructor;
6+
7+
@NoArgsConstructor
8+
@AllArgsConstructor
39
public class RegisterRequest {
410

511
public String email;
@@ -13,14 +19,7 @@ public class RegisterRequest {
1319
public String password;
1420

1521
public boolean hasNotPassword() {
16-
return password == null || password.isBlank();
22+
return StringUtils.isBlank(password) || StringUtils.isEmpty(password);
1723
}
1824

19-
public RegisterRequest(String email, String userName, String phoneNumber, String role, String password) {
20-
this.email = email;
21-
this.userName = userName;
22-
this.phoneNumber = phoneNumber;
23-
this.role = role;
24-
this.password = password;
25-
}
2625
}

src/main/java/com/ecommerce/member/memberController/MemberController.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@
44
import com.ecommerce.member.dto.requset.ModifyUserRequest;
55
import com.ecommerce.member.dto.requset.RegisterRequest;
66
import com.ecommerce.member.dto.response.LoginResponse;
7-
import com.ecommerce.member.memberEntity.UserEntity;
7+
import com.ecommerce.member.memberEntity.Users;
88
import com.ecommerce.member.memberService.UserService;
9-
import com.ecommerce.util.JwtUtil;
9+
import com.ecommerce.util.JwtService;
1010
import lombok.RequiredArgsConstructor;
1111
import org.springframework.http.ResponseEntity;
1212
import org.springframework.validation.annotation.Validated;
@@ -21,17 +21,17 @@
2121
@RequiredArgsConstructor
2222
public class MemberController {
2323

24-
private final JwtUtil jwtUtil;
24+
private final JwtService jwtService;
2525
private final UserService userService;
2626

2727
@PostMapping("/member/users/registration")
28-
public UserEntity register(@RequestBody RegisterRequest registerRequest) throws NoSuchAlgorithmException {
28+
public Users register(@RequestBody RegisterRequest registerRequest) throws NoSuchAlgorithmException {
2929
return userService.registerUser(registerRequest);
3030
}
3131

3232
@PostMapping("/member/users/modify")
33-
public UserEntity modifyUser(@RequestBody ModifyUserRequest dto, @RequestHeader("Authorization") String token) {
34-
String email = jwtUtil.extractEmail(token);
33+
public Users modifyUser(@RequestBody ModifyUserRequest dto, @RequestHeader("Authorization") String token) {
34+
String email = jwtService.generateToken(token);
3535
return userService.modifyUser(email, dto);
3636
}
3737

src/main/java/com/ecommerce/member/memberEntity/UserEntity.java

Lines changed: 0 additions & 44 deletions
This file was deleted.
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
package com.ecommerce.member.memberEntity;
2+
3+
4+
import jakarta.persistence.Column;
5+
import jakarta.persistence.Entity;
6+
import jakarta.persistence.Id;
7+
import jakarta.persistence.Table;
8+
import lombok.AllArgsConstructor;
9+
import lombok.Builder;
10+
import lombok.NoArgsConstructor;
11+
12+
@Entity
13+
@Table(name = "users")
14+
@Builder
15+
@NoArgsConstructor
16+
@AllArgsConstructor
17+
public class Users {
18+
19+
@Id
20+
@Column(name = "user_id", nullable = false)
21+
public String userId;
22+
23+
@Column(unique = true)
24+
public String email;
25+
26+
public String password;
27+
28+
public String salt;
29+
30+
@Column(name = "user_name")
31+
public String userName;
32+
33+
@Column(name = "phone_number", unique = true)
34+
public String phoneNumber;
35+
36+
public String role;
37+
38+
public static Users of(String userId, String email, String password, String salt, String userName, String phoneNumber, String role) {
39+
return Users.builder()
40+
.userId(userId).email(email).password(password).salt(salt).userName(userName).phoneNumber(phoneNumber).role(role)
41+
.build();
42+
}
43+
44+
}
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
package com.ecommerce.member.memberRepository;
22

3-
import com.ecommerce.member.memberEntity.UserEntity;
3+
import com.ecommerce.member.memberEntity.Users;
44
import org.springframework.data.jpa.repository.JpaRepository;
55

66
import java.util.Optional;
77

8-
public interface UserRepository extends JpaRepository<UserEntity, Long> {
8+
public interface UserRepository extends JpaRepository<Users, Long> {
99

10-
Optional<UserEntity> findByEmail(String email);
10+
Optional<Users> findByEmail(String email);
1111

1212
}

src/main/java/com/ecommerce/member/memberService/UserService.java

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,36 +4,38 @@
44
import com.ecommerce.member.dto.requset.ModifyUserRequest;
55
import com.ecommerce.member.dto.requset.RegisterRequest;
66
import com.ecommerce.member.dto.response.LoginResponse;
7-
import com.ecommerce.member.memberEntity.UserEntity;
7+
import com.ecommerce.member.memberEntity.Users;
88
import com.ecommerce.member.memberRepository.UserRepository;
9-
import com.ecommerce.util.JwtUtil;
9+
import com.ecommerce.util.JwtService;
1010
import com.ecommerce.util.PasswordUtil;
1111
import lombok.RequiredArgsConstructor;
1212
import org.springframework.stereotype.Service;
1313

1414
import java.security.NoSuchAlgorithmException;
15+
import java.util.UUID;
1516

1617
@Service
1718
@RequiredArgsConstructor
1819
public class UserService {
1920

20-
private final JwtUtil jwtUtil;
21+
private final JwtService jwtService;
2122
private final UserRepository userRepository;
2223

23-
public UserEntity registerUser(RegisterRequest registerRequest) throws NoSuchAlgorithmException {
24+
public Users registerUser(RegisterRequest registerRequest) throws NoSuchAlgorithmException {
2425
if (registerRequest.hasNotPassword()) {
2526
throw new IllegalArgumentException("Entering password is necessary");
2627
}
2728

2829
String salt = PasswordUtil.generateSalt();
2930
String hashWithSalt = PasswordUtil.hashWithSalt(registerRequest.password, salt);
31+
String userId = UUID.randomUUID().toString();
3032

31-
var user = new UserEntity(registerRequest.email, registerRequest.userName, hashWithSalt, salt, registerRequest.phoneNumber, registerRequest.role);
33+
var user = Users.of(userId, registerRequest.email, hashWithSalt, salt, registerRequest.userName, registerRequest.phoneNumber, registerRequest.role);
3234

3335
return userRepository.save(user);
3436
}
3537

36-
public UserEntity modifyUser(String email, ModifyUserRequest dto) {
38+
public Users modifyUser(String email, ModifyUserRequest dto) {
3739
var user = userRepository.findByEmail(email)
3840
.orElseThrow(() -> new IllegalArgumentException("User not found"));
3941

@@ -45,14 +47,14 @@ public UserEntity modifyUser(String email, ModifyUserRequest dto) {
4547

4648

4749
public LoginResponse responseToken(LoginRequest loginRequest) throws NoSuchAlgorithmException {
48-
UserEntity loginUser = checkValidPasswd(loginRequest);
49-
String token = jwtUtil.generateToken(loginUser.email);
50+
Users loginUser = checkValidPasswd(loginRequest);
51+
String token = jwtService.generateToken(loginUser.userId);
5052

5153
return new LoginResponse(token);
5254
}
5355

54-
public UserEntity checkValidPasswd(LoginRequest loginRequest) throws NoSuchAlgorithmException {
55-
UserEntity user = getUserByEmail(loginRequest);
56+
public Users checkValidPasswd(LoginRequest loginRequest) throws NoSuchAlgorithmException {
57+
Users user = getUserByEmail(loginRequest);
5658
String hashWithSalt = PasswordUtil.hashWithSalt(loginRequest.password, user.salt);
5759

5860
if (!hashWithSalt.equals(user.password)) {
@@ -62,7 +64,7 @@ public UserEntity checkValidPasswd(LoginRequest loginRequest) throws NoSuchAlgor
6264
return user;
6365
}
6466

65-
private UserEntity getUserByEmail(LoginRequest loginRequest) {
67+
private Users getUserByEmail(LoginRequest loginRequest) {
6668
return userRepository.findByEmail(loginRequest.email)
6769
.orElseThrow(() -> new IllegalArgumentException("User not found"));
6870
}

src/main/java/com/ecommerce/util/JsonUtilsDeco.java

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,6 @@
33
import com.google.gson.FieldNamingPolicy;
44
import com.google.gson.Gson;
55
import com.google.gson.GsonBuilder;
6-
import com.google.gson.JsonObject;
7-
8-
import java.util.Map;
96

107
public interface JsonUtilsDeco {
118
Gson prettyGson = new GsonBuilder()
@@ -23,9 +20,4 @@ public interface JsonUtilsDeco {
2320
.serializeNulls()
2421
.create();
2522

26-
static String convertMapToJsonString(Map<String, String> payload) {
27-
JsonObject obj = new JsonObject();
28-
payload.forEach(obj::addProperty);
29-
return prettyGson.toJson(obj);
30-
}
3123
}

src/main/java/com/ecommerce/util/JwtUtil.java renamed to src/main/java/com/ecommerce/util/JwtService.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010

1111
@Component
1212
@RequiredArgsConstructor
13-
public class JwtUtil {
13+
public class JwtService {
1414

1515
private final JwtKeyProvider keyProvider;
1616

@@ -25,7 +25,7 @@ public String generateToken(String id) {
2525

2626
}
2727

28-
public String extractEmail(String token) {
28+
public String extractUserId(String token) {
2929
Jws<Claims> claimsJws = Jwts.parser().verifyWith(keyProvider.getKey()).build().parseSignedClaims(token);
3030
return replacePrefix(claimsJws.getPayload().getSubject());
3131
}

src/test/java/com/ecommerce/member/memberService/UserServiceTest.java

Lines changed: 3 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,7 @@
44
import com.ecommerce.member.dto.requset.ModifyUserRequest;
55
import com.ecommerce.member.dto.requset.RegisterRequest;
66
import com.ecommerce.member.dto.response.LoginResponse;
7-
import com.ecommerce.member.memberEntity.UserEntity;
8-
import com.ecommerce.member.memberRepository.UserRepository;
7+
import com.ecommerce.member.memberEntity.Users;
98
import com.ecommerce.util.JsonUtilsDeco;
109
import org.junit.jupiter.api.DisplayName;
1110
import org.junit.jupiter.api.Test;
@@ -16,20 +15,10 @@
1615

1716
import static org.assertj.core.api.BDDAssertions.then;
1817

19-
//@SpringBootTest(classes ={
20-
// UserEntity.class
21-
// , UserService.class
22-
// , JwtUtil.class
23-
// , JwtKeyProvider.class
24-
// , PasswordUtil.class})
25-
//@EnableJpaRepositories(basePackages ="com.ecommerce.member.memberRepository")
26-
//@EntityScan(basePackages ="com.ecommerce.member.UserEntity")
27-
//@DataJpaTest
2818
@SpringBootTest
2919
class UserServiceTest {
3020

3121
@Autowired private UserService sut;
32-
@Autowired private UserRepository userRepository;
3322

3423

3524
@Test
@@ -44,10 +33,10 @@ void isBeanNotEmpty() {
4433
void registerTest() throws NoSuchAlgorithmException {
4534

4635
// Given
47-
RegisterRequest registerRequest = new RegisterRequest("[email protected]", "tempuser", "010-0000-0000", "CUSTOMER", "passwordTest");
36+
var registerRequest = new RegisterRequest("[email protected]", "tempuser", "010-0000-0000", "CUSTOMER", "passwordTest");
4837

4938
// When
50-
UserEntity userEntity = sut.registerUser(registerRequest);
39+
Users userEntity = sut.registerUser(registerRequest);
5140

5241
// Then
5342
then(userEntity).isNotNull();

src/test/java/com/ecommerce/util/JwtUtilTest.java renamed to src/test/java/com/ecommerce/util/JwtServiceTest.java

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,22 +3,20 @@
33
import lombok.extern.slf4j.Slf4j;
44
import org.junit.jupiter.api.DisplayName;
55
import org.junit.jupiter.api.Test;
6-
import org.slf4j.Logger;
7-
import org.slf4j.LoggerFactory;
86
import org.springframework.beans.factory.annotation.Autowired;
97
import org.springframework.boot.test.context.SpringBootTest;
108

119
import static org.assertj.core.api.BDDAssertions.then;
1210

1311
@Slf4j
1412
@SpringBootTest
15-
class JwtUtilTest {
13+
class JwtServiceTest {
1614

17-
@Autowired private JwtUtil jwtUtil;
15+
@Autowired private JwtService jwtService;
1816

1917
@Test
2018
void isBeanNotNull() {
21-
then(jwtUtil).isNotNull();
19+
then(jwtService).isNotNull();
2220
}
2321

2422

@@ -27,10 +25,10 @@ void isBeanNotNull() {
2725
void generateTokenTest() {
2826

2927
// Given
30-
String email = "[email protected]";
28+
String userId = "e7a96106-c4bb-457e-9e86-c859e93b21a9";
3129

3230
// When
33-
String token = jwtUtil.generateToken(email);
31+
String token = jwtService.generateToken(userId);
3432

3533
// Then
3634
then(token).isNotNull();
@@ -39,16 +37,17 @@ void generateTokenTest() {
3937
}
4038

4139
@Test
42-
void extractEmail() {
40+
void extractUserId() {
41+
4342
// Given
44-
String email = "[email protected]";
43+
String userId = "e7a96106-c4bb-457e-9e86-c859e93b21a9";
4544

4645
// When
47-
String token = jwtUtil.generateToken(email);
48-
String extractEmail = jwtUtil.extractEmail(token);
46+
String token = jwtService.generateToken(userId);
47+
String extractEmail = jwtService.extractUserId(token);
4948

5049
// Then
5150
then(extractEmail).isNotNull();
52-
log.info("extractEmail >> {}", extractEmail);
51+
log.info("extractUserId >> {}", extractEmail);
5352
}
5453
}

0 commit comments

Comments
 (0)