4.5 KiB
4.5 KiB
회원가입 역할 승인 개발 계획
1) 범위
- 회원가입(
register) 역할 선택 정책 변경 - 승인 대기/승인 처리 기능 구현
- 로그인 차단/메시지 처리
- 관리자 승인 화면(
admin/access/approvals) 실데이터 연동
2) 구현 방향
승인 절차를 안정적으로 운영하기 위해 member 테이블만으로 처리하지 않고, 승인 이력을 분리 저장하는 전용 테이블을 도입한다.
- 회원 기본 정보:
member - 역할 승인 워크플로:
member_approval_request(신규)
3) 데이터 설계
3.1 신규 테이블: member_approval_request
mar_idxPKmb_idxFK (member.mb_idx)requested_level(요청 역할: 1,2,3)status(pending,approved,rejected)request_note(선택)reject_reason(선택)requested_atrequested_by(self 가입이면 본인)processed_atprocessed_by
인덱스 권장:
(status, requested_at)(mb_idx, status)
3.2 member 보조 컬럼(선택)
아래 두 가지 중 하나 선택:
- A안(권장): 승인 여부는
member_approval_request최신 상태로 판단 - B안:
member에 캐시성 플래그(mb_approval_state) 추가
본 계획은 A안을 기준으로 진행한다.
4) 백엔드 변경 계획
4.1 Auth::register()
mb_level검증을in_list[1,2,3]로 제한mb_level=4입력 시 서버에서 거부- 회원 생성 후
member_approval_request에pending레코드 생성 - 회원 레벨은 즉시 활성화하지 않도록 정책 적용
- 방법 1: 임시 기본 레벨(예: 1) + 승인 전 로그인 차단
- 방법 2: 요청 레벨 별도 저장 후 승인 시 반영
4.2 Auth::login()
- 비밀번호 검증 성공 후 승인 상태 체크 추가
pending이면 로그인 차단 + 메시지rejected이면 로그인 차단 + 메시지approved일 때만 기존 로그인 흐름 진행
4.3 Admin\Access
approvals():pending중심 목록 조회- 필터(상태/기간/역할/지자체) 지원
approve($id):- 요청 상태
pending검증 - 사용자 역할 갱신(
member.mb_level = requested_level) - 요청 상태
approved/처리자/처리일 기록
- 요청 상태
reject($id):- 요청 상태
rejected+ 반려 사유 기록
- 요청 상태
트랜잭션:
- 승인/반려 처리 시 반드시 트랜잭션 사용
5) 프론트(뷰) 변경 계획
5.1 app/Views/auth/register.php
- 역할 드롭다운에서
super admin제거 - 안내 문구 추가:
가입 후 관리자 승인 완료 시 로그인 가능합니다.
5.2 app/Views/admin/access/approvals.php
- 플레이스홀더 제거
- 실제 승인 대기 목록 렌더링
- 승인/반려 버튼 및 반려 사유 입력 UI 제공
6) 권한/보안 규칙
- 공개 회원가입에서
super admin요청 금지(서버 검증 필수) - 승인 API는 관리자 권한 필요
- 중복 처리 방지:
- 이미 처리된 요청 재승인/재반려 차단
- 감사 로그:
- 누가, 언제, 어떤 요청을 승인/반려했는지 기록
7) 단계별 작업 순서
- SQL 추가 (
writable/database): 승인 요청 테이블 DDL - 모델 추가:
MemberApprovalRequestModel Auth::register변경 (역할 제한 + 승인요청 생성)Auth::login변경 (승인 전 로그인 차단)Admin\Access목록/승인/반려 로직 구현approvals.phpUI 구현- 메시지/문구 정리
- 테스트 및 회귀 점검
8) 테스트 계획
핵심 케이스:
- 회원가입 역할 선택
- 1/2/3 저장 성공
- 4 입력 시 거부
- 로그인
- 승인 전(
pending) 로그인 실패 + 메시지 확인 - 승인 후 로그인 성공 + 역할별 리다이렉트 확인
- 승인 전(
- 승인 화면
- 목록 조회/필터 동작
- 승인 처리 후 사용자 역할 변경 확인
- 반려 처리 후 로그인 차단 메시지 확인
- 예외
- 이미 처리된 요청 재처리 차단
- 잘못된 요청 ID 처리
9) 파일 변경 예정(구현 단계)
app/Controllers/Auth.phpapp/Controllers/Admin/Access.phpapp/Views/auth/register.phpapp/Views/admin/access/approvals.phpapp/Models/MemberApprovalRequestModel.php(신규)writable/database/*_member_approval_request.sql(신규)
10) 오픈 이슈
- 승인 전 사용자의
mb_level저장 전략 확정 필요- 임시 레벨 사용 vs 요청 테이블 단일 소스
- 반려 후 재신청 UX
- 기존 요청 재오픈 vs 신규 요청 생성
- 지자체관리자 승인 범위 정책 확정