This project is a comprehensive User and Role Management (RBAC - Role-Based Access Control) system built with Spring Boot. It is designed to meet fundamental security requirements such as user authentication, authorization, role management, and secure API access.
- Authentication: Secure login and registration processes based on JWT (JSON Web Token).
- Authorization (Role & Permission Management):
- Dynamic role creation, updating, and assignment.
- Defining role-specific permissions.
- User Management (Admin Panel): Detailed management of all accounts in the system by users with Admin privileges.
- Account Security:
- Email verification system.
- Secure password reset codes.
- Account locking (brute-force protection) and email-based unlock mechanisms.
- User Dashboard: Viewing user details, profile updates, profile photo uploads, and account deletion.
- API Documentation: Ready-to-use and testable API endpoints with Swagger / OpenAPI integration.
- Backend: Java, Spring Boot, Spring Security
- Database: Spring Data JPA / Hibernate (Fully compatible with SQL databases)
- Security: JWT (JSON Web Token), BCrypt Encryption Algorithm
- Documentation: Swagger / Springdoc OpenAPI 3.0
- Build Tool: Maven
- Other: HTML Templates (Thymeleaf etc. for email notifications)
Once the project is running, you can use the Swagger UI console to visually inspect and test all endpoints:
👉 Swagger UI Link: http://localhost:8080/swagger-ui.html or http://localhost:8080/swagger-ui/index.html
src/main/java/com/example
├── config/ # Security, JWT Filters and Swagger configurations
├── controllers/ # API Endpoints (Auth, AdminRole, AdminUser, Dashboard)
├── dto/ # Data Transfer Objects (Request and Response models)
├── entity/ # Database Entities (User, Role, Permission, UserRole)
├── exception/ # Custom error handling (Global Exception Handling)
├── repository/ # Data Access Layer (JPA Repositories)
├── services/ # Business logic services
└── util/ # Helper tools/utilities
This project is open to contributions. If you find any bugs or want to add new features, please submit a Pull Request or open an Issue.