Recovery Dashboard Specifications

This document provides detailed specifications for the in-app recovery management dashboard used by organization owners and platform administrators.

Overview

The Recovery Dashboard is an administrative interface for managing encryption key recovery requests. It provides:

  • Real-time view of pending recovery requests
  • Identity verification document review
  • Dual authorization workflow management
  • Time delay monitoring
  • Complete audit trail viewing
  • Recovery rate monitoring and alerting
  • SIEM integration status

User Roles and Access

Role Dashboard Access Capabilities
Team Member None Cannot access dashboard
Team Admin Limited View own team's recoveries (read-only)
Organization Owner Full (org scope) Manage all org recovery requests
Platform Admin Full (all) Manage all recovery requests + system settings

Dashboard Views

1. Recovery Requests Overview

URL: /admin/recovery/

Purpose: Main dashboard showing all recovery requests

Layout

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Recovery Dashboard                                    [Export] [Refresh]β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                                                                         β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚
β”‚  β”‚    2     β”‚  β”‚    1     β”‚  β”‚    3     β”‚  β”‚    5     β”‚  β”‚   0.3%   β”‚  β”‚
β”‚  β”‚ Pending  β”‚  β”‚ Awaiting β”‚  β”‚ In Time  β”‚  β”‚ Completedβ”‚  β”‚ Recovery β”‚  β”‚
β”‚  β”‚ Requests β”‚  β”‚ Approval β”‚  β”‚  Delay   β”‚  β”‚ (30 days)β”‚  β”‚   Rate   β”‚  β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚
β”‚                                                                         β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ Filters: [Status β–Ό] [Date Range β–Ό] [User β–Ό] [Team β–Ό] [Search...]       β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                                                                         β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”‚
β”‚  β”‚ 🟑 AWAITING SECONDARY APPROVAL                                   β”‚   β”‚
β”‚  β”‚ Dr. Sarah Jones ([email protected])                                β”‚   β”‚
β”‚  β”‚ Survey: Diabetes Audit 2025                                      β”‚   β”‚
β”‚  β”‚ Submitted: 30 Nov 2025, 14:30 β€’ Request ID: ABC-123-XYZ         β”‚   β”‚
β”‚  β”‚                                                                   β”‚   β”‚
β”‚  β”‚ Verification: βœ… Photo ID  βœ… Video Call  βœ… Security Questions   β”‚   β”‚
β”‚  β”‚ Primary Approval: [email protected] (30 Nov 16:00)                  β”‚   β”‚
β”‚  β”‚                                                                   β”‚   β”‚
β”‚  β”‚ [View Details] [Approve as Secondary] [Reject]                   β”‚   β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β”‚
β”‚                                                                         β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”‚
β”‚  β”‚ 🟠 IDENTITY VERIFICATION IN PROGRESS                            β”‚   β”‚
β”‚  β”‚ Dr. Michael Brown ([email protected])                         β”‚   β”‚
β”‚  β”‚ Survey: Patient Feedback Q4                                      β”‚   β”‚
β”‚  β”‚ Submitted: 30 Nov 2025, 10:15 β€’ Request ID: DEF-456-UVW         β”‚   β”‚
β”‚  β”‚                                                                   β”‚   β”‚
β”‚  β”‚ Verification: βœ… Photo ID  ⏳ Video Call (scheduled 1 Dec 10:00) β”‚   β”‚
β”‚  β”‚                                                                   β”‚   β”‚
β”‚  β”‚ [View Details] [View Documents] [Schedule/Reschedule Call]       β”‚   β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β”‚
β”‚                                                                         β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”‚
β”‚  β”‚ 🟒 IN TIME DELAY                                                 β”‚   β”‚
β”‚  β”‚ Dr. Emma Wilson ([email protected])                            β”‚   β”‚
β”‚  β”‚ Survey: Research Study 2025                                      β”‚   β”‚
β”‚  β”‚ Approved: 29 Nov 2025, 16:30 β€’ Request ID: GHI-789-RST          β”‚   β”‚
β”‚  β”‚                                                                   β”‚   β”‚
β”‚  β”‚ ⏱️ Time Remaining: 18h 45m                                       β”‚   β”‚
β”‚  β”‚ Recovery Available: 1 Dec 2025, 16:30                           β”‚   β”‚
β”‚  β”‚                                                                   β”‚   β”‚
β”‚  β”‚ [View Details] [View Audit Trail]                                β”‚   β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β”‚
β”‚                                                                         β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Status Indicators

Status Color Icon Description
Pending Verification Orange 🟠 Identity verification in progress
Awaiting Primary Yellow 🟑 Needs first admin approval
Awaiting Secondary Yellow 🟑 Needs second admin approval
In Time Delay Green 🟒 Approved, waiting period active
Ready for Execution Blue πŸ”΅ Time delay complete, ready to execute
Completed Gray βœ… Recovery finished
Rejected Red ❌ Request rejected
Cancelled Red β›” Cancelled by user or admin

2. Request Detail View

URL: /admin/recovery/<request_id>/

Purpose: Full details of a single recovery request

Layout

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ ← Back to Dashboard                                                     β”‚
β”‚                                                                         β”‚
β”‚ Recovery Request: ABC-123-XYZ                                           β”‚
β”‚ Status: 🟑 AWAITING SECONDARY APPROVAL                                  β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                                                                         β”‚
β”‚ USER INFORMATION                                                        β”‚
β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”β”‚
β”‚ β”‚ Name:        Dr. Sarah Jones                                        β”‚β”‚
β”‚ β”‚ Email:       [email protected]                                         β”‚β”‚
β”‚ β”‚ Account:     Created 15 Jan 2024                                    β”‚β”‚
β”‚ β”‚ Tier:        Individual                                             β”‚β”‚
β”‚ β”‚ Organization: NHS Trust West (if applicable)                        β”‚β”‚
β”‚ β”‚ Last Login:  28 Nov 2025, 09:15                                     β”‚β”‚
β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜β”‚
β”‚                                                                         β”‚
β”‚ SURVEY INFORMATION                                                      β”‚
β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”β”‚
β”‚ β”‚ Survey:      Diabetes Audit 2025                                    β”‚β”‚
β”‚ β”‚ Created:     10 Oct 2025                                            β”‚β”‚
β”‚ β”‚ Last Access: 25 Nov 2025, 14:00                                     β”‚β”‚
β”‚ β”‚ Records:     156 patient records                                    β”‚β”‚
β”‚ β”‚ Encryption:  AES-256-GCM (v2)                                       β”‚β”‚
β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜β”‚
β”‚                                                                         β”‚
β”‚ IDENTITY VERIFICATION                                                   β”‚
β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”β”‚
β”‚ β”‚ βœ… Photo ID                                                         β”‚β”‚
β”‚ β”‚    Document: UK Driving Licence                                     β”‚β”‚
β”‚ β”‚    Submitted: 30 Nov 2025, 14:45                                    β”‚β”‚
β”‚ β”‚    Verified by: [email protected] (30 Nov 15:00)                        β”‚β”‚
β”‚ β”‚    [View Document]                                                  β”‚β”‚
β”‚ β”‚                                                                     β”‚β”‚
β”‚ β”‚ βœ… Video Verification Call                                          β”‚β”‚
β”‚ β”‚    Completed: 30 Nov 2025, 15:30                                    β”‚β”‚
β”‚ β”‚    Duration: 12 minutes                                             β”‚β”‚
β”‚ β”‚    Conducted by: [email protected]                                      β”‚β”‚
β”‚ β”‚    Notes: "Face matches ID. Confirmed employment details."          β”‚β”‚
β”‚ β”‚    [View Recording] (if enabled)                                    β”‚β”‚
β”‚ β”‚                                                                     β”‚β”‚
β”‚ β”‚ βœ… Security Questions                                               β”‚β”‚
β”‚ β”‚    Answered: 30 Nov 2025, 14:50                                     β”‚β”‚
β”‚ β”‚    Result: 3/3 correct                                              β”‚β”‚
β”‚ β”‚    [View Questions & Answers]                                       β”‚β”‚
β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜β”‚
β”‚                                                                         β”‚
β”‚ AUTHORIZATION STATUS                                                    β”‚
β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”β”‚
β”‚ β”‚ βœ… Primary Authorization                                            β”‚β”‚
β”‚ β”‚    Approved by: [email protected]                                       β”‚β”‚
β”‚ β”‚    Date: 30 Nov 2025, 16:00                                         β”‚β”‚
β”‚ β”‚    Reason: "Identity verified via video call. User confirmed       β”‚β”‚
β”‚ β”‚             they forgot both password and recovery phrase."         β”‚β”‚
β”‚ β”‚                                                                     β”‚β”‚
β”‚ β”‚ ⏳ Secondary Authorization                                          β”‚β”‚
β”‚ β”‚    Status: Awaiting approval                                        β”‚β”‚
β”‚ β”‚    Eligible approvers: [email protected], [email protected]                 β”‚β”‚
β”‚ β”‚                                                                     β”‚β”‚
β”‚ β”‚    [Approve as Secondary] [Reject with Reason]                      β”‚β”‚
β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜β”‚
β”‚                                                                         β”‚
β”‚ TIME DELAY                                                              β”‚
β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”β”‚
β”‚ β”‚ Status: Not yet started (awaiting secondary approval)               β”‚β”‚
β”‚ β”‚ Configured delay: 48 hours                                          β”‚β”‚
β”‚ β”‚ User tier: Individual                                               β”‚β”‚
β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜β”‚
β”‚                                                                         β”‚
β”‚ AUDIT TRAIL                                                             β”‚
β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”β”‚
β”‚ β”‚ 30 Nov 16:00 β”‚ [email protected] β”‚ Primary approval granted            β”‚β”‚
β”‚ β”‚ 30 Nov 15:30 β”‚ [email protected] β”‚ Video call completed                 β”‚β”‚
β”‚ β”‚ 30 Nov 15:00 β”‚ [email protected] β”‚ Photo ID verified                    β”‚β”‚
β”‚ β”‚ 30 Nov 14:50 β”‚ SYSTEM        β”‚ Security questions answered (3/3)   β”‚β”‚
β”‚ β”‚ 30 Nov 14:45 β”‚ [email protected]β”‚ Photo ID uploaded                   β”‚β”‚
β”‚ β”‚ 30 Nov 14:30 β”‚ [email protected]β”‚ Recovery request submitted          β”‚β”‚
β”‚ β”‚ [Load More...]                                                      β”‚β”‚
β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜β”‚
β”‚                                                                         β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

3. Identity Verification Review

URL: /admin/recovery/<request_id>/verification/

Purpose: Review submitted identity documents

Document Viewer

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Identity Document Review                                                β”‚
β”‚ Request: ABC-123-XYZ β€’ User: Dr. Sarah Jones                           β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                                                                         β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚
β”‚  β”‚                             β”‚  β”‚ VERIFICATION CHECKLIST          β”‚  β”‚
β”‚  β”‚    [Photo ID Image]         β”‚  β”‚                                 β”‚  β”‚
β”‚  β”‚                             β”‚  β”‚ β–‘ Document is government-issued β”‚  β”‚
β”‚  β”‚    UK Driving Licence       β”‚  β”‚ β–‘ Document is not expired       β”‚  β”‚
β”‚  β”‚                             β”‚  β”‚ β–‘ Photo matches account holder  β”‚  β”‚
β”‚  β”‚    [Zoom] [Rotate]          β”‚  β”‚ β–‘ Name matches account name     β”‚  β”‚
β”‚  β”‚                             β”‚  β”‚ β–‘ No signs of tampering         β”‚  β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚ β–‘ Document is clearly legible   β”‚  β”‚
β”‚                                    β”‚                                 β”‚  β”‚
β”‚  Submitted: 30 Nov 2025, 14:45    β”‚ Notes:                          β”‚  β”‚
β”‚  File: driving_licence.jpg         β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚  β”‚
β”‚  Size: 2.4 MB                      β”‚ β”‚                             β”‚ β”‚  β”‚
β”‚                                    β”‚ β”‚                             β”‚ β”‚  β”‚
β”‚                                    β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚  β”‚
β”‚                                    β”‚                                 β”‚  β”‚
β”‚                                    β”‚ [Mark as Verified] [Request    β”‚  β”‚
β”‚                                    β”‚  New Document]    [Flag Issue] β”‚  β”‚
β”‚                                    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚
β”‚                                                                         β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ ⚠️ SECURITY: Document images are encrypted at rest and automatically   β”‚
β”‚ deleted 30 days after request completion.                              β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

4. Video Verification Interface

URL: /admin/recovery/<request_id>/video-call/

Purpose: Conduct or review video verification calls

Video Call Interface

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Video Verification Call                                                 β”‚
β”‚ Request: ABC-123-XYZ β€’ User: Dr. Sarah Jones                           β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                                                                         β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”‚
β”‚  β”‚                                                                   β”‚   β”‚
β”‚  β”‚                     [Video Call Window]                          β”‚   β”‚
β”‚  β”‚                                                                   β”‚   β”‚
β”‚  β”‚                    User's video feed here                        β”‚   β”‚
β”‚  β”‚                                                                   β”‚   β”‚
β”‚  β”‚                                                                   β”‚   β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β”‚
β”‚                                                                         β”‚
β”‚  [🎀 Mute] [πŸ“Ή Camera] [πŸ“± Screen Share] [⏺️ Record] [πŸ“ž End Call]      β”‚
β”‚                                                                         β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ VERIFICATION CHECKLIST                                                  β”‚
β”‚                                                                         β”‚
β”‚ β–‘ User's face matches photo ID                                         β”‚
β”‚ β–‘ User can display photo ID on camera                                  β”‚
β”‚ β–‘ User confirms they initiated the recovery request                    β”‚
β”‚ β–‘ User can answer security questions verbally                          β”‚
β”‚ β–‘ User confirms current employment (if applicable)                     β”‚
β”‚                                                                         β”‚
β”‚ Notes:                                                                  β”‚
β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”β”‚
β”‚ β”‚ Type verification notes here...                                     β”‚β”‚
β”‚ β”‚                                                                     β”‚β”‚
β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜β”‚
β”‚                                                                         β”‚
β”‚ [Complete Verification - PASS] [Complete Verification - FAIL]          β”‚
β”‚                                                                         β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

5. Dual Authorization Workflow

URL: /admin/recovery/<request_id>/authorize/

Purpose: Approve or reject recovery requests

Authorization Form

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Authorization Required                                                  β”‚
β”‚ Request: ABC-123-XYZ                                                    β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                                                                         β”‚
β”‚ You are authorizing as: SECONDARY APPROVER                             β”‚
β”‚                                                                         β”‚
β”‚ Primary approver: [email protected] (30 Nov 2025, 16:00)                   β”‚
β”‚ Primary reason: "Identity verified via video call..."                   β”‚
β”‚                                                                         β”‚
β”‚ ⚠️ IMPORTANT: You must independently verify this request.              β”‚
β”‚ Do not rely solely on the primary approver's assessment.               β”‚
β”‚                                                                         β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                                                                         β”‚
β”‚ VERIFICATION SUMMARY                                                    β”‚
β”‚ βœ… Photo ID: UK Driving Licence (verified by [email protected])            β”‚
β”‚ βœ… Video Call: 12 minutes (conducted by [email protected])                  β”‚
β”‚ βœ… Security Questions: 3/3 correct                                      β”‚
β”‚                                                                         β”‚
β”‚ [Review Photo ID] [View Video Recording] [View Q&A]                    β”‚
β”‚                                                                         β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                                                                         β”‚
β”‚ YOUR DECISION                                                           β”‚
β”‚                                                                         β”‚
β”‚ β—‹ APPROVE - I have independently verified this request                 β”‚
β”‚ β—‹ REJECT - I have concerns about this request                          β”‚
β”‚                                                                         β”‚
β”‚ Reason (required):                                                      β”‚
β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”β”‚
β”‚ β”‚ Enter your reason for approval or rejection...                      β”‚β”‚
β”‚ β”‚                                                                     β”‚β”‚
β”‚ β”‚                                                                     β”‚β”‚
β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜β”‚
β”‚                                                                         β”‚
β”‚ β–‘ I confirm I am not the primary approver                              β”‚
β”‚ β–‘ I confirm I have reviewed the verification evidence                  β”‚
β”‚ β–‘ I understand this action will be logged                              β”‚
β”‚                                                                         β”‚
β”‚                                          [Cancel] [Submit Decision]     β”‚
β”‚                                                                         β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

6. Time Delay Monitor

URL: /admin/recovery/time-delays/

Purpose: Monitor all requests in time delay period

Time Delay Overview

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Time Delay Monitor                                          [Refresh]   β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                                                                         β”‚
β”‚ Requests Currently in Time Delay: 3                                     β”‚
β”‚                                                                         β”‚
β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”β”‚
β”‚ β”‚ Progress β”‚ User              β”‚ Survey           β”‚ Time Remaining    β”‚β”‚
β”‚ β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”‚
β”‚ β”‚ β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‘β”‚ Dr. Emma Wilson   β”‚ Research Study   β”‚ 18h 45m          β”‚β”‚
β”‚ β”‚ β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‘β–‘β–‘β–‘β”‚ Dr. James Smith   β”‚ Clinic Survey    β”‚ 32h 15m          β”‚β”‚
β”‚ β”‚ β–ˆβ–ˆβ–‘β–‘β–‘β–‘β–‘β–‘β–‘β”‚ Dr. Lisa Chen     β”‚ Patient Records  β”‚ 44h 30m          β”‚β”‚
β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜β”‚
β”‚                                                                         β”‚
β”‚ READY FOR EXECUTION: 1                                                  β”‚
β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”β”‚
β”‚ β”‚ πŸ”΅ Dr. Robert Taylor β”‚ Annual Audit β”‚ Time delay complete           β”‚β”‚
β”‚ β”‚    [Execute Recovery] [View Details]                                β”‚β”‚
β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜β”‚
β”‚                                                                         β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

7. Audit Trail Viewer

URL: /admin/recovery/audit/

Purpose: View complete audit trail across all requests

Audit Log View

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Audit Trail                                                [Export CSV] β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ Filters: [Date Range β–Ό] [Event Type β–Ό] [User β–Ό] [Admin β–Ό] [Search...]  β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                                                                         β”‚
β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚
β”‚ β”‚ Timestamp           β”‚ Event                β”‚ Actor    β”‚ Details   β”‚  β”‚
β”‚ β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€  β”‚
β”‚ β”‚ 30 Nov 16:31:05    β”‚ recovery_completed   β”‚ admin1   β”‚ ABC-123   β”‚  β”‚
β”‚ β”‚ 30 Nov 16:31:00    β”‚ custodian_accessed   β”‚ admin1   β”‚ ABC-123   β”‚  β”‚
β”‚ β”‚ 30 Nov 16:30:00    β”‚ time_delay_complete  β”‚ SYSTEM   β”‚ ABC-123   β”‚  β”‚
β”‚ β”‚ 28 Nov 16:30:00    β”‚ time_delay_started   β”‚ SYSTEM   β”‚ ABC-123   β”‚  β”‚
β”‚ β”‚ 28 Nov 16:30:00    β”‚ secondary_approval   β”‚ admin2   β”‚ ABC-123   β”‚  β”‚
β”‚ β”‚ 28 Nov 16:00:00    β”‚ primary_approval     β”‚ admin1   β”‚ ABC-123   β”‚  β”‚
β”‚ β”‚ 28 Nov 15:30:00    β”‚ video_call_complete  β”‚ admin1   β”‚ ABC-123   β”‚  β”‚
β”‚ β”‚ 28 Nov 15:00:00    β”‚ photo_id_verified    β”‚ admin1   β”‚ ABC-123   β”‚  β”‚
β”‚ β”‚ 28 Nov 14:50:00    β”‚ questions_answered   β”‚ user     β”‚ ABC-123   β”‚  β”‚
β”‚ β”‚ 28 Nov 14:45:00    β”‚ photo_id_uploaded    β”‚ user     β”‚ ABC-123   β”‚  β”‚
β”‚ β”‚ 28 Nov 14:30:00    β”‚ request_submitted    β”‚ user     β”‚ ABC-123   β”‚  β”‚
β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚
β”‚                                                                         β”‚
β”‚ Showing 1-11 of 156 entries                    [Previous] [1] [2] [Next]β”‚
β”‚                                                                         β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

8. Recovery Rate Monitor

URL: /admin/recovery/monitoring/

Purpose: Monitor recovery rates and detect anomalies

Monitoring Dashboard

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Recovery Rate Monitoring                                                β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                                                                         β”‚
β”‚ CURRENT STATUS: βœ… NORMAL                                               β”‚
β”‚                                                                         β”‚
β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”β”‚
β”‚ β”‚ Metric                    β”‚ Current β”‚ Threshold β”‚ Status           β”‚β”‚
β”‚ β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”‚
β”‚ β”‚ Requests (24h)            β”‚ 2       β”‚ ⚠️ 5 / πŸ”΄ 10 β”‚ βœ… Normal      β”‚β”‚
β”‚ β”‚ Recovery Rate (%)         β”‚ 0.3%    β”‚ ⚠️ 1% / πŸ”΄ 2% β”‚ βœ… Normal      β”‚β”‚
β”‚ β”‚ Failed Verifications (24h)β”‚ 0       β”‚ ⚠️ 3 / πŸ”΄ 5  β”‚ βœ… Normal      β”‚β”‚
β”‚ β”‚ User Objections (30d)     β”‚ 0       β”‚ ⚠️ 1 / πŸ”΄ 2  β”‚ βœ… Normal      β”‚β”‚
β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜β”‚
β”‚                                                                         β”‚
β”‚ TREND (30 DAYS)                                                         β”‚
β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”β”‚
β”‚ β”‚ Requests                                                            β”‚β”‚
β”‚ β”‚ 5β”‚                                                                  β”‚β”‚
β”‚ β”‚ 4β”‚                                           β–„                      β”‚β”‚
β”‚ β”‚ 3β”‚          β–„                                β–ˆ                      β”‚β”‚
β”‚ β”‚ 2β”‚    β–„     β–ˆ     β–„                    β–„     β–ˆ                      β”‚β”‚
β”‚ β”‚ 1β”‚ β–„  β–ˆ  β–„  β–ˆ  β–„  β–ˆ  β–„     β–„  β–„  β–„     β–ˆ  β–„  β–ˆ  β–„                  β”‚β”‚
β”‚ β”‚ 0β”‚ β–ˆ  β–ˆ  β–ˆ  β–ˆ  β–ˆ  β–ˆ  β–ˆ  β–‘  β–ˆ  β–ˆ  β–ˆ  β–‘  β–ˆ  β–ˆ  β–ˆ  β–ˆ  β–‘               β”‚β”‚
β”‚ β”‚   └────────────────────────────────────────────────────────────────││
β”‚ β”‚    1  5  10    15    20    25    30                                 β”‚β”‚
β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜β”‚
β”‚                                                                         β”‚
β”‚ ALERTS                                                                  β”‚
β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”β”‚
β”‚ β”‚ No active alerts                                                    β”‚β”‚
β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜β”‚
β”‚                                                                         β”‚
β”‚ [Configure Thresholds] [View Alert History] [Test Alert]               β”‚
β”‚                                                                         β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

9. SIEM Integration Status

URL: /admin/recovery/siem/

Purpose: Monitor SIEM connection and log forwarding

SIEM Status Panel

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ SIEM Integration Status                                                 β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                                                                         β”‚
β”‚ CONNECTION STATUS: βœ… CONNECTED                                         β”‚
β”‚                                                                         β”‚
β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”β”‚
β”‚ β”‚ SIEM Type:        Elasticsearch (self-hosted)                       β”‚β”‚
β”‚ β”‚ Endpoint:         https://elasticsearch.internal:9200               β”‚β”‚
β”‚ β”‚ Index Pattern:    checktick-audit-*                                 β”‚β”‚
β”‚ β”‚ Last Sync:        2 minutes ago                                     β”‚β”‚
β”‚ β”‚ Events Today:     1,234                                             β”‚β”‚
β”‚ β”‚ Queue Depth:      0 (real-time)                                     β”‚β”‚
β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜β”‚
β”‚                                                                         β”‚
β”‚ RECENT SYNC HISTORY                                                     β”‚
β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”β”‚
β”‚ β”‚ Time            β”‚ Events β”‚ Status β”‚ Latency                        β”‚β”‚
β”‚ β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”‚
β”‚ β”‚ 14:28:00        β”‚ 15     β”‚ βœ…     β”‚ 45ms                            β”‚β”‚
β”‚ β”‚ 14:27:00        β”‚ 8      β”‚ βœ…     β”‚ 38ms                            β”‚β”‚
β”‚ β”‚ 14:26:00        β”‚ 12     β”‚ βœ…     β”‚ 52ms                            β”‚β”‚
β”‚ β”‚ 14:25:00        β”‚ 6      β”‚ βœ…     β”‚ 41ms                            β”‚β”‚
β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜β”‚
β”‚                                                                         β”‚
β”‚ [Test Connection] [View Logs] [Configure]                              β”‚
β”‚                                                                         β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Data Models

RecoveryRequest Model

class RecoveryRequest(models.Model):
    """Model for tracking recovery requests."""

    STATUS_CHOICES = [
        ('pending_verification', 'Pending Identity Verification'),
        ('verification_in_progress', 'Identity Verification In Progress'),
        ('awaiting_primary', 'Awaiting Primary Authorization'),
        ('awaiting_secondary', 'Awaiting Secondary Authorization'),
        ('in_time_delay', 'In Time Delay Period'),
        ('ready_for_execution', 'Ready for Execution'),
        ('completed', 'Completed'),
        ('rejected', 'Rejected'),
        ('cancelled', 'Cancelled'),
    ]

    id = models.UUIDField(primary_key=True, default=uuid.uuid4)
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    survey = models.ForeignKey(Survey, on_delete=models.CASCADE)
    status = models.CharField(max_length=50, choices=STATUS_CHOICES)

    # Timestamps
    submitted_at = models.DateTimeField(auto_now_add=True)
    verification_completed_at = models.DateTimeField(null=True)
    approved_at = models.DateTimeField(null=True)
    time_delay_until = models.DateTimeField(null=True)
    completed_at = models.DateTimeField(null=True)

    # Authorization
    primary_approver = models.ForeignKey(User, related_name='primary_approvals', null=True)
    primary_approved_at = models.DateTimeField(null=True)
    primary_reason = models.TextField(null=True)

    secondary_approver = models.ForeignKey(User, related_name='secondary_approvals', null=True)
    secondary_approved_at = models.DateTimeField(null=True)
    secondary_reason = models.TextField(null=True)

    # Rejection/cancellation
    rejected_by = models.ForeignKey(User, related_name='rejections', null=True)
    rejected_at = models.DateTimeField(null=True)
    rejection_reason = models.TextField(null=True)

    cancelled_by = models.ForeignKey(User, related_name='cancellations', null=True)
    cancelled_at = models.DateTimeField(null=True)
    cancellation_reason = models.TextField(null=True)

    # Execution
    executed_by = models.ForeignKey(User, related_name='executions', null=True)
    custodian_component_used = models.BooleanField(default=False)


class IdentityVerification(models.Model):
    """Model for identity verification documents and results."""

    VERIFICATION_TYPES = [
        ('photo_id', 'Photo ID'),
        ('video_call', 'Video Verification Call'),
        ('security_questions', 'Security Questions'),
        ('employment_verification', 'Employment Verification'),
    ]

    STATUS_CHOICES = [
        ('pending', 'Pending'),
        ('submitted', 'Submitted'),
        ('verified', 'Verified'),
        ('rejected', 'Rejected'),
    ]

    recovery_request = models.ForeignKey(RecoveryRequest, on_delete=models.CASCADE)
    verification_type = models.CharField(max_length=50, choices=VERIFICATION_TYPES)
    status = models.CharField(max_length=20, choices=STATUS_CHOICES)

    # Document storage (encrypted)
    document_path = models.CharField(max_length=500, null=True)

    # Verification details
    submitted_at = models.DateTimeField(null=True)
    verified_by = models.ForeignKey(User, null=True)
    verified_at = models.DateTimeField(null=True)
    verification_notes = models.TextField(null=True)

    # For security questions
    questions_asked = models.JSONField(null=True)
    correct_answers = models.IntegerField(null=True)
    total_questions = models.IntegerField(null=True)


class RecoveryAuditEntry(models.Model):
    """Immutable audit trail for recovery actions."""

    id = models.UUIDField(primary_key=True, default=uuid.uuid4)
    recovery_request = models.ForeignKey(RecoveryRequest, on_delete=models.CASCADE)

    timestamp = models.DateTimeField(auto_now_add=True)
    event_type = models.CharField(max_length=100)
    severity = models.CharField(max_length=20)

    actor_type = models.CharField(max_length=20)  # user, admin, system
    actor_id = models.IntegerField(null=True)
    actor_email = models.EmailField(null=True)
    actor_ip = models.GenericIPAddressField(null=True)

    details = models.JSONField()

    # Hash for tamper detection
    entry_hash = models.CharField(max_length=64)
    previous_hash = models.CharField(max_length=64, null=True)

    class Meta:
        ordering = ['-timestamp']
        # Prevent deletion
        managed = True

API Endpoints

Recovery Request Endpoints

# GET /api/admin/recovery/
# List all recovery requests (filtered by user's scope)

# GET /api/admin/recovery/<request_id>/
# Get single recovery request details

# POST /api/admin/recovery/<request_id>/verify/
# Submit verification result (photo_id, video_call, etc.)

# POST /api/admin/recovery/<request_id>/authorize/
# Submit authorization decision (approve/reject)

# POST /api/admin/recovery/<request_id>/execute/
# Execute recovery (after time delay)

# DELETE /api/admin/recovery/<request_id>/
# Cancel recovery request

# GET /api/admin/recovery/<request_id>/audit/
# Get audit trail for request

# GET /api/admin/recovery/monitoring/
# Get recovery rate monitoring data

# GET /api/admin/recovery/siem/status/
# Get SIEM integration status

Security Considerations

Document Storage

  • All identity documents encrypted at rest (AES-256-GCM)
  • Documents stored in separate encrypted storage (not database)
  • Automatic deletion 30 days after request completion
  • Access logged to audit trail

Video Call Recording

  • Recording optional (configurable per organization)
  • If enabled, recordings encrypted and stored separately
  • Automatic deletion 90 days after request completion
  • Access requires explicit admin action + logging

Session Security

  • Admin sessions require MFA for recovery actions
  • Session timeout: 15 minutes for recovery dashboard
  • Re-authentication required for authorization decisions
  • All actions logged with full context

Rate Limiting

  • Max 3 recovery requests per user per 30 days
  • Max 10 authorization actions per admin per hour
  • Automatic lockout after 5 failed verification attempts

Implementation Checklist

  • [ ] Recovery request model and migrations
  • [ ] Identity verification model and migrations
  • [ ] Audit entry model (append-only)
  • [ ] Dashboard views (list, detail, verification, authorization)
  • [ ] API endpoints
  • [ ] Email notification integration
  • [ ] SIEM forwarding
  • [ ] Document storage service
  • [ ] Video call integration (optional)
  • [ ] Rate limiting middleware
  • [ ] Admin permissions
  • [ ] Unit tests
  • [ ] Integration tests
  • [ ] Security review