diff --git a/.DS_Store b/.DS_Store index c7e1072e..e82ca7ed 100644 Binary files a/.DS_Store and b/.DS_Store differ diff --git a/src/.DS_Store b/src/.DS_Store index 6ea33bf0..83a4c15f 100644 Binary files a/src/.DS_Store and b/src/.DS_Store differ diff --git a/src/main/.DS_Store b/src/main/.DS_Store index a55ed7e8..a068fe57 100644 Binary files a/src/main/.DS_Store and b/src/main/.DS_Store differ diff --git a/src/main/java/.DS_Store b/src/main/java/.DS_Store new file mode 100644 index 00000000..419e452f Binary files /dev/null and b/src/main/java/.DS_Store differ diff --git a/src/main/java/org/.DS_Store b/src/main/java/org/.DS_Store new file mode 100644 index 00000000..e6675bd3 Binary files /dev/null and b/src/main/java/org/.DS_Store differ diff --git a/src/main/java/org/ezcode/codetest/common/security/config/SecurityConfig.java b/src/main/java/org/ezcode/codetest/common/security/config/SecurityConfig.java index c0a80af4..ff750eff 100644 --- a/src/main/java/org/ezcode/codetest/common/security/config/SecurityConfig.java +++ b/src/main/java/org/ezcode/codetest/common/security/config/SecurityConfig.java @@ -76,11 +76,12 @@ public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Excepti .requestMatchers(new DispatcherTypeRequestMatcher(DispatcherType.ASYNC)).permitAll() .requestMatchers( SecurityPath.PUBLIC_PATH).permitAll() + //GET요청인 문제 목록 조회, 문제 상세 조회는 가능하게, 나머지 HTTP메서드는 인증 필요하게 설정하기 + .requestMatchers(HttpMethod.GET, "/api/problems", "/api/problems/{problemId}").permitAll() + .requestMatchers("/api/problems/**").authenticated() .requestMatchers("/api/admin/**").hasRole("ADMIN") //어드민 권한 필요 (문제 생성, 관리 등) .requestMatchers(HttpMethod.GET, "/api/languages", - "/api/problems", - "/api/problems/{problemId}", "/api/problems/*/discussions", "/api/problems/{problemId}/discussions/{discussionId}/replies", "/api/problems/{problemId}/discussions/{discussionId}/replies/**").permitAll() diff --git a/src/main/java/org/ezcode/codetest/common/security/util/SecurityPath.java b/src/main/java/org/ezcode/codetest/common/security/util/SecurityPath.java index 0555d87d..12c018fa 100644 --- a/src/main/java/org/ezcode/codetest/common/security/util/SecurityPath.java +++ b/src/main/java/org/ezcode/codetest/common/security/util/SecurityPath.java @@ -17,7 +17,7 @@ public class SecurityPath { "/actuator/**", "/chatting", "/submit-test/**", - "/api/problems/**", + // "/api/problems/**", //문제의 HTTP 요청에 따라 다르게 처리될 수 있도록 SecurityConfig에서 설정함 "/ws/**", "/swagger-ui/**", "/swagger-resources/**", diff --git a/src/main/java/org/ezcode/codetest/presentation/view/ViewController.java b/src/main/java/org/ezcode/codetest/presentation/view/ViewController.java index db0e338d..ad697cae 100644 --- a/src/main/java/org/ezcode/codetest/presentation/view/ViewController.java +++ b/src/main/java/org/ezcode/codetest/presentation/view/ViewController.java @@ -20,6 +20,11 @@ public String getSigninView(){ return "test-login"; } + @GetMapping("/test/reset-password") + public String getResetPasswordView(){ + return "test-reset-password"; + } + @GetMapping("/test/submit") public String getSubmitView() { return "test-submit"; diff --git a/src/main/resources/static/css/test-login.css b/src/main/resources/static/css/test-login.css index 5d3ea44e..dffb7ec8 100644 --- a/src/main/resources/static/css/test-login.css +++ b/src/main/resources/static/css/test-login.css @@ -210,3 +210,75 @@ body { height: 100%; object-fit: contain; } + +.modal { + display: none; + position: fixed; + z-index: 1000; + left: 0; top: 0; + width: 100%; height: 100%; + background-color: rgba(0, 0, 0, 0.6); +} + +.modal-content { + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + background: #101618; + color: #fff; + width: 360px; + padding: 30px 20px; + border-radius: 12px; + text-align: center; + box-shadow: 0 0 15px rgba(0,0,0,0.5); + font-family: 'Gmarket Sans', sans-serif; +} + + +.modal-content h3 { + margin-bottom: 10px; + font-weight: 500; + font-size: 20px; +} + +.modal-content p { + font-size: 14px; + margin-bottom: 20px; + color: #bbb; +} + +.modal-content input { + width: 90%; + padding: 12px; + border-radius: 8px; + border: none; + margin-bottom: 20px; + background: #1e2a2f; + color: #fff; + font-size: 14px; +} + +.modal-buttons button { + padding: 10px 20px; + border: none; + margin: 0 8px; + border-radius: 8px; + font-weight: 600; + cursor: pointer; + transition: all 0.2s ease-in-out; +} + +.modal-buttons button:first-child { + background-color: #555; + color: #fff; +} + +.modal-buttons button:last-child { + background-color: #00c776; + color: #fff; +} + +.modal-buttons button:hover { + opacity: 0.9; +} diff --git a/src/main/resources/static/images/lock-icon.png b/src/main/resources/static/images/lock-icon.png new file mode 100644 index 00000000..3583017e Binary files /dev/null and b/src/main/resources/static/images/lock-icon.png differ diff --git a/src/main/resources/static/js/test-mypage.js b/src/main/resources/static/js/test-mypage.js index 2e499905..5f5e0d36 100644 --- a/src/main/resources/static/js/test-mypage.js +++ b/src/main/resources/static/js/test-mypage.js @@ -56,7 +56,7 @@ function fetchUserData() { const user = res.result; // 2. 받아온 정보로 화면 반영 document.getElementById('nickname').textContent = user.nickname || ''; - document.getElementById('profileImage').src = user.profileImageUrl || '/images/logo.png'; + // document.getElementById('profileImage').src = user.profileImageUrl || '/images/logo.png'; document.getElementById('userId').textContent = user.username || ''; document.getElementById('email').textContent = user.email || ''; document.getElementById('tier').textContent = user.tier || ''; diff --git a/src/main/resources/templates/test-mypage.html b/src/main/resources/templates/test-mypage.html index 62c7d75a..9c7f480d 100644 --- a/src/main/resources/templates/test-mypage.html +++ b/src/main/resources/templates/test-mypage.html @@ -27,7 +27,7 @@
- 프로필 이미지 + 프로필 이미지
닉네임
diff --git a/src/main/resources/templates/test-reset-password.html b/src/main/resources/templates/test-reset-password.html new file mode 100644 index 00000000..f5567e7b --- /dev/null +++ b/src/main/resources/templates/test-reset-password.html @@ -0,0 +1,213 @@ + + + + + + 비밀번호 변경 + + + +
+

비밀번호 변경

+

새로운 비밀번호를 입력해주세요.

+ +
+ +
+ 자물쇠 아이콘 + +
+
+ +
+ +
+ 자물쇠 아이콘 + +
+
+ + +
+ + + +