From 8ee0e3dc826bdfc8e6225c1819d17cc1e873fbed Mon Sep 17 00:00:00 2001 From: JinMyeong Kim <84405002+kimjinmyeong@users.noreply.github.com> Date: Sun, 10 Nov 2024 19:27:31 +0900 Subject: [PATCH] docs: Update README.md --- README.md | 66 ++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 65 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 7d52ae1..ac9ebff 100644 --- a/README.md +++ b/README.md @@ -1 +1,65 @@ -# spring-security-jwt \ No newline at end of file +# spring-security-jwt + +This repository contains an example Spring project implementing authentication and authorization using Spring Security with JWT. The project provides a set of APIs for user registration, login, and role-based access control. + +## Features + +- **User Registration**: Allows new users to sign up by providing necessary details. +- **User Login**: Authenticates users and provides a JWT token for subsequent requests. +- **Role-Based Access Control**: Access control for specific endpoints based on user roles (`MASTER` and `USER`). + +## APIs + +The following endpoints are available: + +- **User Signup** + - **Endpoint**: `/signup` + - **Method**: `POST` + - **Description**: Registers a new user. + - **Request Body**: `SignupRequestDto` (required) + +- **User Login** + - **Endpoint**: `/sign` + - **Method**: `POST` + - **Description**: Authenticates a user and returns a JWT token. + - **Request Body**: `LoginRequestDto` (required) + +- **Admin Only Access** + - **Endpoint**: `/admin` + - **Method**: `GET` + - **Description**: Grants access to users with the `MASTER` role. + - **Authorization**: Requires `MASTER` role. + +- **User Only Access** + - **Endpoint**: `/user` + - **Method**: `GET` + - **Description**: Grants access to users with the `USER` role. + - **Authorization**: Requires `USER` role. + +## Setup Instructions + +1. **Development Environment** + To run the project in a development environment, execute the following: + ```bash + docker-compose -f docker-compose.dev.yml up + ``` + +2. **Production Deployment** + To deploy in production, update the `.env` file with appropriate production configurations, then run: + ```bash + docker-compose -f docker-compose.prod.yml up + ``` + +## API Documentation + +The project includes Swagger API documentation, accessible at: +``` +/docs +``` + +## Dependencies + +- Spring Boot +- Spring Security +- JWT +- Swagger (for API documentation)