관리자 콘솔

원본 admin/ 을 wvctesol-admin(:3896)으로 옮기는 중입니다. API 서버는 사용자 앱과 공유합니다.

메뉴
13
원본 left_menu.php 기준
옮긴 화면
13 / 13
관리자 API
21
가드레일
31
critical 9

이관 진행도

100%

원본 admin/ 아래 PHP 는 143개지만, 좌측 메뉴가 가리키는 실제 화면은 13개입니다. 나머지는 백업과 폐기된 것입니다.

개발 스펙 (8)

메뉴 13개를 성격이 같은 것끼리 묶어 8개로 적었습니다. 요건 · 규칙 · API · 가드레일 · 구현 계획 · 자바 설계 · 테스트 방법이 들어 있습니다.

관리자 로그인

ADMIN-CONSOLE-LOGINwvctesol-admin/login완료

이 화면에서 할 수 있어야 하는 것 (3)

  • 관리자 아이디와 비밀번호로 로그인한다.
  • 수강생 계정으로는 로그인되지 않는다.
  • 실패 사유를 자세히 알려주지 않는다 — 아이디가 없는지 비밀번호가 틀린지 구분되면 안 된다.

비즈니스 규칙 (3)

  • 관리자 전용 엔드포인트를 쓴다. 수강생 계정은 서버가 거부한다.
    근거: admin/login_proc.php
  • 화면에서 걸러내는 방식이 아니다 — 로그인 자체가 안 된다.
  • 로그인하면 세션이 (console) 레이아웃 전체를 통과시킨다.

API (1)

메서드경로권한모듈 · 설명
POST/api/identity/admin/login공개
관리자 로그인 → accessToken. 관리자 계정만 받는다.
domains:identity:identity-web
401 UNAUTHORIZED

가드레일 (3) — id 가 곧 테스트 이름이다

id반드시 만족해야 하는 것등급
admin-console-requires-login
비로그인 상태로 어떤 관리자 화면에도 머무를 수 없어야 한다.
critical
admin-console-rejects-student
수강생 계정으로는 로그인되지 않아야 한다.
화면에서 감추는 것으로는 부족하다 — API 를 직접 부를 수 있다.
critical
admin-login-no-account-enumeration
아이디가 없는 경우와 비밀번호가 틀린 경우의 응답이 같아야 한다.
high

구현 계획 (3/3)

  1. 관리자 전용 Credentials providerwvctesol-admin
  2. (console) 레이아웃에서 세션을 한 번에 확인wvctesol-admin
  3. trustHost — 프로덕션 빌드에서 Host 신뢰wvctesol-admin

서버 사이드 구현 계획 — 자바 객체별 요구사항 (1/1)

객체모듈책임 · 지켜야 할 것
AdminLoginUseCase
service
identity-app
관리자 로그인.
  • 관리자 계정만 통과시킨다. 수강생 계정은 여기서 막힌다.
  • 레거시 MySQL PASSWORD() 해시가 섞여 있어 두 형식을 모두 다룬다.
  • 실패 사유를 구분해 돌려주지 않는다.

테스트 방법 (3)

가드레일종류확인 방법
admin-console-requires-logine2e비로그인으로 6개 경로 접근 → 전부 /login 리다이렉트
admin-console-rejects-studente2equiztester 로 로그인 시도 → 거부 + 사유 표시
admin-login-no-account-enumerationmanual없는 아이디와 틀린 비밀번호의 응답 문구가 같다

운영

메뉴원본원본 줄수옮긴 파일상태
관리자 관리
/admins
admin/admin/ad_list.php443
  • src/app/(console)/admins/page.tsx
완료
회원 관리
/members
admin/member/mb_list.php529
  • src/app/(console)/members/[id]/page.tsx
  • src/app/(console)/members/page.tsx
완료
배너 관리
/banners
admin/banner/banner_list.php187
  • src/app/(console)/banners/page.tsx
완료

게시판

메뉴원본원본 줄수옮긴 파일상태
공지사항
/notices
admin/board/nt_list.php159
  • src/app/(console)/notices/[id]/page.tsx
  • src/app/(console)/notices/new/page.tsx
  • src/app/(console)/notices/page.tsx
완료
수강후기
/reviews
admin/board/sty_list.php169
  • src/app/(console)/reviews/[id]/page.tsx
  • src/app/(console)/reviews/new/page.tsx
  • src/app/(console)/reviews/page.tsx
완료
합격노트
/pass-notes
admin/board/passnote_list.php248
  • src/app/(console)/pass-notes/[id]/page.tsx
  • src/app/(console)/pass-notes/new/page.tsx
  • src/app/(console)/pass-notes/page.tsx
완료
질문답변
/qna
admin/board/qa_list.php190
  • src/app/(console)/qna/[id]/page.tsx
  • src/app/(console)/qna/page.tsx
완료
상담신청
/applications
admin/board/ap_list.php621
  • src/app/(console)/applications/[id]/page.tsx
  • src/app/(console)/applications/page.tsx
완료
자주듣는 질문
/faqs
admin/board/faq_list.php203
  • src/app/(console)/faqs/[id]/page.tsx
  • src/app/(console)/faqs/new/page.tsx
  • src/app/(console)/faqs/page.tsx
완료

수강 · 결제

메뉴원본원본 줄수옮긴 파일상태
결제리스트
/payments
admin/payment/payment_list.php244
  • src/app/(console)/payments/page.tsx
완료
TESOL Unit
/units/tesol
admin/unit/unit_list.php75
  • src/app/(console)/units/tesol/page.tsx
완료
TEC Unit
/units/tec
admin/unit/unit_list_tec.php75
  • src/app/(console)/units/tec/page.tsx
완료
레벨테스트
/level-tests
admin/unit/level_test_list.php92
  • src/app/(console)/level-tests/page.tsx
완료