Functional Core - Pure MFA business logic.
This namespace contains ONLY pure functions for MFA:
All functions are pure and deterministic - no I/O operations. TOTP generation and cryptographic operations are handled in the shell layer.
Functional Core - Pure MFA business logic. This namespace contains ONLY pure functions for MFA: - MFA decision logic (when to require MFA) - Backup code validation logic - MFA setup preparation - MFA status evaluation All functions are pure and deterministic - no I/O operations. TOTP generation and cryptographic operations are handled in the shell layer.
(can-disable-mfa? user)Pure function: Check if user can disable MFA.
Args: user: User entity
Returns: {:can-disable? boolean :reason optional-string}
Pure - business rule for MFA disablement.
Pure function: Check if user can disable MFA.
Args:
user: User entity
Returns:
{:can-disable? boolean :reason optional-string}
Pure - business rule for MFA disablement.(can-enable-mfa? user)Pure function: Check if user can enable MFA.
Args: user: User entity
Returns: {:can-enable? boolean :reason optional-string}
Pure - business rule for MFA enablement.
Pure function: Check if user can enable MFA.
Args:
user: User entity
Returns:
{:can-enable? boolean :reason optional-string}
Pure - business rule for MFA enablement.(count-remaining-backup-codes user)Pure function: Count remaining unused backup codes.
Args: user: User entity
Returns: Integer count of remaining backup codes
Pure - backup code inventory.
Pure function: Count remaining unused backup codes. Args: user: User entity Returns: Integer count of remaining backup codes Pure - backup code inventory.
(determine-mfa-requirement user password-valid? mfa-code _risk-analysis)Pure function: Determine MFA requirement for login attempt.
Args: user: User entity password-valid?: Boolean indicating if password was valid mfa-code: Optional MFA code provided risk-analysis: Risk analysis from authentication
Returns: {:requires-mfa? boolean :mfa-verified? boolean-or-pending ; :pending when shell verification needed :allow-login? boolean-or-pending ; :pending when shell verification needed :reason string}
Pure - MFA login flow decision logic.
Pure function: Determine MFA requirement for login attempt.
Args:
user: User entity
password-valid?: Boolean indicating if password was valid
mfa-code: Optional MFA code provided
risk-analysis: Risk analysis from authentication
Returns:
{:requires-mfa? boolean
:mfa-verified? boolean-or-pending ; :pending when shell verification needed
:allow-login? boolean-or-pending ; :pending when shell verification needed
:reason string}
Pure - MFA login flow decision logic.(format-backup-code code)Pure function: Format backup code for display.
Args: code: Raw backup code string
Returns: Formatted backup code string (e.g., 'XXXX-XXXX-XXXX')
Pure - backup code formatting.
Pure function: Format backup code for display. Args: code: Raw backup code string Returns: Formatted backup code string (e.g., 'XXXX-XXXX-XXXX') Pure - backup code formatting.
(generate-backup-codes-pattern count)Pure function: Generate pattern for backup codes.
Args: count: Number of backup codes to generate
Returns: Vector of integers representing required code count
Pure - backup code generation template. Actual random generation happens in shell layer.
Pure function: Generate pattern for backup codes. Args: count: Number of backup codes to generate Returns: Vector of integers representing required code count Pure - backup code generation template. Actual random generation happens in shell layer.
(get-mfa-status user)Pure function: Get current MFA status for user.
Args: user: User entity
Returns: {:enabled boolean :enabled-at optional-instant :backup-codes-remaining integer}
Pure - MFA status aggregation.
Pure function: Get current MFA status for user.
Args:
user: User entity
Returns:
{:enabled boolean
:enabled-at optional-instant
:backup-codes-remaining integer}
Pure - MFA status aggregation.(is-mfa-setup-complete? user)Pure function: Check if MFA setup is complete.
Args: user: User entity
Returns: Boolean - true if MFA is properly set up
Pure - MFA setup completeness check.
Pure function: Check if MFA setup is complete. Args: user: User entity Returns: Boolean - true if MFA is properly set up Pure - MFA setup completeness check.
(prepare-mfa-disablement _user)Pure function: Prepare user updates for MFA disablement.
Args: user: User entity
Returns: Map of field updates to apply to user
Pure - data transformation for MFA removal.
Pure function: Prepare user updates for MFA disablement. Args: user: User entity Returns: Map of field updates to apply to user Pure - data transformation for MFA removal.
(prepare-mfa-enablement _user mfa-secret backup-codes current-time)Pure function: Prepare user updates for MFA enablement.
Args: user: User entity mfa-secret: Base32-encoded TOTP secret backup-codes: Vector of backup codes current-time: Current timestamp
Returns: Map of field updates to apply to user
Pure - data transformation for MFA setup.
Pure function: Prepare user updates for MFA enablement. Args: user: User entity mfa-secret: Base32-encoded TOTP secret backup-codes: Vector of backup codes current-time: Current timestamp Returns: Map of field updates to apply to user Pure - data transformation for MFA setup.
(should-regenerate-backup-codes? user threshold)Pure function: Determine if backup codes should be regenerated.
Args: user: User entity threshold: Minimum number of backup codes before regeneration alert
Returns: Boolean - true if backup codes should be regenerated
Pure - backup code lifecycle policy.
Pure function: Determine if backup codes should be regenerated. Args: user: User entity threshold: Minimum number of backup codes before regeneration alert Returns: Boolean - true if backup codes should be regenerated Pure - backup code lifecycle policy.
(should-require-mfa? user _risk-analysis)Pure function: Determine if MFA should be required for login.
Args: user: User entity with MFA settings risk-analysis: Risk analysis from authentication core
Returns: Boolean - true if MFA should be required
Pure - business rule evaluation for MFA requirement.
Pure function: Determine if MFA should be required for login. Args: user: User entity with MFA settings risk-analysis: Risk analysis from authentication core Returns: Boolean - true if MFA should be required Pure - business rule evaluation for MFA requirement.
(validate-backup-codes-format backup-codes)Pure function: Validate backup codes have correct format.
Args: backup-codes: Vector of backup codes
Returns: {:valid? boolean :errors [...]}
Pure - backup code format validation.
Pure function: Validate backup codes have correct format.
Args:
backup-codes: Vector of backup codes
Returns:
{:valid? boolean :errors [...]}
Pure - backup code format validation.cljdoc builds & hosts documentation for Clojure/Script libraries
| Ctrl+k | Jump to recent docs |
| ← | Move to previous article |
| → | Move to next article |
| Ctrl+/ | Jump to the search field |