1. 배경
사용자에게 로그인 시 코드번호를 부여하고 회원가입 절차를 생략하여 사용자 등록 및 로그인의 과정을 간소화한다.
2. 요구사항과 핵심기능
- PM 요구사항
- 코드번호 생성
- 초기 비밀번호 DB에서 동일하게 세팅
- 첫 로그인 시, 비밀번호 변경 화면으로 이동
- 비밀번호 변경 시, 해당 비밀번호로 로그인 시도 시에만 로그인 가능(= 초기 비밀번호는 로그인 불가)
3. 설계
1) Model
현재 회원가입-로그인 기능은 django-auth 모듈에서 제공하는 User Model을 사용하고있다!
(1) 코드번호는 admin에서 직접 생성한다.
- 코드번호는 순차적으로 부여한다.
- 담당교역자 : poko00
- 부장교사 : poko01
- 교사 : poko02~poko99
- poko00~01은 관리자로 로그인 후 관리자 Dashboard로 이동
- poko02~99는 반 교사로 로그인 후 반 Dashboard로 이동
(2) 초기 비밀번호는 admin에서 동일하게 설정한다.
- 초기 비밀번호 : 0000 -> poko0000!
(3) 초기 비밀번호 첫 로그인 시 비밀번호 변경 화면으로 이동
- 초기비밀 번호로 첫로그인 시 비밀번호 변경화면으로 이동
- 비밀번호 변경 후 해당 반교사/관리자 Dashboard로 이동
- 초기 비밀번호는 첫 로그인 외에 사용 불가
(4) 비밀번호 변경은 common app 내 views.py에서 ApiUdatePwd로 구현
2) FE
(1) 비밀번호 변경 html
3) BE
(1) middleware.py
현재 프로젝트에서 로그인 인증을 위해 사용되는 middleware
middleware 개발 중 모든 요청에 대한 초기비밀번호 식별 코드를 추가하는 것이 적절하지 않다고 판단하여 중단
(2) LoginView 확장을 통한 유효성 검사

로그인 프로세스 요약
- auth/views.py -> class LoginView(RedirectURLMixin, FormView) 상속
- form_valid 메서드를 오버라이드, 폼이 유효한 경우 auth_login 함수를 사용하여 사용자를 로그인시키고, 관리자/교사 URL로 리디렉션.
SetPasswordForm(django.contrib.auth.forms)을 상속하지 않고 초기비밀번호는 로그인 되지 않는다는 요청에 따라 기본 폼을 상속 받아 로그인 인증이 필요없는 상태에서 비밀번호 재설정이 가능하게 함.
- 비밀번호 재설정 값에 대한 유효성 검사

4) 도식화
middleware.py 스케치

LoginView 확장을 통한 유효성 검사 스케치
