Login & Register Documentation
This documentation provides guidelines on user authentication processes, including login procedures, registration workflows, and security measures.
UI Component Hierarchy
graph TD
%% Main Components
Root[BorderPane: Root]
Content[StackPane: Content]
Forms[VBox: Forms]
%% Login Components
LoginForm[VBox: LoginForm]
Username[TextField: Username]
Password[PasswordField: Password]
RememberMe[CheckBox: RememberMe]
LoginBtn[Button: Login]
%% Register Components
RegisterForm[VBox: RegisterForm]
RegUsername[TextField: Username]
RegEmail[TextField: Email]
RegPassword[PasswordField: Password]
RegConfirm[PasswordField: Confirm]
RegisterBtn[Button: Register]
%% Navigation
NavLinks[HBox: Navigation]
ToLogin[Hyperlink: LoginLink]
ToRegister[Hyperlink: RegisterLink]
%% Hierarchy
Root --> Content
Content --> Forms
Forms --> LoginForm
Forms --> RegisterForm
Forms --> NavLinks
LoginForm --> Username
LoginForm --> Password
LoginForm --> RememberMe
LoginForm --> LoginBtn
RegisterForm --> RegUsername
RegisterForm --> RegEmail
RegisterForm --> RegPassword
RegisterForm --> RegConfirm
RegisterForm --> RegisterBtn
NavLinks --> ToLogin
NavLinks --> ToRegister
%% Styling
classDef container fill:#e1f5fe,stroke:#01579b
classDef form fill:#fff,stroke:#0288d1
classDef control fill:#e8f5e9,stroke:#2e7d32
classDef nav fill:#fff3e0,stroke:#f57c00
class Root,Content,Forms container
class LoginForm,RegisterForm form
class Username,Password,RegUsername,RegEmail,RegPassword,RegConfirm,LoginBtn,RegisterBtn control
class NavLinks,ToLogin,ToRegister nav
Login Sequence Diagram
sequenceDiagram
%% Actors and Participants
actor User
participant LoginView
participant LoginController
participant LoginViewModel
participant AuthService
participant TokenService
participant DB
%% Login Flow
User->>LoginView: Enter Credentials
LoginView->>LoginController: handleLogin()
LoginController->>LoginViewModel: login()
LoginViewModel->>LoginViewModel: validateInput()
alt Invalid Input
LoginViewModel-->>LoginController: return false
LoginController-->>LoginView: Show Error
else Valid Input
LoginViewModel->>AuthService: authenticate(LoginRequestDTO)
AuthService->>DB: validateCredentials()
alt Authentication Success
DB-->>AuthService: User Found
AuthService-->>LoginViewModel: AuthenticationResultDTO
LoginViewModel->>TokenService: storeToken()
LoginViewModel-->>LoginController: return true
LoginController-->>LoginView: navigateToMainView()
else Authentication Failed
DB-->>AuthService: Invalid Credentials
AuthService-->>LoginViewModel: throw InvalidCredentialsException
LoginViewModel-->>LoginController: return false
LoginController-->>LoginView: Show Error
end
end
The login sequence diagram illustrates the interaction between the user and the system components during the authentication process. It highlights the validation steps and the handling of both successful and failed authentication attempts.
Key Features
- Input Validation: Ensures that user credentials meet required formats and constraints.
- Authentication: Validates credentials against stored data to authenticate the user.
- Token Management: Stores authentication tokens upon successful login for session management.
- Error Handling: Displays appropriate error messages for invalid inputs or failed authentications.
- Remember Me Functionality: Allows users to stay logged in across sessions using tokens.
Register Sequence Diagram
sequenceDiagram
%% Actors and Participants
actor User
participant RegisterView
participant RegisterController
participant RegisterViewModel
participant UserService
participant DB
%% Register Flow
User->>RegisterView: Click Register
RegisterView->>RegisterController: handleRegister()
RegisterController->>RegisterViewModel: register()
RegisterViewModel->>RegisterViewModel: validateInput()
alt Invalid Input
RegisterViewModel-->>RegisterController: return false
RegisterController-->>RegisterView: Show Validation Error
else Valid Input
RegisterViewModel->>UserService: registerUser(RegisterRequestDTO)
UserService->>DB: save()
DB-->>UserService: User Created
UserService-->>RegisterViewModel: Success
RegisterViewModel-->>RegisterController: return true
RegisterController-->>RegisterView: Show Success & Navigate to Login
end
The register sequence diagram outlines the process of user registration within the system. It covers input validation, user creation, and the subsequent feedback provided to the user upon successful or failed registration attempts.
Key Features
- Input Validation: Ensures that registration details are valid and meet all requirements.
- User Creation: Persists new user data to the database upon successful validation.
- Feedback Mechanism: Notifies users of successful registration and redirects them to the login view.
- Error Handling: Displays validation errors if inputs are invalid or if the user already exists.
- Role Assignment: Allows assignment of user roles (e.g., Admin, User) during registration.
Unified Data Dictionary
This section provides a comprehensive data dictionary for the login and register processes.
Data Transfer Objects (DTOs)
DTO | Fields | Description |
---|---|---|
LoginRequestDTO |
String username String password boolean rememberMe String ipAddress |
Data required for user login. |
AuthenticationResultDTO |
String token String rememberMeToken |
Result of successful authentication. |
RegisterRequestDTO |
String username String email String password String firstName String lastName String role |
Data required for user registration. |
Entities and Models
Entity/Model | Fields | Description |
---|---|---|
User |
UUID userId String username String email String passwordHash String firstName String lastName String role |
Represents a user in the system. |
View States
View State | Fields | Description |
---|---|---|
LoginViewState |
boolean loginInProgress boolean passkeyAvailable String errorMessage boolean rememberMe |
State information for the login view. |
RegisterViewState |
boolean registrationInProgress PasswordStrength passwordStrength String errorMessage boolean rtl |
State information for the register view. |
Services
Service Interface | Methods | Description |
---|---|---|
AuthService | AuthenticationResultDTO authenticate(LoginRequestDTO request) throws InvalidCredentialsException | Handles user authentication. |
TokenService |
void storeToken(String token) String retrieveToken() |
Manages storage and retrieval of authentication tokens. |
UserService | void registerUser(RegisterRequestDTO request) throws UserAlreadyExistsException | Handles user registration. |
DB |
User findUserByUsername(String username) void saveUser(User user) |
Database access object for user data. |
Exceptions
Exception | Description |
---|---|
InvalidCredentialsException | Thrown when authentication fails due to invalid credentials. |
UserAlreadyExistsException | Thrown when attempting to register a user that already exists. |