본문 바로가기
Programming/Spring Boot

[실습] 스프링부트(Spring Boot)로 임시 비밀번호 발급 기능 구현하기

by 돌방로그 2023. 3. 6.


오늘의 실습 목표는 "임시 비밀번호 발급 기능 만들어보기!" 입니다.
본 게시글에서 다루는 사항은 임시 비밀번호 발급 기능을 구현하기 위해 DB(Tables), API를 설계부터 개발, 테스트하는 과정입니다.

 


임시 비밀번호 발급 기능 구현하기

기획/설계

DB

임시 비밀번호와 관련하여 사용되는 테이블은 총 2개로 기존에 구현한 테이블입니다.

 

(1) 관리자 포털 사용자 비밀번호 이력

상세 사항을 확인하고 싶으신 분들은 '[실습] 스프링부트(Spring Boot)로 비밀번호 관리 기능 구현하기 - DB, API 기획/설계하기'를 참고해주세요.

- Schema: web-app
- Table Name: admin_user_pw_history
- Table Objectives: 관리자포털 사용자/직원의 비밀번호 정보 변경 이력이 저장되는 공간
NAME NAME_KOR TYPE NOT NULL NOTES
employee_no 직원번호 VARCHAR(6) V * PK
no 순번 INT V * PK
register_employee_no
register_date_time
update_employee_no
update_date_time
등록직원번호
등록일시
수정직원번호
수정일시
VARCHAR(6)
DATETIME
VARCHAR(6)
DATETIME
V
V
V
V
 
current_pw 현재 비밀번호 TEXT (Crypt) V  
previous_pw_1 이전 비밀번호 (1번째) TEXT (Crypt)    
previous_pw_2 이전 비밀번호 (2번째) TEXT (Crypt)    
pw_trial_state 비밀번호 시도 상태 CHAR(1) V 0: 초기 상태
1-4: 시도 횟수
5: Lock
    > 초기화 필요
temporary_pw_state 임시 비밀번호 여부 CHAR(1) V N: No (Default)
Y: Yes

 

(2) 관리자 포털 사용자 정보

상세 사항을 확인하고 싶으신 분들은 '[실습] 스프링부트(Spring Boot)로 회원 관리 기능 구현하기 - DB, API 기획/설계하기'를 참고해주세요.

- Schema: web-app
- Table Name: admin_user_info
- Table Objectives: 관리자포털 사용자/직원의 기본 정보가 저장되는 공간
NAME NAME_KOR TYPE NOT NULL NOTES
employee_no 직원번호 VARCHAR(6) V * PK
register_employee_no
register_date_time
update_employee_no
update_date_time
등록직원번호
등록일시
수정직원번호
수정일시
VARCHAR(6)
DATETIME
VARCHAR(6)
DATETIME
V
V
V
V
 
employee_name 직원이름 VARCHAR(20) V  
employee_name_eng 직원영문이름 VARCHAR(50)    
employee_company 직원소속회사 VARCHAR(20) V  
employee_division 직원소속본부 VARCHAR(20) V  
employee_team 직원소속팀 VARCHAR(20) V  
employee_position 직원직책 VARCHAR(10)    
employee_email 직원이메일 (사내) VARCHAR(50) V  
employee_phone 직원휴대폰번호 VARCHAR(13) V  
employee_pw 직원비밀번호 TEXT (Crypt) V  
employee_pw_exp_date 직원비밀번호만료일 VARCHAR(8) V  
usage_exp_date 만료일 VARCHAR(8) V - 만료일이 지나면 화면에서 보여지지 않음
- 직원 삭제시 만료일을 해당 일자로 업데이트

 

API

임시 비밀번호와 관련하여 사용되는 테이블은 총 2개이나 임시 비밀번호 발급 API는 총 1개입니다.

임시 비밀번호 발급 API 하나로 비밀번호 이력 테이블에 데이터를 추가하고, 기존 사용자 정보를 수정하는 로직을 진행합니다.

ACTION API PURPOSE
Update / PUT /admin-web/users/update 관리자포털 사용자 임시 비밀번호 발급
- 관리자포털 사용자 비밀번호 이력(admin_user_pw_history) 테이블에 신규 행 추가
- 관리자포털 사용자 정보(admin_user_info) 테이블의 비밀번호 관련 컬럼 정보 수정

 


API 개발

임시 비밀번호 발급 기능은 기존에 개발한 비밀번호 변경 기능과 동일한 REST API를 사용합니다. 

해당 코드를 확인하고 싶으신 분들은 링크를 참조해주세요.

 


API 테스트

테스트는 Postman으로 Controller에 구현한 REST API를 호출하여 해당 로직이 정상적으로 결과를 도출하는지를 확인해야하나 임시 비밀번호 문자열 생성 로직이 Backend가 아닌 Frontend 코드에 있어 Postman으로 API Test가 무의미하여 화면 연결 테스트로 대체합니다. 

화면 연결 테스트는 별도의 글로 포스팅될 예정입니다.

 


댓글