Skip to content

Commit ff089ca

Browse files
committed
default
1 parent df42efa commit ff089ca

21 files changed

+80
-356
lines changed

build.gradle

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,12 @@
11
plugins {
2+
id 'org.springframework.boot' version '3.3.0'
3+
id 'io.spring.dependency-management' version '1.1.5'
24
id 'java'
3-
id 'org.springframework.boot' version '3.3.4'
4-
id 'io.spring.dependency-management' version '1.1.6'
55
}
66

7-
group = 'nextstep'
7+
group = 'com.example'
88
version = '0.0.1-SNAPSHOT'
9-
10-
java {
11-
toolchain {
12-
languageVersion = JavaLanguageVersion.of(21)
13-
}
14-
}
9+
sourceCompatibility = '17'
1510

1611
repositories {
1712
mavenCentral()

gradle/wrapper/gradle-wrapper.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
distributionBase=GRADLE_USER_HOME
22
distributionPath=wrapper/dists
3-
distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.1-bin.zip
3+
distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip
44
networkTimeout=10000
55
validateDistributionUrl=true
66
zipStoreBase=GRADLE_USER_HOME

src/main/java/nextstep/app/domain/Member.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,4 +36,8 @@ public String getImageUrl() {
3636
public Set<String> getRoles() {
3737
return roles;
3838
}
39+
40+
public boolean matchPassword(String password) {
41+
return this.password.equals(password);
42+
}
3943
}

src/main/java/nextstep/app/infrastructure/InmemoryMemberRepository.java

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,20 +4,16 @@
44
import nextstep.app.domain.MemberRepository;
55
import org.springframework.stereotype.Repository;
66

7-
import java.util.*;
7+
import java.util.HashMap;
8+
import java.util.List;
9+
import java.util.Map;
10+
import java.util.Optional;
811
import java.util.stream.Collectors;
912

1013
@Repository
1114
public class InmemoryMemberRepository implements MemberRepository {
12-
public static final Member ADMIN_MEMBER = new Member("[email protected]", "password", "a", "", Set.of("ADMIN"));
13-
public static final Member USER_MEMBER = new Member("[email protected]", "password", "b", "", Set.of("USER"));
1415
private static final Map<String, Member> members = new HashMap<>();
1516

16-
static {
17-
members.put(ADMIN_MEMBER.getEmail(), ADMIN_MEMBER);
18-
members.put(USER_MEMBER.getEmail(), USER_MEMBER);
19-
}
20-
2117
@Override
2218
public Optional<Member> findByEmail(String email) {
2319
return Optional.ofNullable(members.get(email));

src/main/java/nextstep/app/ui/LoginController.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
import jakarta.servlet.http.HttpServletRequest;
55
import jakarta.servlet.http.HttpServletResponse;
66
import jakarta.servlet.http.HttpSession;
7-
//import nextstep.oauth2.userinfo.OAuth2User;
87
import nextstep.security.authentication.Authentication;
98
import nextstep.security.context.SecurityContextHolder;
109
import org.springframework.stereotype.Controller;

src/main/java/nextstep/security/access/MvcRequestMatcher.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
package nextstep.security.access;
22

3-
import org.springframework.http.HttpMethod;
4-
53
import jakarta.servlet.http.HttpServletRequest;
4+
import org.springframework.http.HttpMethod;
65

76
public class MvcRequestMatcher implements RequestMatcher {
87

src/main/java/nextstep/security/authentication/BasicAuthenticationFilter.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
package nextstep.security.authentication;
22

3+
import jakarta.servlet.FilterChain;
4+
import jakarta.servlet.ServletException;
5+
import jakarta.servlet.http.HttpServletRequest;
6+
import jakarta.servlet.http.HttpServletResponse;
37
import nextstep.security.context.SecurityContext;
48
import nextstep.security.context.SecurityContextHolder;
59
import nextstep.security.userdetails.UserDetailsService;
@@ -8,10 +12,6 @@
812
import org.springframework.util.StringUtils;
913
import org.springframework.web.filter.OncePerRequestFilter;
1014

11-
import jakarta.servlet.FilterChain;
12-
import jakarta.servlet.ServletException;
13-
import jakarta.servlet.http.HttpServletRequest;
14-
import jakarta.servlet.http.HttpServletResponse;
1515
import java.io.IOException;
1616
import java.nio.charset.StandardCharsets;
1717
import java.util.Base64;

src/main/java/nextstep/security/authentication/UsernamePasswordAuthenticationFilter.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,11 @@
11
package nextstep.security.authentication;
22

3+
import jakarta.servlet.FilterChain;
4+
import jakarta.servlet.ServletException;
5+
import jakarta.servlet.ServletRequest;
6+
import jakarta.servlet.ServletResponse;
7+
import jakarta.servlet.http.HttpServletRequest;
8+
import jakarta.servlet.http.HttpServletResponse;
39
import nextstep.security.access.MvcRequestMatcher;
410
import nextstep.security.context.HttpSessionSecurityContextRepository;
511
import nextstep.security.context.SecurityContext;
@@ -9,12 +15,6 @@
915
import org.springframework.http.HttpStatus;
1016
import org.springframework.web.filter.GenericFilterBean;
1117

12-
import jakarta.servlet.FilterChain;
13-
import jakarta.servlet.ServletException;
14-
import jakarta.servlet.ServletRequest;
15-
import jakarta.servlet.ServletResponse;
16-
import jakarta.servlet.http.HttpServletRequest;
17-
import jakarta.servlet.http.HttpServletResponse;
1818
import java.io.IOException;
1919
import java.util.List;
2020

src/main/java/nextstep/security/authorization/AuthorizationFilter.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
11
package nextstep.security.authorization;
22

3-
import nextstep.security.authentication.Authentication;
4-
import nextstep.security.authentication.AuthenticationException;
5-
import nextstep.security.context.SecurityContextHolder;
6-
import org.springframework.web.filter.GenericFilterBean;
7-
83
import jakarta.servlet.FilterChain;
94
import jakarta.servlet.ServletException;
105
import jakarta.servlet.ServletRequest;
116
import jakarta.servlet.ServletResponse;
127
import jakarta.servlet.http.HttpServletRequest;
138
import jakarta.servlet.http.HttpServletResponse;
9+
import nextstep.security.authentication.Authentication;
10+
import nextstep.security.authentication.AuthenticationException;
11+
import nextstep.security.context.SecurityContextHolder;
12+
import org.springframework.web.filter.GenericFilterBean;
13+
1414
import java.io.IOException;
1515

1616
public class AuthorizationFilter extends GenericFilterBean {

src/main/java/nextstep/security/authorization/RequestAuthorizationManager.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
package nextstep.security.authorization;
22

3+
import jakarta.servlet.http.HttpServletRequest;
34
import nextstep.security.access.RequestMatcher;
45
import nextstep.security.access.RequestMatcherEntry;
56
import nextstep.security.authentication.Authentication;
67

7-
import jakarta.servlet.http.HttpServletRequest;
88
import java.util.List;
99

1010
public class RequestAuthorizationManager implements AuthorizationManager<HttpServletRequest> {

src/main/java/nextstep/security/config/DefaultSecurityFilterChain.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import jakarta.servlet.Filter;
44
import jakarta.servlet.http.HttpServletRequest;
5+
56
import java.util.List;
67

78
public class DefaultSecurityFilterChain implements SecurityFilterChain {

src/main/java/nextstep/security/config/DelegatingFilterProxy.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
package nextstep.security.config;
22

3+
import jakarta.servlet.*;
34
import org.springframework.web.filter.GenericFilterBean;
45

5-
import jakarta.servlet.*;
66
import java.io.IOException;
77

88
public class DelegatingFilterProxy extends GenericFilterBean {

src/main/java/nextstep/security/config/FilterChainProxy.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
package nextstep.security.config;
22

3-
import org.springframework.web.filter.GenericFilterBean;
4-
53
import jakarta.servlet.*;
64
import jakarta.servlet.http.HttpServletRequest;
5+
import org.springframework.web.filter.GenericFilterBean;
6+
77
import java.io.IOException;
88
import java.util.List;
99

src/main/java/nextstep/security/config/SecurityFilterChain.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import jakarta.servlet.Filter;
44
import jakarta.servlet.http.HttpServletRequest;
5+
56
import java.util.List;
67

78
public interface SecurityFilterChain {

src/main/java/nextstep/security/context/SecurityContextHolderFilter.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
package nextstep.security.context;
22

3-
import org.springframework.web.filter.GenericFilterBean;
4-
53
import jakarta.servlet.FilterChain;
64
import jakarta.servlet.ServletException;
75
import jakarta.servlet.ServletRequest;
86
import jakarta.servlet.ServletResponse;
97
import jakarta.servlet.http.HttpServletRequest;
8+
import org.springframework.web.filter.GenericFilterBean;
9+
1010
import java.io.IOException;
1111

1212
public class SecurityContextHolderFilter extends GenericFilterBean {

src/test/java/nextstep/app/BasicAuthTest.java

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
11
package nextstep.app;
22

33
import nextstep.app.domain.Member;
4-
import nextstep.app.infrastructure.InmemoryMemberRepository;
5-
import nextstep.security.authentication.Authentication;
6-
import nextstep.security.context.SecurityContextHolder;
4+
import nextstep.app.domain.MemberRepository;
5+
import org.junit.jupiter.api.BeforeEach;
76
import org.junit.jupiter.api.DisplayName;
87
import org.junit.jupiter.api.Test;
98
import org.springframework.beans.factory.annotation.Autowired;
@@ -15,20 +14,29 @@
1514
import org.springframework.test.web.servlet.result.MockMvcResultMatchers;
1615

1716
import java.util.Base64;
17+
import java.util.Set;
1818

19-
import static org.assertj.core.api.Assertions.assertThat;
2019
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
2120
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
2221

2322
@SpringBootTest
2423
@AutoConfigureMockMvc
2524
class BasicAuthTest {
26-
private static final Member TEST_ADMIN_MEMBER = InmemoryMemberRepository.ADMIN_MEMBER;
27-
private static final Member TEST_USER_MEMBER = InmemoryMemberRepository.USER_MEMBER;
25+
private final Member TEST_ADMIN_MEMBER = new Member("[email protected]", "password", "a", "", Set.of("ADMIN"));
26+
private final Member TEST_USER_MEMBER = new Member("[email protected]", "password", "b", "", Set.of());
2827

2928
@Autowired
3029
private MockMvc mockMvc;
3130

31+
@Autowired
32+
private MemberRepository memberRepository;
33+
34+
@BeforeEach
35+
void setUp() {
36+
memberRepository.save(TEST_ADMIN_MEMBER);
37+
memberRepository.save(TEST_USER_MEMBER);
38+
}
39+
3240
@DisplayName("ADMIN 권한을 가진 사용자가 요청할 경우 모든 회원 정보를 조회할 수 있다.")
3341
@Test
3442
void request_success_with_admin_user() throws Exception {

src/test/java/nextstep/app/FormLoginTest.java

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
package nextstep.app;
22

33
import nextstep.app.domain.Member;
4-
import nextstep.app.infrastructure.InmemoryMemberRepository;
4+
import nextstep.app.domain.MemberRepository;
5+
import org.junit.jupiter.api.BeforeEach;
56
import org.junit.jupiter.api.DisplayName;
67
import org.junit.jupiter.api.Test;
78
import org.springframework.beans.factory.annotation.Autowired;
@@ -12,19 +13,30 @@
1213
import org.springframework.test.web.servlet.MockMvc;
1314
import org.springframework.test.web.servlet.ResultActions;
1415

16+
import java.util.Set;
17+
1518
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
1619
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
1720
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
1821

1922
@SpringBootTest
2023
@AutoConfigureMockMvc
2124
class FormLoginTest {
22-
private static final Member TEST_ADMIN_MEMBER = InmemoryMemberRepository.ADMIN_MEMBER;
23-
private static final Member TEST_USER_MEMBER = InmemoryMemberRepository.USER_MEMBER;
25+
private final Member TEST_ADMIN_MEMBER = new Member("[email protected]", "password", "a", "", Set.of("ADMIN"));
26+
private final Member TEST_USER_MEMBER = new Member("[email protected]", "password", "b", "", Set.of());
2427

2528
@Autowired
2629
private MockMvc mockMvc;
2730

31+
@Autowired
32+
private MemberRepository memberRepository;
33+
34+
@BeforeEach
35+
void setUp() {
36+
memberRepository.save(TEST_ADMIN_MEMBER);
37+
memberRepository.save(TEST_USER_MEMBER);
38+
}
39+
2840
@DisplayName("로그인 성공")
2941
@Test
3042
void login_success() throws Exception {

src/test/java/nextstep/app/SecuredTest.java

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
package nextstep.app;
22

33
import nextstep.app.domain.Member;
4-
import nextstep.app.infrastructure.InmemoryMemberRepository;
4+
import nextstep.app.domain.MemberRepository;
5+
import org.junit.jupiter.api.BeforeEach;
56
import org.junit.jupiter.api.DisplayName;
67
import org.junit.jupiter.api.Test;
78
import org.springframework.beans.factory.annotation.Autowired;
@@ -13,6 +14,7 @@
1314
import org.springframework.test.web.servlet.result.MockMvcResultMatchers;
1415

1516
import java.util.Base64;
17+
import java.util.Set;
1618

1719
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
1820
import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;
@@ -21,12 +23,21 @@
2123
@SpringBootTest
2224
@AutoConfigureMockMvc
2325
class SecuredTest {
24-
private static final Member TEST_ADMIN_MEMBER = InmemoryMemberRepository.ADMIN_MEMBER;
25-
private static final Member TEST_USER_MEMBER = InmemoryMemberRepository.USER_MEMBER;
26+
private final Member TEST_ADMIN_MEMBER = new Member("[email protected]", "password", "a", "", Set.of("ADMIN"));
27+
private final Member TEST_USER_MEMBER = new Member("[email protected]", "password", "b", "", Set.of());
2628

2729
@Autowired
2830
private MockMvc mockMvc;
2931

32+
@Autowired
33+
private MemberRepository memberRepository;
34+
35+
@BeforeEach
36+
void setUp() {
37+
memberRepository.save(TEST_ADMIN_MEMBER);
38+
memberRepository.save(TEST_USER_MEMBER);
39+
}
40+
3041
@DisplayName("ADMIN 권한을 가진 사용자가 요청할 경우 모든 회원 정보를 조회할 수 있다.")
3142
@Test
3243
void request_search_success_with_admin_user() throws Exception {

0 commit comments

Comments
 (0)