# moh-sagor/laravel-security architecture

> Architecture diagram of the GitHub repository moh-sagor/laravel-security, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-27). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/moh-sagor/laravel-security
- Repository: https://github.com/moh-sagor/laravel-security

## Overview

Laravel Security is a defense-in-depth firewall package. Its primary request path inspects web/API traffic, applies IP policy and security rules, evaluates a risk decision, then logs or dispatches threat events. Separate product flows protect uploads, limit abusive traffic and detect bots, and obfuscate routes. The security dashboard queries event and malware records for overview and searchable attempts views. Some branches are documented capabilities whose internal wiring is not shown in the sampled source, so their uncertain connections are omitted.

Main entry points: [`src/Firewall/SecurityEngine.php`](https://github.com/moh-sagor/laravel-security/blob/main/src/Firewall/SecurityEngine.php) (Security engine), [`src/Http/Controllers/SecurityDashboardController.php`](https://github.com/moh-sagor/laravel-security/blob/main/src/Http/Controllers/SecurityDashboardController.php) (Dashboard controller), [`src/LaravelSecurityServiceProvider.php`](https://github.com/moh-sagor/laravel-security/blob/main/src/LaravelSecurityServiceProvider.php) (Package provider), [`src/Upload/UploadSecurityManager.php`](https://github.com/moh-sagor/laravel-security/blob/main/src/Upload/UploadSecurityManager.php) (Upload scanner)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_firewall["Request firewall"]
  node_security_middleware["Security middleware"]
  node_api_middleware["API middleware"]
  node_security_engine["Security engine<br/>[SecurityEngine.php]"]
  node_security_context["Request context"]
  node_rule_registry["Rule registry<br/>[RuleRegistry.php]"]
  node_threat_rules["Threat rules"]
  node_security_policy["Risk policy<br/>[SecurityPolicy.php]"]
  node_ip_manager["IP policy<br/>[IpManager.php]"]
  node_rate_limiter["Rate limiter<br/>[RateLimiter.php]"]
  node_bot_detector["Bot detection<br/>[BotDetector.php]"]
end

subgraph group_uploads["Upload protection"]
  node_upload_middleware["Upload middleware"]
  node_upload_manager["Upload scanner"]
  node_file_analyzer["File analysis<br/>[FileAnalyzer.php]"]
  node_quarantine["Quarantine"]
  node_malware_scanner["Malware scanner<br/>[ClamAvScanner.php]"]
end

subgraph group_routes["Route obfuscation"]
  node_route_middleware["Route middleware"]
  node_route_controller["Encrypted route handler"]
  node_route_encryptor["Route encryptor<br/>[RouteEncryptor.php]"]
  node_url_generator["Encrypted URL generator"]
end

subgraph group_telemetry["Threat desk"]
  node_dashboard_controller["Dashboard controller"]
  node_dashboard_manager["Dashboard metrics"]
  node_security_event[("Security events<br/>[SecurityEvent.php]")]
  node_blocked_ip[("Blocked IP records<br/>[BlockedIp.php]")]
  node_malware_scan[("Malware scan records<br/>[MalwareScan.php]")]
  node_dashboard_view["Overview dashboard"]
  node_attempts_view["Attempts workstation<br/>[attempts.blade.php]"]
  node_security_logger["Security logger<br/>[SecurityLogger.php]"]
end

node_client(("HTTP client"))
node_router["Laravel router"]
node_dashboard_actor(("Security operator"))
node_service_provider["Package provider"]

node_client -->|"sends request"| node_security_middleware
node_client -->|"sends request"| node_api_middleware
node_security_middleware -->|"inspects request"| node_security_engine
node_api_middleware -->|"inspects request"| node_security_engine
node_security_engine -->|"builds context"| node_security_context
node_security_engine -->|"checks IP policy"| node_ip_manager
node_security_engine -->|"gets rules"| node_rule_registry
node_security_engine -->|"runs enabled rules"| node_threat_rules
node_threat_rules -->|"checks context"| node_security_context
node_security_engine -->|"evaluates results"| node_security_policy
node_security_engine -->|"logs threats"| node_security_logger
node_security_engine -.->|"dispatches threat events"| node_security_event
node_client -->|"uploads file"| node_upload_middleware
node_upload_middleware -->|"processes upload"| node_upload_manager
node_upload_manager -->|"inspects file"| node_file_analyzer
node_upload_manager -->|"quarantines threat"| node_quarantine
node_upload_manager -.->|"scans file"| node_malware_scanner
node_quarantine -->|"records quarantine"| node_malware_scan
node_client -->|"requests route"| node_route_middleware
node_route_middleware -->|"encrypts route"| node_route_encryptor
node_url_generator -->|"generates encrypted URL"| node_route_encryptor
node_client -->|"requests token"| node_route_controller
node_route_controller -->|"decrypts token"| node_route_encryptor
node_route_controller -->|"dispatches subrequest"| node_router
node_dashboard_actor -->|"views security desk"| node_dashboard_controller
node_dashboard_controller -->|"loads metrics"| node_dashboard_manager
node_dashboard_manager -->|"queries events"| node_security_event
node_dashboard_manager -->|"counts blocked IPs"| node_blocked_ip
node_dashboard_manager -->|"counts scans"| node_malware_scan
node_dashboard_controller -->|"filters attempts"| node_security_event
node_dashboard_controller -->|"loads blocked IPs"| node_blocked_ip
node_dashboard_controller -->|"loads scan records"| node_malware_scan
node_dashboard_controller -->|"renders overview"| node_dashboard_view
node_dashboard_controller -->|"renders attempts"| node_attempts_view
node_service_provider -->|"registers middleware"| node_security_middleware
node_service_provider -->|"registers middleware"| node_api_middleware
node_service_provider -->|"registers middleware"| node_upload_middleware
node_service_provider -->|"registers middleware"| node_route_middleware

click node_security_middleware "https://github.com/moh-sagor/laravel-security/blob/main/src/Http/Middleware/SecurityMiddleware.php"
click node_api_middleware "https://github.com/moh-sagor/laravel-security/blob/main/src/Http/Middleware/SecurityApiMiddleware.php"
click node_security_engine "https://github.com/moh-sagor/laravel-security/blob/main/src/Firewall/SecurityEngine.php"
click node_security_context "https://github.com/moh-sagor/laravel-security/blob/main/src/Firewall/SecurityContext.php"
click node_rule_registry "https://github.com/moh-sagor/laravel-security/blob/main/src/Firewall/RuleRegistry.php"
click node_threat_rules "https://github.com/moh-sagor/laravel-security/tree/main/src/Firewall/Rules"
click node_security_policy "https://github.com/moh-sagor/laravel-security/blob/main/src/Firewall/SecurityPolicy.php"
click node_ip_manager "https://github.com/moh-sagor/laravel-security/blob/main/src/Firewall/IpManager.php"
click node_rate_limiter "https://github.com/moh-sagor/laravel-security/blob/main/src/RateLimit/RateLimiter.php"
click node_bot_detector "https://github.com/moh-sagor/laravel-security/blob/main/src/Bot/BotDetector.php"
click node_upload_middleware "https://github.com/moh-sagor/laravel-security/blob/main/src/Http/Middleware/SecurityUploadMiddleware.php"
click node_upload_manager "https://github.com/moh-sagor/laravel-security/blob/main/src/Upload/UploadSecurityManager.php"
click node_file_analyzer "https://github.com/moh-sagor/laravel-security/blob/main/src/Upload/FileAnalyzer.php"
click node_quarantine "https://github.com/moh-sagor/laravel-security/blob/main/src/Upload/QuarantineManager.php"
click node_malware_scanner "https://github.com/moh-sagor/laravel-security/blob/main/src/Upload/Scanners/ClamAvScanner.php"
click node_route_middleware "https://github.com/moh-sagor/laravel-security/blob/main/src/Http/Middleware/SecurityRouteEncryptionMiddleware.php"
click node_route_controller "https://github.com/moh-sagor/laravel-security/blob/main/src/Http/Controllers/RouteEncryptionController.php"
click node_route_encryptor "https://github.com/moh-sagor/laravel-security/blob/main/src/Route/RouteEncryptor.php"
click node_url_generator "https://github.com/moh-sagor/laravel-security/blob/main/src/Route/EncryptedUrlGenerator.php"
click node_dashboard_controller "https://github.com/moh-sagor/laravel-security/blob/main/src/Http/Controllers/SecurityDashboardController.php"
click node_dashboard_manager "https://github.com/moh-sagor/laravel-security/blob/main/src/Dashboard/DashboardManager.php"
click node_security_event "https://github.com/moh-sagor/laravel-security/blob/main/src/Models/SecurityEvent.php"
click node_blocked_ip "https://github.com/moh-sagor/laravel-security/blob/main/src/Models/BlockedIp.php"
click node_malware_scan "https://github.com/moh-sagor/laravel-security/blob/main/src/Models/MalwareScan.php"
click node_dashboard_view "https://github.com/moh-sagor/laravel-security/blob/main/resources/views/dashboard.blade.php"
click node_attempts_view "https://github.com/moh-sagor/laravel-security/blob/main/resources/views/attempts.blade.php"
click node_security_logger "https://github.com/moh-sagor/laravel-security/blob/main/src/Support/SecurityLogger.php"
click node_service_provider "https://github.com/moh-sagor/laravel-security/blob/main/src/LaravelSecurityServiceProvider.php"

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_security_middleware,node_api_middleware,node_security_engine,node_security_context,node_rule_registry,node_threat_rules,node_security_policy,node_ip_manager,node_rate_limiter,node_bot_detector,node_client toneBlue
class node_upload_middleware,node_upload_manager,node_file_analyzer,node_quarantine,node_malware_scanner toneAmber
class node_route_middleware,node_route_controller,node_route_encryptor,node_url_generator,node_router toneMint
class node_dashboard_controller,node_dashboard_manager,node_security_event,node_blocked_ip,node_malware_scan,node_dashboard_view,node_attempts_view,node_security_logger toneRose
class node_dashboard_actor,node_service_provider toneIndigo
```

## Components

### Request firewall

- [Security middleware](https://github.com/moh-sagor/laravel-security/blob/main/src/Http/Middleware/SecurityMiddleware.php): `src/Http/Middleware/SecurityMiddleware.php`
- [API middleware](https://github.com/moh-sagor/laravel-security/blob/main/src/Http/Middleware/SecurityApiMiddleware.php): `src/Http/Middleware/SecurityApiMiddleware.php`
- [Security engine](https://github.com/moh-sagor/laravel-security/blob/main/src/Firewall/SecurityEngine.php): `src/Firewall/SecurityEngine.php`
- [Request context](https://github.com/moh-sagor/laravel-security/blob/main/src/Firewall/SecurityContext.php): `src/Firewall/SecurityContext.php`
- [Rule registry](https://github.com/moh-sagor/laravel-security/blob/main/src/Firewall/RuleRegistry.php): `src/Firewall/RuleRegistry.php`
- [Threat rules](https://github.com/moh-sagor/laravel-security/tree/main/src/Firewall/Rules): `src/Firewall/Rules`
- [Risk policy](https://github.com/moh-sagor/laravel-security/blob/main/src/Firewall/SecurityPolicy.php): `src/Firewall/SecurityPolicy.php`
- [IP policy](https://github.com/moh-sagor/laravel-security/blob/main/src/Firewall/IpManager.php): `src/Firewall/IpManager.php`
- [Rate limiter](https://github.com/moh-sagor/laravel-security/blob/main/src/RateLimit/RateLimiter.php): `src/RateLimit/RateLimiter.php`
- [Bot detection](https://github.com/moh-sagor/laravel-security/blob/main/src/Bot/BotDetector.php): `src/Bot/BotDetector.php`

### Upload protection

- [Upload middleware](https://github.com/moh-sagor/laravel-security/blob/main/src/Http/Middleware/SecurityUploadMiddleware.php): `src/Http/Middleware/SecurityUploadMiddleware.php`
- [Upload scanner](https://github.com/moh-sagor/laravel-security/blob/main/src/Upload/UploadSecurityManager.php): `src/Upload/UploadSecurityManager.php`
- [File analysis](https://github.com/moh-sagor/laravel-security/blob/main/src/Upload/FileAnalyzer.php): `src/Upload/FileAnalyzer.php`
- [Quarantine](https://github.com/moh-sagor/laravel-security/blob/main/src/Upload/QuarantineManager.php): `src/Upload/QuarantineManager.php`
- [Malware scanner](https://github.com/moh-sagor/laravel-security/blob/main/src/Upload/Scanners/ClamAvScanner.php): `src/Upload/Scanners/ClamAvScanner.php`

### Route obfuscation

- [Route middleware](https://github.com/moh-sagor/laravel-security/blob/main/src/Http/Middleware/SecurityRouteEncryptionMiddleware.php): `src/Http/Middleware/SecurityRouteEncryptionMiddleware.php`
- [Encrypted route handler](https://github.com/moh-sagor/laravel-security/blob/main/src/Http/Controllers/RouteEncryptionController.php): `src/Http/Controllers/RouteEncryptionController.php`
- [Route encryptor](https://github.com/moh-sagor/laravel-security/blob/main/src/Route/RouteEncryptor.php): `src/Route/RouteEncryptor.php`
- [Encrypted URL generator](https://github.com/moh-sagor/laravel-security/blob/main/src/Route/EncryptedUrlGenerator.php): `src/Route/EncryptedUrlGenerator.php`

### Threat desk

- [Dashboard controller](https://github.com/moh-sagor/laravel-security/blob/main/src/Http/Controllers/SecurityDashboardController.php): `src/Http/Controllers/SecurityDashboardController.php`
- [Dashboard metrics](https://github.com/moh-sagor/laravel-security/blob/main/src/Dashboard/DashboardManager.php): `src/Dashboard/DashboardManager.php`
- [Security events](https://github.com/moh-sagor/laravel-security/blob/main/src/Models/SecurityEvent.php): `src/Models/SecurityEvent.php`
- [Blocked IP records](https://github.com/moh-sagor/laravel-security/blob/main/src/Models/BlockedIp.php): `src/Models/BlockedIp.php`
- [Malware scan records](https://github.com/moh-sagor/laravel-security/blob/main/src/Models/MalwareScan.php): `src/Models/MalwareScan.php`
- [Overview dashboard](https://github.com/moh-sagor/laravel-security/blob/main/resources/views/dashboard.blade.php): `resources/views/dashboard.blade.php`
- [Attempts workstation](https://github.com/moh-sagor/laravel-security/blob/main/resources/views/attempts.blade.php): `resources/views/attempts.blade.php`
- [Security logger](https://github.com/moh-sagor/laravel-security/blob/main/src/Support/SecurityLogger.php): `src/Support/SecurityLogger.php`

### Other components

- **HTTP client**
- **Laravel router**
- **Security operator**
- [Package provider](https://github.com/moh-sagor/laravel-security/blob/main/src/LaravelSecurityServiceProvider.php): `src/LaravelSecurityServiceProvider.php`

## Connections

- HTTP client → Security middleware: sends request
- HTTP client → API middleware: sends request
- Security middleware → Security engine: inspects request
- API middleware → Security engine: inspects request
- Security engine → Request context: builds context
- Security engine → IP policy: checks IP policy
- Security engine → Rule registry: gets rules
- Security engine → Threat rules: runs enabled rules
- Threat rules → Request context: checks context
- Security engine → Risk policy: evaluates results
- Security engine → Security logger: logs threats
- Security engine → Security events: dispatches threat events
- HTTP client → Upload middleware: uploads file
- Upload middleware → Upload scanner: processes upload
- Upload scanner → File analysis: inspects file
- Upload scanner → Quarantine: quarantines threat
- Upload scanner → Malware scanner: scans file
- Quarantine → Malware scan records: records quarantine
- HTTP client → Route middleware: requests route
- Route middleware → Route encryptor: encrypts route
- Encrypted URL generator → Route encryptor: generates encrypted URL
- HTTP client → Encrypted route handler: requests token
- Encrypted route handler → Route encryptor: decrypts token
- Encrypted route handler → Laravel router: dispatches subrequest
- Security operator → Dashboard controller: views security desk
- Dashboard controller → Dashboard metrics: loads metrics
- Dashboard metrics → Security events: queries events
- Dashboard metrics → Blocked IP records: counts blocked IPs
- Dashboard metrics → Malware scan records: counts scans
- Dashboard controller → Security events: filters attempts
- Dashboard controller → Blocked IP records: loads blocked IPs
- Dashboard controller → Malware scan records: loads scan records
- Dashboard controller → Overview dashboard: renders overview
- Dashboard controller → Attempts workstation: renders attempts
- Package provider → Security middleware: registers middleware
- Package provider → API middleware: registers middleware
- Package provider → Upload middleware: registers middleware
- Package provider → Route middleware: registers middleware
