This project is my final project for IT Bootcamp. The requirements for this project were to create a Spring-based web application that persists users in a database and implements role-based access control for certain endpoints. The application should also allow users to register and log in, and return a JWT token accordingly. Authenticated users with the "USER" role should be able to create logs, retrieve their own logs, and delete them. Authenticated users with the "ADMIN" role should be able to delete other users, retrieve logs for a specific user, and change user passwords. To implement the authentication and authorizationaspects of the application, I used Spring Security with OAuth2 and JWT.
As a first-time user of the Spring framework, working on this project was both interesting and challenging for me. I found myself in uncharted waters when it came to learning about the Spring technology stack. However, throughout the course of the project, I was able to gain a solid understanding of how to organize a Spring-based application and persist entities in a database. While I did not implement OAuth2 properly due to lack of time (or knowledge), I was able to create a TokenProvider that generated JWTs on my own. Overall, I had a lot of fun working on this project and learned a great deal in the process.