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.