P2-19~21 지자체 수정/삭제, 비밀번호 변경, 로그인 5회 실패 lock

- P2-19: LocalGovernment edit/update/delete 추가, 목록에 수정/비활성 버튼
- P2-20: PasswordChange 컨트롤러 + View (현재 비밀번호 검증 후 변경)
- P2-21: 로그인 5회 연속 실패 시 30분 lock
  - member 테이블에 mb_login_fail_count, mb_locked_until 컬럼 추가
  - Auth::login에 lock 체크/실패 카운트 증가/성공 시 리셋 로직
- E2E 테스트 4개 전체 통과

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
javamon1174
2026-03-25 17:53:52 +09:00
parent da132f0e51
commit c2840a9e34
10 changed files with 319 additions and 4 deletions

View File

@@ -15,6 +15,7 @@
<th>/</th>
<th>상태</th>
<th>등록일</th>
<th class="w-28">작업</th>
</tr>
</thead>
<tbody class="text-right">
@@ -27,6 +28,13 @@
<td class="text-left pl-2"><?= esc($row->lg_gugun) ?></td>
<td class="text-center"><?= (int) $row->lg_state === 1 ? '사용' : '미사용' ?></td>
<td class="text-left pl-2"><?= esc($row->lg_regdate ?? '') ?></td>
<td class="text-center">
<a href="<?= base_url('admin/local-governments/edit/' . (int) $row->lg_idx) ?>" class="text-blue-600 hover:underline text-sm">수정</a>
<form action="<?= base_url('admin/local-governments/delete/' . (int) $row->lg_idx) ?>" method="POST" class="inline ml-1" onsubmit="return confirm('이 지자체를 비활성화하시겠습니까?');">
<?= csrf_field() ?>
<button type="submit" class="text-red-600 hover:underline text-sm">비활성</button>
</form>
</td>
</tr>
<?php endforeach; ?>
</tbody>