A simple HTTP REST API built with Spring Boot. (learning Spring Boot)
This project uses JSON Web Token (JWT) for authentication. To access protected endpoints, you need to include a JWT as a Bearer Token in the request header.
BASE PATH PREFIX: /api/v1/
PATH PREFIX: /auth
Method | URI template | URI Param | Query Param | RequestBody | Description | Example |
---|---|---|---|---|---|---|
GET | /authenticate | - | - | RegisterRequest | Signin (get JWT) | Click |
POST | /register | - | - | AuthenticationRequest | Signup | Click |
GET | /validate | - | token: email confirmation token; | - | Validate user email | Click |
PATH PREFIX: /admin/users
* ROLE_ADMIN required
Method | URI template | URI Param | Query Param | RequestBody | Description | Example |
---|---|---|---|---|---|---|
GET | - | page: page index; size: page size; | - | Get all users | Click | |
GET | /{username} | username: user username; | - | - | Get user by username | Click |
DELETE | /{username} | username: user username; | - | - | Delete user by username | Click |
PUT | /{username}/make-admin | username: user username; | - | - | Make user admin by username | Click |
{
"firstname": "string",
"lastname": "string",
"username": "string",
"email": "string",
"password": "string"
}
{
"username": "string",
"password": "string"
}
{
"token": "eyJhbG...AYKgrP8LBPwRdT9_MqVgBNxdXI"
}
{
"status": "BAD_REQUEST",
"message": "Invalid username or password."
}
{
"status": "BAD_REQUEST",
"message": {
"password": [
"The field is required."
],
"username": [
"The field is required."
]
}
}
{
"message": "User successfully registered. Please check your email to confirm your account."
}
{
"status": "BAD_REQUEST",
"message": "User EMAIL already taken."
}
{
"status": "BAD_REQUEST",
"message": {
"firstname": [
"The field is required."
],
"lastname": [
"The field is required."
]
}
}
[
{
"username": "admin",
"uri": "http://localhost:8080/api/v1/admin/users/admin"
},
{
"username": "baba01",
"uri": "http://localhost:8080/api/v1/admin/users/baba01"
}
]
{
"firstname": "alh",
"lastname": "baba",
"username": "baba01",
"email": "s.baba@gmail.com",
"roles": [
"ROLE_USER"
],
"timestamp": "10-03-2023 22:30:28",
"enabled": false
}
{
"status": "BAD_REQUEST",
"message": "USER not found."
}
{
"message": "User with username <Baba01> has been successfully deleted."
}
{
"message": "User with username <Baba01> is now admin."
}
- Maven
- Spring Boot (3.0.2)
- Java (17)
- MySQL
- JWT (with SignatureAlgorithm=HS256)
- Springdoc
- ModelMapper
- Lombok
- Controller-Service-Repository pattern
- MessageSource
- Pagination
- User email validation with token
- Custom validation messages
- Custom exception handler
- Event and EventListener
- Constructor injection
- Validation
- DTO