From f266aeef9b923e1aa30ceaa78ff449ee79213a47 Mon Sep 17 00:00:00 2001 From: art Date: Tue, 30 Jun 2026 16:18:19 +0900 Subject: [PATCH] =?UTF-8?q?feat(redesign):=20=EB=A1=9C=EA=B7=B8=EC=9D=B8/?= =?UTF-8?q?=ED=9A=8C=EC=9B=90=EA=B0=80=EC=9E=85=20=EB=B9=84=EC=A3=BC?= =?UTF-8?q?=EC=96=BC=20=EB=A7=88=ED=81=AC=EC=97=85=20=EC=9D=B4=EC=8B=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 비번 보기 토글(.pw-field/.pw-toggle), 강도막대(.pw-meter), 일치표시(.form-ok), 에러 슬롯(.form-error) DOM/클래스 추가. 제출은 기존 AJAX(fetch /login·/signup)+CSRF 이중방어(_csrf hidden + BibimbapCsrf.headers) 그대로 보존, 필드 name·id 불변. 토글/강도/일치는 인라인 onclick/oninput 별도 스코프 — submit 무간섭. /password/reset 링크는 라우트 미존재로 비노출. Co-Authored-By: Claude Opus 4.8 (1M context) --- src/main/webapp/WEB-INF/views/login.jsp | 31 +++++++++++++++++- src/main/webapp/WEB-INF/views/signup.jsp | 41 ++++++++++++++++++++++-- 2 files changed, 69 insertions(+), 3 deletions(-) diff --git a/src/main/webapp/WEB-INF/views/login.jsp b/src/main/webapp/WEB-INF/views/login.jsp index ddc397d..1bc5f5d 100644 --- a/src/main/webapp/WEB-INF/views/login.jsp +++ b/src/main/webapp/WEB-INF/views/login.jsp @@ -202,6 +202,30 @@ gap: 0.625rem; } } + .pw-field { + position: relative; + display: flex; + align-items: center; + } + .pw-field .auth-field__input { + padding-right: 4rem; + flex: 1; + } + .pw-toggle { + position: absolute; + right: 0.75rem; + background: none; + border: none; + color: var(--text-muted); + font-size: 0.8125rem; + cursor: pointer; + padding: 0 0.25rem; + } + .form-error { + color: #d32f2f; + font-size: 0.8125rem; + margin: 0; + } @@ -228,7 +252,11 @@
- +
+ + +
+ diff --git a/src/main/webapp/WEB-INF/views/signup.jsp b/src/main/webapp/WEB-INF/views/signup.jsp index 093853b..87a466b 100644 --- a/src/main/webapp/WEB-INF/views/signup.jsp +++ b/src/main/webapp/WEB-INF/views/signup.jsp @@ -200,6 +200,37 @@ grid-template-columns: 1fr; } } + .pw-meter { + display: flex; + gap: 4px; + height: 4px; + margin-top: 6px; + } + .pw-meter span { + flex: 1; + border-radius: 2px; + background: var(--border); + transition: background 0.2s; + } + .pw-meter[data-level="1"] span:nth-child(1) { background: #e53935; } + .pw-meter[data-level="2"] span:nth-child(1), + .pw-meter[data-level="2"] span:nth-child(2) { background: #fb8c00; } + .pw-meter[data-level="3"] span { background: #43a047; } + .form-ok { + color: #43a047; + font-size: 0.8125rem; + margin: 4px 0 0; + } + .form-error { + color: #d32f2f; + font-size: 0.8125rem; + margin: 0; + } + .help { + font-size: 0.8125rem; + color: var(--text-muted); + margin: 4px 0 0; + } @@ -233,11 +264,16 @@
- + +
+

8자 이상, 영문·숫자 조합을 권장합니다

- + +
+