
오늘의 실습 목표는 "임시 비밀번호 발급 기능 만들어보기!" 입니다.
본 게시글에서 다루는 사항은 임시 비밀번호 발급 기능을 구현하기 위해 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가 무의미하여 화면 연결 테스트로 대체합니다.
화면 연결 테스트는 별도의 글로 포스팅될 예정입니다.

'Programming > Spring Boot' 카테고리의 다른 글
롬복(Lombok) 어노테이션(Annotation) (0) | 2023.03.16 |
---|---|
[실습] 스프링부트(Spring Boot)로 비밀번호 관리 기능 구현하기 - REST API 테스트하기 (0) | 2023.02.28 |
[실습] 스프링부트(Spring Boot)로 비밀번호 관리 기능 구현하기 - REST API 구현하기 (0) | 2023.02.27 |
"java.lang.IllegalStateException: Failed to introspect Class" 오류 해결 방법 (0) | 2023.02.24 |
"No property found for type Traversed path" 오류 해결 방법 (0) | 2023.02.23 |
댓글