# prachi3266/usermanagement architecture

> Architecture diagram of the GitHub repository prachi3266/usermanagement, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-12). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/prachi3266/usermanagement
- Repository: https://github.com/prachi3266/usermanagement

## Overview

The tree indicates a Spring-based user-management API with authentication and user administration. The likely workflows run through controllers, services, and a repository, with JWT security supporting authentication and protected requests. No README or source excerpts were provided, so these relationships are inferred from filenames and are shown as dashed, unevidenced links; implementation details and persistence technology cannot be confirmed.

Main entry points: [`src/main/java/com/example/UserManagement/Controller/UserController.java`](https://github.com/prachi3266/usermanagement/blob/main/src/main/java/com/example/UserManagement/Controller/UserController.java) (User Controller), [`src/main/java/com/example/UserManagement/config/SecurityConfig.java`](https://github.com/prachi3266/usermanagement/blob/main/src/main/java/com/example/UserManagement/config/SecurityConfig.java) (Security Configuration), [`src/main/java/com/example/UserManagement/Controller/AuthController.java`](https://github.com/prachi3266/usermanagement/blob/main/src/main/java/com/example/UserManagement/Controller/AuthController.java) (Auth Controller), [`src/main/java/com/example/UserManagement/Service/UserService.java`](https://github.com/prachi3266/usermanagement/blob/main/src/main/java/com/example/UserManagement/Service/UserService.java) (User Service)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_api["API"]
  node_auth_controller["Auth Controller"]
  node_user_controller["User Controller"]
  node_exception_handler["Exception Handler"]
  node_not_found["User Not Found Exception"]
end

subgraph group_identity["Identity and Security"]
  node_auth_service["Auth Service<br/>[AuthService.java]"]
  node_user_details["User Details Service"]
  node_jwt_service["JWT Service<br/>[JWTService.java]"]
  node_jwt_filter["JWT Filter"]
  node_security_config["Security Configuration"]
  node_access_denied["Access Denied Handler"]
  node_auth_entry["Authentication Entry Point"]
end

subgraph group_users["User Management"]
  node_user_service["User Service<br/>[UserService.java]"]
  node_user_repository["User Repository"]
end

subgraph group_domain["Domain and Mapping"]
  node_user_model["User Model<br/>[User.java]"]
  node_user_mapper["User Mapper<br/>[UserMapper.java]"]
  node_request_dto["User Request DTO"]
  node_response_dto["User Response DTO"]
  node_login_request["Login Request DTO"]
  node_login_response["Login Response DTO"]
  node_role_update["Role Update DTO<br/>[RoleUpdateDTO.java]"]
end

node_client(("API Client"))

node_client -.->|"submits credentials"| node_auth_controller
node_auth_controller -.->|"delegates authentication"| node_auth_service
node_auth_service -.->|"issues token"| node_jwt_service
node_auth_controller -.->|"accepts credentials"| node_login_request
node_auth_controller -.->|"returns token"| node_login_response
node_client -.->|"requests user operations"| node_user_controller
node_user_controller -.->|"delegates operations"| node_user_service
node_user_service -.->|"accesses users"| node_user_repository
node_user_service -.->|"maps users"| node_user_mapper
node_user_mapper -.->|"maps model"| node_user_model
node_user_controller -.->|"accepts user input"| node_request_dto
node_user_controller -.->|"returns user data"| node_response_dto
node_user_controller -.->|"accepts role changes"| node_role_update
node_user_repository -.->|"persists users"| node_user_model
node_security_config -.->|"configures filter"| node_jwt_filter
node_jwt_filter -.->|"validates token"| node_jwt_service
node_security_config -.->|"configures user lookup"| node_user_details
node_security_config -.->|"configures access handling"| node_access_denied
node_security_config -.->|"configures authentication handling"| node_auth_entry

click node_auth_controller "https://github.com/prachi3266/usermanagement/blob/main/src/main/java/com/example/UserManagement/Controller/AuthController.java"
click node_user_controller "https://github.com/prachi3266/usermanagement/blob/main/src/main/java/com/example/UserManagement/Controller/UserController.java"
click node_auth_service "https://github.com/prachi3266/usermanagement/blob/main/src/main/java/com/example/UserManagement/Service/AuthService.java"
click node_user_details "https://github.com/prachi3266/usermanagement/blob/main/src/main/java/com/example/UserManagement/Service/CustomUserDetailsService.java"
click node_jwt_service "https://github.com/prachi3266/usermanagement/blob/main/src/main/java/com/example/UserManagement/config/JWTService.java"
click node_jwt_filter "https://github.com/prachi3266/usermanagement/blob/main/src/main/java/com/example/UserManagement/config/JwtAuthenticationFilter.java"
click node_security_config "https://github.com/prachi3266/usermanagement/blob/main/src/main/java/com/example/UserManagement/config/SecurityConfig.java"
click node_access_denied "https://github.com/prachi3266/usermanagement/blob/main/src/main/java/com/example/UserManagement/config/CustomAccessDeniedHandler.java"
click node_auth_entry "https://github.com/prachi3266/usermanagement/blob/main/src/main/java/com/example/UserManagement/config/CustomAuthenticationEntryPoint.java"
click node_user_service "https://github.com/prachi3266/usermanagement/blob/main/src/main/java/com/example/UserManagement/Service/UserService.java"
click node_user_repository "https://github.com/prachi3266/usermanagement/blob/main/src/main/java/com/example/UserManagement/Repository/UserRepository.java"
click node_user_model "https://github.com/prachi3266/usermanagement/blob/main/src/main/java/com/example/UserManagement/Model/User.java"
click node_user_mapper "https://github.com/prachi3266/usermanagement/blob/main/src/main/java/com/example/UserManagement/Mapper/UserMapper.java"
click node_request_dto "https://github.com/prachi3266/usermanagement/blob/main/src/main/java/com/example/UserManagement/DTO/UserRequestDTO.java"
click node_response_dto "https://github.com/prachi3266/usermanagement/blob/main/src/main/java/com/example/UserManagement/DTO/UserResponseDTO.java"
click node_login_request "https://github.com/prachi3266/usermanagement/blob/main/src/main/java/com/example/UserManagement/DTO/LoginRequestDTO.java"
click node_login_response "https://github.com/prachi3266/usermanagement/blob/main/src/main/java/com/example/UserManagement/DTO/LoginResponseDTO.java"
click node_role_update "https://github.com/prachi3266/usermanagement/blob/main/src/main/java/com/example/UserManagement/DTO/RoleUpdateDTO.java"
click node_exception_handler "https://github.com/prachi3266/usermanagement/blob/main/src/main/java/com/example/UserManagement/exception/GlobalExceptionHandler.java"
click node_not_found "https://github.com/prachi3266/usermanagement/blob/main/src/main/java/com/example/UserManagement/exception/UserNotFoundException.java"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_auth_controller,node_user_controller,node_exception_handler,node_not_found,node_client toneBlue
class node_auth_service,node_user_details,node_jwt_service,node_jwt_filter,node_security_config,node_access_denied,node_auth_entry toneAmber
class node_user_service,node_user_repository toneMint
class node_user_model,node_user_mapper,node_request_dto,node_response_dto,node_login_request,node_login_response,node_role_update toneRose
```

## Components

### API

- [Auth Controller](https://github.com/prachi3266/usermanagement/blob/main/src/main/java/com/example/UserManagement/Controller/AuthController.java): `src/main/java/com/example/UserManagement/Controller/AuthController.java`
- [User Controller](https://github.com/prachi3266/usermanagement/blob/main/src/main/java/com/example/UserManagement/Controller/UserController.java): `src/main/java/com/example/UserManagement/Controller/UserController.java`
- [Exception Handler](https://github.com/prachi3266/usermanagement/blob/main/src/main/java/com/example/UserManagement/exception/GlobalExceptionHandler.java): `src/main/java/com/example/UserManagement/exception/GlobalExceptionHandler.java`
- [User Not Found Exception](https://github.com/prachi3266/usermanagement/blob/main/src/main/java/com/example/UserManagement/exception/UserNotFoundException.java): `src/main/java/com/example/UserManagement/exception/UserNotFoundException.java`

### Identity and Security

- [Auth Service](https://github.com/prachi3266/usermanagement/blob/main/src/main/java/com/example/UserManagement/Service/AuthService.java): `src/main/java/com/example/UserManagement/Service/AuthService.java`
- [User Details Service](https://github.com/prachi3266/usermanagement/blob/main/src/main/java/com/example/UserManagement/Service/CustomUserDetailsService.java): `src/main/java/com/example/UserManagement/Service/CustomUserDetailsService.java`
- [JWT Service](https://github.com/prachi3266/usermanagement/blob/main/src/main/java/com/example/UserManagement/config/JWTService.java): `src/main/java/com/example/UserManagement/config/JWTService.java`
- [JWT Filter](https://github.com/prachi3266/usermanagement/blob/main/src/main/java/com/example/UserManagement/config/JwtAuthenticationFilter.java): `src/main/java/com/example/UserManagement/config/JwtAuthenticationFilter.java`
- [Security Configuration](https://github.com/prachi3266/usermanagement/blob/main/src/main/java/com/example/UserManagement/config/SecurityConfig.java): `src/main/java/com/example/UserManagement/config/SecurityConfig.java`
- [Access Denied Handler](https://github.com/prachi3266/usermanagement/blob/main/src/main/java/com/example/UserManagement/config/CustomAccessDeniedHandler.java): `src/main/java/com/example/UserManagement/config/CustomAccessDeniedHandler.java`
- [Authentication Entry Point](https://github.com/prachi3266/usermanagement/blob/main/src/main/java/com/example/UserManagement/config/CustomAuthenticationEntryPoint.java): `src/main/java/com/example/UserManagement/config/CustomAuthenticationEntryPoint.java`

### User Management

- [User Service](https://github.com/prachi3266/usermanagement/blob/main/src/main/java/com/example/UserManagement/Service/UserService.java): `src/main/java/com/example/UserManagement/Service/UserService.java`
- [User Repository](https://github.com/prachi3266/usermanagement/blob/main/src/main/java/com/example/UserManagement/Repository/UserRepository.java): `src/main/java/com/example/UserManagement/Repository/UserRepository.java`

### Domain and Mapping

- [User Model](https://github.com/prachi3266/usermanagement/blob/main/src/main/java/com/example/UserManagement/Model/User.java): `src/main/java/com/example/UserManagement/Model/User.java`
- [User Mapper](https://github.com/prachi3266/usermanagement/blob/main/src/main/java/com/example/UserManagement/Mapper/UserMapper.java): `src/main/java/com/example/UserManagement/Mapper/UserMapper.java`
- [User Request DTO](https://github.com/prachi3266/usermanagement/blob/main/src/main/java/com/example/UserManagement/DTO/UserRequestDTO.java): `src/main/java/com/example/UserManagement/DTO/UserRequestDTO.java`
- [User Response DTO](https://github.com/prachi3266/usermanagement/blob/main/src/main/java/com/example/UserManagement/DTO/UserResponseDTO.java): `src/main/java/com/example/UserManagement/DTO/UserResponseDTO.java`
- [Login Request DTO](https://github.com/prachi3266/usermanagement/blob/main/src/main/java/com/example/UserManagement/DTO/LoginRequestDTO.java): `src/main/java/com/example/UserManagement/DTO/LoginRequestDTO.java`
- [Login Response DTO](https://github.com/prachi3266/usermanagement/blob/main/src/main/java/com/example/UserManagement/DTO/LoginResponseDTO.java): `src/main/java/com/example/UserManagement/DTO/LoginResponseDTO.java`
- [Role Update DTO](https://github.com/prachi3266/usermanagement/blob/main/src/main/java/com/example/UserManagement/DTO/RoleUpdateDTO.java): `src/main/java/com/example/UserManagement/DTO/RoleUpdateDTO.java`

### Other components

- **API Client**

## Connections

- API Client → Auth Controller: submits credentials
- Auth Controller → Auth Service: delegates authentication
- Auth Service → JWT Service: issues token
- Auth Controller → Login Request DTO: accepts credentials
- Auth Controller → Login Response DTO: returns token
- API Client → User Controller: requests user operations
- User Controller → User Service: delegates operations
- User Service → User Repository: accesses users
- User Service → User Mapper: maps users
- User Mapper → User Model: maps model
- User Controller → User Request DTO: accepts user input
- User Controller → User Response DTO: returns user data
- User Controller → Role Update DTO: accepts role changes
- User Repository → User Model: persists users
- Security Configuration → JWT Filter: configures filter
- JWT Filter → JWT Service: validates token
- Security Configuration → User Details Service: configures user lookup
- Security Configuration → Access Denied Handler: configures access handling
- Security Configuration → Authentication Entry Point: configures authentication handling
