Skip to content

Commit abdef60

Browse files
committed
refactor: 기존 오류 및 로직 리팩토링
1 parent 631456a commit abdef60

File tree

17 files changed

+93
-82
lines changed

17 files changed

+93
-82
lines changed

src/main/java/auth/JwtAuthManager.java

Lines changed: 32 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -22,18 +22,15 @@ public JwtAuthManager(MemberRepository memberRepository) {
2222
this.memberRepository = memberRepository;
2323
}
2424

25-
public String createToken(String email) {
26-
Member member = memberRepository.findByEmail(email)
25+
public String createToken(String email, String password) {
26+
Member member = memberRepository.findByEmailAndPassword(email, password)
2727
.orElseThrow(() -> new AuthorizationException("유효한 이메일이 아닙니다."));
2828

29-
String role = member.getRole();
30-
String name = member.getName();
3129
Long memberId = member.getId();
30+
String role = member.getRole();
3231

33-
Claims claims = Jwts.claims().setSubject(email);
32+
Claims claims = Jwts.claims().setSubject(String.valueOf(memberId));
3433
claims.put("role", role);
35-
claims.put("name", name);
36-
claims.put("memberId", memberId);
3734

3835
Date now = new Date();
3936
Date validity = new Date(now.getTime() + validityInMilliseconds);
@@ -47,48 +44,27 @@ public String createToken(String email) {
4744
}
4845

4946
public Long getId(String token) {
50-
Object memberId = Jwts.parser()
47+
JwtParser parser = Jwts.parserBuilder()
5148
.setSigningKey(secretKey)
52-
.parseClaimsJws(token)
53-
.getBody()
54-
.get("memberId");
55-
56-
if (memberId instanceof Double) {
57-
return ((Double) memberId).longValue();
58-
} else if (memberId instanceof Long) {
59-
return (Long) memberId;
60-
} else {
61-
throw new IllegalArgumentException("유효한 memberId 형식이 아닙니다.");
62-
}
63-
}
49+
.build();
6450

65-
public String getName(String token) {
66-
return (String) Jwts.parser()
67-
.setSigningKey(secretKey)
68-
.parseClaimsJws(token)
69-
.getBody()
70-
.get("name");
71-
}
72-
73-
public String getEmail(String token) {
74-
return (String) Jwts.parser()
75-
.setSigningKey(secretKey)
76-
.parseClaimsJws(token)
77-
.getBody()
78-
.get("email");
51+
Claims claims = parser.parseClaimsJws(token).getBody();
52+
return Long.parseLong(claims.getSubject());
7953
}
8054

8155
public String getRole(String token) {
82-
return (String) Jwts.parser()
56+
JwtParser parser = Jwts.parserBuilder()
8357
.setSigningKey(secretKey)
84-
.parseClaimsJws(token)
85-
.getBody()
86-
.get("role");
58+
.build();
59+
60+
Claims claims = parser.parseClaimsJws(token).getBody();
61+
return claims.get("role", String.class);
8762
}
8863

8964
public void validateToken(String token) {
9065
try {
9166
Jws<Claims> claims = Jwts.parser().setSigningKey(secretKey).parseClaimsJws(token);
67+
9268
if (claims.getBody().getExpiration().before(new Date())) {
9369

9470
throw new IllegalArgumentException("토큰이 만료되었습니다.");
@@ -97,4 +73,22 @@ public void validateToken(String token) {
9773
throw new IllegalArgumentException("유효하지 않은 토큰입니다.", e);
9874
}
9975
}
76+
77+
// public String getName(String token) {
78+
// JwtParser parser = Jwts.parserBuilder()
79+
// .setSigningKey(secretKey)
80+
// .build();
81+
//
82+
// Claims claims = parser.parseClaimsJws(token).getBody();
83+
// return claims.get("name", String.class);
84+
// }
85+
//
86+
// public String getEmail(String token) {
87+
// JwtParser parser = Jwts.parserBuilder()
88+
// .setSigningKey(secretKey)
89+
// .build();
90+
//
91+
// Claims claims = parser.parseClaimsJws(token).getBody();
92+
// return claims.get("email", String.class);
93+
// }
10094
}

src/main/java/auth/LoginMemberArgumentResolver.java

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,16 +7,19 @@
77
import org.springframework.web.context.request.NativeWebRequest;
88
import org.springframework.web.method.support.HandlerMethodArgumentResolver;
99
import org.springframework.web.method.support.ModelAndViewContainer;
10+
import roomescape.domain.member.MemberRepository;
1011
import roomescape.exception.AuthorizationException;
1112
import roomescape.domain.member.Member;
1213

1314
import java.util.Arrays;
1415

1516
public class LoginMemberArgumentResolver implements HandlerMethodArgumentResolver {
1617
private final JwtAuthManager jwtAuthManager;
18+
private final MemberRepository memberRepository;
1719

18-
public LoginMemberArgumentResolver(JwtAuthManager jwtAuthManager) {
20+
public LoginMemberArgumentResolver(JwtAuthManager jwtAuthManager, MemberRepository memberRepository) {
1921
this.jwtAuthManager = jwtAuthManager;
22+
this.memberRepository = memberRepository;
2023
}
2124

2225
@Override
@@ -35,11 +38,19 @@ public Object resolveArgument(MethodParameter parameter,
3538
jwtAuthManager.validateToken(token);
3639

3740
Long id = jwtAuthManager.getId(token);
38-
String name = jwtAuthManager.getName(token);
39-
String email = jwtAuthManager.getEmail(token);
41+
42+
Member member = memberRepository.findById(id)
43+
.orElseThrow(() -> new AuthorizationException("Member not found"));
44+
45+
String name = member.getName();
46+
47+
String email = member.getEmail();
48+
49+
String password = member.getPassword();
50+
4051
String role = jwtAuthManager.getRole(token);
4152

42-
return new Member(id, name, email, role);
53+
return new Member(id, name, email, password, role);
4354
}
4455

4556
private String extractTokenFromCookies(Cookie[] cookies) {

src/main/java/roomescape/DataLoader.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
@Profile("default") // 배포 환경 -> "prod", 로컬 환경 -> "default"
1010
@Component
11-
public abstract class DataLoader implements CommandLineRunner {
11+
public class DataLoader implements CommandLineRunner {
1212
private final MemberRepository memberRepository;
1313

1414
public DataLoader(MemberRepository memberRepository) {

src/main/java/roomescape/TestDataLoader.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515

1616
@Profile("test")
1717
@Component
18-
public abstract class TestDataLoader implements CommandLineRunner {
18+
public class TestDataLoader implements CommandLineRunner {
1919
private final MemberRepository memberRepository;
2020
private final ThemeRepository themeRepository;
2121
private final TimeRepository timeRepository;

src/main/java/roomescape/config/WebMvcConfig.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,27 +8,29 @@
88
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
99
import auth.AdminAccessInterceptor;
1010
import auth.LoginMemberArgumentResolver;
11+
import roomescape.domain.member.MemberRepository;
1112

1213
import java.util.List;
1314

1415
@Configuration
1516
@ComponentScan(basePackages = {"roomescape", "auth"})
1617
public class WebMvcConfig implements WebMvcConfigurer {
1718
private final JwtAuthManager jwtAuthManager;
19+
private final MemberRepository memberRepository;
1820

19-
public WebMvcConfig(JwtAuthManager jwtAuthManager) {
21+
public WebMvcConfig(JwtAuthManager jwtAuthManager, MemberRepository memberRepository) {
2022
this.jwtAuthManager = jwtAuthManager;
23+
this.memberRepository = memberRepository;
2124
}
2225

2326
@Override
2427
public void addArgumentResolvers(List<HandlerMethodArgumentResolver> resolvers) {
25-
resolvers.add(new LoginMemberArgumentResolver(jwtAuthManager));
28+
resolvers.add(new LoginMemberArgumentResolver(jwtAuthManager, memberRepository));
2629
}
2730

2831
@Override
2932
public void addInterceptors(InterceptorRegistry registry) {
3033
registry.addInterceptor(new AdminAccessInterceptor(jwtAuthManager))
31-
.addPathPatterns("/admin/**")
32-
.excludePathPatterns("/login");
34+
.addPathPatterns("/admin/**");
3335
}
3436
}

src/main/java/roomescape/controller/LoginController.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,16 +22,16 @@ public LoginController(JwtAuthManager jwtAuthManager) {
2222
}
2323

2424
@PostMapping("/login")
25-
public ResponseEntity<LoginResponse> login(@RequestBody LoginRequest LoginRequest, HttpServletResponse response) {
26-
String token = jwtAuthManager.createToken(LoginRequest.getEmail());
25+
public ResponseEntity<Void> login(@RequestBody LoginRequest loginRequest, HttpServletResponse response) {
26+
String token = jwtAuthManager.createToken(loginRequest.getEmail(), loginRequest.getPassword());
2727

2828
Cookie cookie = new Cookie("token", token);
2929
cookie.setHttpOnly(true);
3030
cookie.setPath("/");
3131
response.addCookie(cookie);
3232

33-
LoginResponse loginResponse = new LoginResponse(token);
34-
return ResponseEntity.ok().body(loginResponse);
33+
// LoginResponse loginResponse = new LoginResponse(token);
34+
return ResponseEntity.ok().build();
3535
}
3636

3737
@GetMapping("/login/check")

src/main/java/roomescape/controller/ThemeController.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,17 +21,17 @@ public ThemeController(ThemeRepository themeRepository) {
2121
this.themeRepository = themeRepository;
2222
}
2323

24+
@GetMapping("/themes")
25+
public ResponseEntity<List<Theme>> list() {
26+
return ResponseEntity.ok(themeRepository.findAll());
27+
}
28+
2429
@PostMapping("/themes")
2530
public ResponseEntity<Theme> createTheme(@RequestBody Theme theme) {
2631
Theme newTheme = themeRepository.save(theme);
2732
return ResponseEntity.created(URI.create("/themes/" + newTheme.getId())).body(newTheme);
2833
}
2934

30-
@GetMapping("/themes")
31-
public ResponseEntity<List<Theme>> list() {
32-
return ResponseEntity.ok(themeRepository.findAll());
33-
}
34-
3535
@DeleteMapping("/themes/{id}")
3636
public ResponseEntity<Void> deleteTheme(@PathVariable Long id) {
3737
themeRepository.deleteById(id);

src/main/java/roomescape/domain/time/TimeController.java renamed to src/main/java/roomescape/controller/TimeController.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package roomescape.domain.time;
1+
package roomescape.controller;
22

33
import org.springframework.http.ResponseEntity;
44
import org.springframework.web.bind.annotation.DeleteMapping;
@@ -8,6 +8,9 @@
88
import org.springframework.web.bind.annotation.RequestBody;
99
import org.springframework.web.bind.annotation.RequestParam;
1010
import org.springframework.web.bind.annotation.RestController;
11+
import roomescape.domain.time.AvailableTime;
12+
import roomescape.domain.time.Time;
13+
import roomescape.domain.time.TimeService;
1114

1215
import java.net.URI;
1316
import java.util.List;
@@ -27,7 +30,7 @@ public List<Time> list() {
2730

2831
@PostMapping("/times")
2932
public ResponseEntity<Time> create(@RequestBody Time time) {
30-
if (time.getTime() == null || time.getTime().isEmpty()) {
33+
if (time.getValue() == null || time.getValue().isEmpty()) {
3134
throw new RuntimeException();
3235
}
3336

src/main/java/roomescape/domain/login/LoginRequest.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,4 +12,8 @@ public LoginRequest(String email, String password) {
1212
public String getEmail() {
1313
return email;
1414
}
15+
16+
public String getPassword() {
17+
return password;
18+
}
1519
}

src/main/java/roomescape/domain/member/Member.java

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,18 +16,16 @@ public class Member {
1616
private String password;
1717
private String role;
1818

19-
public Member(Long id, String name, String email, String role) {
19+
public Member(Long id, String name, String email, String password, String role) {
2020
this.id = id;
2121
this.name = name;
2222
this.email = email;
23+
this.password = password;
2324
this.role = role;
2425
}
2526

2627
public Member(String name, String email, String password, String role) {
27-
this.name = name;
28-
this.email = email;
29-
this.password = password;
30-
this.role = role;
28+
this(null, name, email, password, role);
3129
}
3230

3331
public Member() {

0 commit comments

Comments
 (0)