# jundayw/laravel-passport architecture

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

- Interactive diagram: https://gitdiagram.com/jundayw/laravel-passport
- Repository: https://github.com/jundayw/laravel-passport

## Overview

Laravel Passport is a lightweight API request-verification and response-signing package. An API client sends public parameters and a signature; the Laravel application collects configured values from headers, query parameters, or the body, resolves the application secret, and verifies the signature. The application can also build and sign responses using the same signer infrastructure. The README documents configurable parameters, algorithms, and Laravel integration. Wiring beyond the sampled files is shown only where documented; the main Passport implementation was not sampled.

Main entry points: [`src/Passport.php`](https://github.com/jundayw/laravel-passport/blob/main/src/Passport.php) (Passport API), [`src/Model/Passport.php`](https://github.com/jundayw/laravel-passport/blob/main/src/Model/Passport.php) (Passport model), [`src/Facades/Passport.php`](https://github.com/jundayw/laravel-passport/blob/main/src/Facades/Passport.php) (Passport facade), [`src/PassportServiceProvider.php`](https://github.com/jundayw/laravel-passport/blob/main/src/PassportServiceProvider.php) (Service provider)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_integration["Laravel integration"]
  node_facade["Passport facade<br/>[Passport.php]"]
  node_provider["Service provider"]
  node_config["Package config<br/>[passport.php]"]
end

subgraph group_request["Request verification"]
  node_passport["Passport API<br/>[Passport.php]"]
  node_parameter_input["Parameter collection<br/>[HasArrayable.php]"]
  node_public_params["Public parameters<br/>[HasArrayable.php]"]
end

subgraph group_signing["Signature engine"]
  node_manager["Signer manager<br/>[Manager.php]"]
  node_signer_contract["Signer contract<br/>[Signer.php]"]
  node_hmac_signer["HMAC signer<br/>[HashHmacSigner.php]"]
end

subgraph group_credentials["Credential storage"]
  node_model_contract["Passport model contract<br/>[Passport.php]"]
  node_passport_model["Passport model<br/>[Passport.php]"]
  node_credential_table[("Credential table")]
end

node_api_client(("API client"))
node_laravel_app(("Laravel application"))
node_cache[("Laravel cache")]
node_database[("Laravel database")]

node_api_client -->|"sends request"| node_laravel_app
node_laravel_app -->|"uses package"| node_facade
node_facade -->|"resolves API"| node_passport
node_provider -->|"binds contract"| node_facade
node_provider -->|"merges config"| node_config
node_passport -->|"collects parameters"| node_parameter_input
node_parameter_input -->|"extracts values"| node_public_params
node_passport -->|"resolves secret"| node_model_contract
node_model_contract -->|"implemented by"| node_passport_model
node_passport_model -->|"caches lookup"| node_cache
node_passport_model -->|"queries credentials"| node_database
node_credential_table -->|"defines schema"| node_database
node_passport -->|"requests signer"| node_manager
node_manager -->|"creates driver"| node_hmac_signer
node_hmac_signer -->|"implements"| node_signer_contract
node_passport -->|"returns signed response"| node_api_client

click node_facade "https://github.com/jundayw/laravel-passport/blob/main/src/Facades/Passport.php"
click node_provider "https://github.com/jundayw/laravel-passport/blob/main/src/PassportServiceProvider.php"
click node_config "https://github.com/jundayw/laravel-passport/blob/main/config/passport.php"
click node_passport "https://github.com/jundayw/laravel-passport/blob/main/src/Passport.php"
click node_parameter_input "https://github.com/jundayw/laravel-passport/blob/main/src/Support/HasArrayable.php"
click node_public_params "https://github.com/jundayw/laravel-passport/blob/main/src/Support/HasArrayable.php"
click node_manager "https://github.com/jundayw/laravel-passport/blob/main/src/Manager.php"
click node_signer_contract "https://github.com/jundayw/laravel-passport/blob/main/src/Contracts/Signer.php"
click node_hmac_signer "https://github.com/jundayw/laravel-passport/blob/main/src/Algorithms/HashHmacSigner.php"
click node_model_contract "https://github.com/jundayw/laravel-passport/blob/main/src/Contracts/Model/Passport.php"
click node_passport_model "https://github.com/jundayw/laravel-passport/blob/main/src/Model/Passport.php"
click node_credential_table "https://github.com/jundayw/laravel-passport/blob/main/database/migrations/2026_03_01_000000_create_passport_table.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_facade,node_provider,node_config,node_api_client toneBlue
class node_passport,node_parameter_input,node_public_params,node_cache,node_database toneAmber
class node_manager,node_signer_contract,node_hmac_signer toneMint
class node_model_contract,node_passport_model,node_credential_table toneRose
class node_laravel_app toneIndigo
```

## Components

### Laravel integration

- [Passport facade](https://github.com/jundayw/laravel-passport/blob/main/src/Facades/Passport.php): `src/Facades/Passport.php`
- [Service provider](https://github.com/jundayw/laravel-passport/blob/main/src/PassportServiceProvider.php): `src/PassportServiceProvider.php`
- [Package config](https://github.com/jundayw/laravel-passport/blob/main/config/passport.php): `config/passport.php`

### Request verification

- [Passport API](https://github.com/jundayw/laravel-passport/blob/main/src/Passport.php): `src/Passport.php`
- [Parameter collection](https://github.com/jundayw/laravel-passport/blob/main/src/Support/HasArrayable.php): `src/Support/HasArrayable.php`
- [Public parameters](https://github.com/jundayw/laravel-passport/blob/main/src/Support/HasArrayable.php): `src/Support/HasArrayable.php`

### Signature engine

- [Signer manager](https://github.com/jundayw/laravel-passport/blob/main/src/Manager.php): `src/Manager.php`
- [Signer contract](https://github.com/jundayw/laravel-passport/blob/main/src/Contracts/Signer.php): `src/Contracts/Signer.php`
- [HMAC signer](https://github.com/jundayw/laravel-passport/blob/main/src/Algorithms/HashHmacSigner.php): `src/Algorithms/HashHmacSigner.php`

### Credential storage

- [Passport model contract](https://github.com/jundayw/laravel-passport/blob/main/src/Contracts/Model/Passport.php): `src/Contracts/Model/Passport.php`
- [Passport model](https://github.com/jundayw/laravel-passport/blob/main/src/Model/Passport.php): `src/Model/Passport.php`
- [Credential table](https://github.com/jundayw/laravel-passport/blob/main/database/migrations/2026_03_01_000000_create_passport_table.php): `database/migrations/2026_03_01_000000_create_passport_table.php`

### Other components

- **API client**
- **Laravel application**
- **Laravel cache**
- **Laravel database**

## Connections

- API client → Laravel application: sends request
- Laravel application → Passport facade: uses package
- Passport facade → Passport API: resolves API
- Service provider → Passport facade: binds contract
- Service provider → Package config: merges config
- Passport API → Parameter collection: collects parameters
- Parameter collection → Public parameters: extracts values
- Passport API → Passport model contract: resolves secret
- Passport model contract → Passport model: implemented by
- Passport model → Laravel cache: caches lookup
- Passport model → Laravel database: queries credentials
- Credential table → Laravel database: defines schema
- Passport API → Signer manager: requests signer
- Signer manager → HMAC signer: creates driver
- HMAC signer → Signer contract: implements
- Passport API → API client: returns signed response
