"연차/당직 을 관리하는데 좀 더 효율적이고 편리하게 사용하게끔 만들어졌다."
박성현(BE-팀장) | 서용현 |
---|---|
|
|
- 프론트엔드 프로젝트 링크 : https://github.com/FastCampusGroupFE9/MiniProject_KDT9
프로젝트 링크 : https://hmteresting.netlify.app/
관리자 계정 : [email protected] / fastcampus12#$
create table member
(
id bigint primary key auto_increment,
email varchar(100) unique not null,
password varchar(100) not null,
name varchar(100) not null,
joined_at date not null,
role varchar(10) not null,
annual_amount_id bigint not null,
annual_used int,
annual_remain int,
position varchar(5) not null,
loggedin_at timestamp,
created_at timestamp not null,
modified_at timestamp,
foreign key (annual_amount_id) references annual (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
create table reg
(
id bigint primary key auto_increment,
category varchar(10) not null,
title varchar(40) not null,
started_at date not null,
lasted_at date not null,
reason varchar(20),
status varchar(10) not null,
member_id bigint,
created_at timestamp not null,
modified_at timestamp,
foreign key (member_id) references member (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
create table annual
(
id bigint primary key auto_increment,
years int not null,
annual_amount int not null,
position varchar(5) not null,
hist_year varchar(4) not null,
unique (years, position, hist_year)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
create table login_log
(
id bigint primary key auto_increment,
user_agent varchar(200) not null,
client_ip varchar(15) not null,
member_id bigint not null,
success_login_date timestamp,
foreign key (member_id) references member (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
create table refresh_token
(
id bigint not null auto_increment,
email varchar(255) not null,
refresh_token varchar(255) not null,
primary key (id)
) engine=InnoDB DEFAULT CHARSET=utf8mb4;
엔드포인트 | 메소드 | 요청 본문 (Request Body) | 요청 헤더 (Request Headers) | 응답 본문 (Response Body) |
---|---|---|---|---|
/api/register |
POST | {email: [email protected], password: 1234567, name: “아무개”, join: YYYY-MM-DD } |
- | 상태값 200 ok,json body 에 “회원가입에 성공하였습니다”. 메시지 |
/api/login |
POST | - | { email: 이메일password: 패스워드} |
상태값 200 ok, accessToken 은 json body, refreshToken 은 cookie 값에 저장 |
/api/token |
POST | {"startDate": "2023-08-15", "endDate": "2023-08-20"} |
Authorization: Bearer your_access_token , Cookie: refreshToken |
상태값 200 ok, accessToken 은 json body, refreshToken 은 cookie 값에 저장 |
/api/logout |
POST | - | Authorization: Bearer your_access_token , Cookie: refreshToken |
상태값 200 ok, 메시지 |
/api/main |
GET | ` | Authorization: Bearer your_access_token , Cookie: refreshToken |
|
/api/annual |
POST | {“title” : “연차 신청합니당~~”, “category” : “연차”, “startDate” : “2023-08-02”, “endDate” : “2023-08-07”, “reason” : “병가” } |
Authorization: Bearer your_access_token , Cookie: refreshToken |
상태값 200 ok, 메시지 |
/api/user |
GET | - | Authorization: Bearer your_access_token , Cookie: refreshToken |
|
/api/user |
POST | {“newPassword” : “새로운 비밀번호” } |
Authorization: Bearer your_access_token , Cookie: refreshToken |
상태값 200 ok, 메시지 |
/api/annual/cancel |
POST | {“id” : annul 번호} | Authorization: Bearer your_access_token , Cookie: refreshToken |
상태값 200. 메시지 |
/api/annual/update |
POST | {“id” : 1, “title” : “연차 수정합니다~~”, “startDate” : “2023-08-01”, “endDate” : “2023-08-04”,“reason” : “병가”} | Authorization: Bearer your_access_token , `Cookie: refreshToken |
상태값 200 ok 메시지 |
/api/admin |
GET | - | Authorization: Bearer your_access_token , Cookie: refreshToken |
|
/api/admin/apply |
POST | { “id” : 1 } | Authorization: Bearer your_access_token , Cookie: refreshToken |
상태값 200 ok, 메시지 |
프로젝트는 Java 언어와 Spring Boot 프레임워크를 기반으로 개발되었습니다. Spring Boot는 간결하고 효율적인 코드 작성을 지원하며, 프로젝트의 핵심 로직을 구현하는데 활용되었습니다.
프로젝트는 Amazon EC2 인스턴스를 활용하여 테스트 서버와 운영 서버를 구성하였습니다. 데이터베이스는 Amazon RDS를 이용하여 관리되며, 안정적인 데이터 저장 및 관리가 가능합니다.
Redis를 사용하여 RefreshToken 을 구현하였다. 토큰의 만료기간을 Redsi 의 유효기간으로 설정하여 토큰을 좀 더 안전하게 관리하고 삭제하는 것이 가능합니다.
Spring Security를 통해 강력한 보안 기능을 구현하였으며, JWT(JSON Web Token) 기반의 인증 방식을 사용하여 안전한 사용자 인증을 보장합니다.
프로젝트의 소스 코드는 GitHub Actions를 활용하여 자동으로 테스트 및 배포되며, 개발자들의 작업 흐름을 자동화하고 효율성을 높였습니다.