프론트(React), 백엔드(SpringBoot/Java) 각팀이 협업하여 ui/ux부터 배포작업까지 완료한 사이드프로젝트입니다.
프로젝트명은 온앤오프(On&Off)이며, 해당 프로젝트는 클라이언트의 일정관리를 손쉽게 유지관리 할 수 있습니다.
배포링크 : https://on-n-off-mini.netlify.app/
개발기간 : 2023.07.24 ~ 2023.08.11
Table of Contents
로그인 / 회원관리
로그인 | 회원관리 |
---|---|
메인(일반) / 메인(관리자)
메인(일반) | 메인(관리자) |
---|---|
관리자
당직휴가관리 | 사원관리 | 사원관리_세부 정보 |
---|---|---|
휴가/당직
휴가/당직관리 | 휴가등록 | 당직등록 |
---|---|---|
! |
당직신청내역 | 휴가신청내역 |
---|---|
개인정보수정
변경_전화번호 | 변경_비밀번호 | 캘린더 |
---|---|---|
김주원 | 박성욱 | 한혜지 | 김지나 |
---|---|---|---|
초기 개발 세팅 회원가입 로그인 개인정보수정 관리자 배포 |
연차 페이지 당직 페이지 캘린더 배포 |
연차 페이지 당직 페이지 개인정보수정 캘린더 |
프로젝트 팀장 프로젝트세팅 로그인 |
- 개발환경 : JAVA 11
- IDE: IntelliJ
- Build: Gradle
- Framework: Spring-Boot 2.7.14
- Database: MySQL
- ORM: Mybatis
- 사용기술
- Spring Web
- Spring Data JPA
- Spring DevTools
- Spring Security
- JWT 4.3.0
- h2database
- lombok
- Postman
- AWS EC2
1. 유저
CREATE TABLE user_tb
(
id INT PRIMARY KEY AUTO_INCREMENT,
email VARCHAR(20) NOT NULL UNIQUE, --로그인 ID로 사용
password VARCHAR(20) NOT NULL, --유효성검사
username VARCHAR(20) NOT NULL, --실명,유효성검사
phone_number VARCHAR(20) NOT NULL, --유효성검사
position VARCHAR(20) NOT NULL, --사원, 주임, 대리, 과장, 차장, 부장
roles VARCHAR(10) NOT NULL, --note: 일반, 관리자 / ENUM DEFAULT '일반'
update_date TIMESTAMP --개인정보 최종 수정일/논의
);
2. 로그인
CREATE TABLE login_tb
(
id INT PRIMARY KEY AUTO_INCREMENT,
user_id INT NOT NULL,
ip VARCHAR(50) NOT NULL,
user_agent VARCHAR(10) NOT NULL,
login_at TIMESTAMP,
FOREIGN KEY (user_id) REFERENCES user_tb(id)
);
3. 연차
CREATE TABLE dayoff_tb
(
id INT PRIMARY KEY AUTO_INCREMENT,
user_id INT NOT NULL,
num_of_dayoff FLOAT NOT NULL, --남은 연차 일수
start_date DATE NOT NULL, --시작일
end_date DATE NOT NULL, --종료일
reason VARCHAR(30) NOT NULL, --사유
type VARCHAR(10) NOT NULL, --연차, 오전반차, 오후반차
status VARCHAR(10) NOT NULL, --대기, 승인, 반려 ENUM DEFAULT '대기'
apply_at DATE NOT NULL,
process_at DATE,
FOREIGN KEY (user_id) REFERENCES user_tb(id)
);
4.당직
CREATE TABLE duty_tb
(
id INT PRIMARY KEY AUTO_INCREMENT,
user_id INT NOT NULL,
date DATE NOT NULL, --당직 날짜
reason VARCHAR(30) NOT NULL, --사유
status VARCHAR(10) NOT NULL, --대기, 승인, 반려
apply_at DATE NOT NULL,
process_at DATE,
FOREIGN KEY (user_id) REFERENCES user_tb(id)
);
- jwt이용, 비밀번호 단방향 암호화
- 개인정보있는경우(이름,휴대폰,이메일) AES256양방향 암호화적용,복호화
- 관련필드에 DB검색할떄도 검색조건을 암호화
- jwt token 인증방식, spring security적용
- login 성공 후 마지막 로그인 성공 날짜 업데이트 적용
- login 성공 후 회원번호, user-agent, client ip, 시간 로그 등록처리
- 일반로그인/관리자로그인
- 개인정보 수정,삭제, 수정된 일자 업데이트
- 개인연차/당직 등록
- 관리자 (유저의 권한 설정), 로그인 발급된 jwt token검증
- 비밀번호변경(단방향 암호화), 전화번호변경
- 신청내역, 사용내역, 등록, 조회, 취소(crud)
- 연차/당직 구분컬럼구성, 테이블1개설계
- 저장/삭제 api구현필요
- 내 연차일 수
- 연차 승인
- 연차 반려
- 데이터 내려줄 조회 api 구현
- 월별 캘린더 주간/일간 등 다양하게 표현