Compare commits

...

8 Commits
v0.0.2 ... main

Author SHA1 Message Date
a1fbb964b6 Had to update composer.lock of course
All checks were successful
linter / quality (push) Successful in 1m9s
tests / ci (push) Successful in 1m17s
Build & Push Docker Image to Registry / build (release) Successful in 2m44s
2025-08-05 23:01:49 -04:00
a094d47e6f Update composer.json
Some checks failed
linter / quality (push) Failing after 45s
tests / ci (push) Failing after 53s
Build & Push Docker Image to Registry / build (release) Failing after 42s
2025-08-05 22:58:57 -04:00
958ec5f539 Allow enabling telescope in prod for debugging 2025-08-05 22:58:07 -04:00
098927e770 Update to handle basic auth for gittea compatibility
All checks were successful
linter / quality (push) Successful in 59s
tests / ci (push) Successful in 1m14s
Build & Push Docker Image to Registry / build (release) Successful in 2m36s
2025-08-05 00:36:01 -04:00
948b52998e Expose avatars volume and update docs
All checks were successful
linter / quality (push) Successful in 47s
tests / ci (push) Successful in 1m18s
2025-08-04 23:49:19 -04:00
48ae0754df Update the other workflows to use the laravel-runner image
All checks were successful
linter / quality (push) Successful in 40s
tests / ci (push) Successful in 1m3s
Build & Push Docker Image to Registry / build (release) Successful in 3m29s
2025-08-04 22:40:27 -04:00
4294c51ae4 Update runner image again
Some checks failed
tests / ci (push) Successful in 2m56s
linter / quality (push) Has been cancelled
2025-08-04 22:34:15 -04:00
d0f5d0dbdc testing new runner
Some checks failed
linter / quality (push) Successful in 3m34s
tests / ci (push) Failing after 35s
2025-08-04 21:30:58 -04:00
13 changed files with 306 additions and 300 deletions

View File

@ -6,23 +6,12 @@ on:
jobs: jobs:
build: build:
runs-on: ubuntu-latest runs-on: laravel-runner-php84
steps: steps:
- name: Checkout code - name: Checkout code
uses: actions/checkout@v4 uses: actions/checkout@v4
- name: Set up Node
uses: actions/setup-node@v4
with:
node-version: '24'
- name: Set up PHP with Composer
uses: shivammathur/setup-php@v2
with:
php-version: '8.4'
tools: composer:v2
- name: Install PHP dependencies - name: Install PHP dependencies
run: composer install --no-interaction --prefer-dist --optimize-autoloader run: composer install --no-interaction --prefer-dist --optimize-autoloader
@ -34,13 +23,6 @@ jobs:
- name: Remove docs folder - name: Remove docs folder
run: rm -rf docs run: rm -rf docs
- name: Install Docker
run: |
sudo apt-get update
sudo apt-get install -y docker.io
sudo systemctl start docker
sudo usermod -aG docker $USER
- name: Set up Docker Buildx - name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3 uses: docker/setup-buildx-action@v3

View File

@ -15,16 +15,11 @@ permissions:
jobs: jobs:
quality: quality:
runs-on: ubuntu-latest runs-on: laravel-runner-php84
environment: Testing environment: Testing
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: '8.4'
- name: Add Flux Credentials Loaded From ENV - name: Add Flux Credentials Loaded From ENV
run: composer config http-basic.composer.fluxui.dev "${{ secrets.FLUX_USERNAME }}" "${{ secrets.FLUX_LICENSE_KEY }}" run: composer config http-basic.composer.fluxui.dev "${{ secrets.FLUX_USERNAME }}" "${{ secrets.FLUX_LICENSE_KEY }}"

View File

@ -12,26 +12,13 @@ on:
jobs: jobs:
ci: ci:
runs-on: ubuntu-latest runs-on: laravel-runner-php84
environment: Testing environment: Testing
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@v4 uses: actions/checkout@v4
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: 8.4
tools: composer:v2
coverage: xdebug
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: '22'
cache: 'npm'
- name: Install Node Dependencies - name: Install Node Dependencies
run: npm i run: npm i

View File

@ -1,67 +0,0 @@
name: Tests
on:
push:
branches: [ main, develop ]
pull_request:
branches: [ main ]
jobs:
test:
runs-on: ubuntu-latest
services:
mysql:
image: mysql:8.0
env:
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: authentikate_test
options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3
ports:
- 3306:3306
steps:
- uses: actions/checkout@v4
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: '8.2'
extensions: mbstring, dom, fileinfo, mysql, openssl
coverage: xdebug
- name: Cache Composer dependencies
uses: actions/cache@v3
with:
path: /tmp/composer-cache
key: ${{ runner.os }}-${{ hashFiles('**/composer.lock') }}
- name: Install dependencies
run: composer install --no-progress --prefer-dist --optimize-autoloader
- name: Copy environment file
run: cp .env.example .env
- name: Generate application key
run: php artisan key:generate
- name: Set up test database
run: |
php artisan config:clear
php artisan migrate --env=testing --force
- name: Set up test RSA keys
run: ./scripts/setup-test-keys.sh setup
- name: Run tests
run: php artisan test --coverage
- name: Clean up test RSA keys
run: ./scripts/setup-test-keys.sh cleanup
if: always()
- name: Upload coverage reports
uses: codecov/codecov-action@v3
with:
file: ./coverage.xml
fail_ci_if_error: true

View File

@ -8,4 +8,5 @@ COPY . /app
# ENV ENABLE_SCHEDULER=true # ENV ENABLE_SCHEDULER=true
VOLUME [ "/app/storage/oauth" ] VOLUME [ "/app/storage/oauth" ]
VOLUME [ "/app/storage/avatars" ]
VOLUME [ "/app/database" ] VOLUME [ "/app/database" ]

View File

@ -27,10 +27,10 @@ class OIDCController extends Controller
} }
$user = auth()->user(); $user = auth()->user();
// Check if user has auto-approval enabled and has previously authorized this app // Check if user has auto-approval enabled and has previously authorized this app
$hasAuthorizedBefore = $user->tokens()->where('application_id', $client->id)->exists(); $hasAuthorizedBefore = $user->tokens()->where('application_id', $client->id)->exists();
if ($user->auto_approve_apps && $hasAuthorizedBefore) { if ($user->auto_approve_apps && $hasAuthorizedBefore) {
// Auto-approve: generate code and redirect directly // Auto-approve: generate code and redirect directly
$code = Str::random(40); $code = Str::random(40);
@ -83,7 +83,14 @@ class OIDCController extends Controller
// whatever comes in the request // whatever comes in the request
$client = Application::findOrFail($payload['client_id']); $client = Application::findOrFail($payload['client_id']);
// Support basic auth. Sometimes the ID and secret might
// come in the header since it's TECHNICALLY part
// of the oauth spec
$client_id = $request->client_id ?? $request->getUser();
$client_secret = $request->client_secret ?? $request->getPassword();
if ($request->has('code_verifier')) { if ($request->has('code_verifier')) {
// PKCE validation // PKCE validation
$verifier = $request->code_verifier; $verifier = $request->code_verifier;
$method = $payload['code_challenge_method'] ?? 'plain'; $method = $payload['code_challenge_method'] ?? 'plain';
@ -97,13 +104,14 @@ class OIDCController extends Controller
if (!$valid) { if (!$valid) {
abort(403, 'Invalid PKCE code_verifier'); abort(403, 'Invalid PKCE code_verifier');
} }
} elseif ($request->has('client_id') && $request->has('client_secret')) { } elseif (!empty($client_id) && !empty($client_secret)) {
// Client credentials validation // Client credentials validation
if ($request->client_id !== $client->client_id) { if ($client_id !== $client->client_id) {
abort(403, 'Client ID mismatch'); abort(403, 'Client ID mismatch');
} }
if (!hash_equals($client->client_secret, $request->client_secret)) {
if (!hash_equals($client_secret, $client->client_secret)) {
abort(403, 'Invalid client secret'); abort(403, 'Invalid client secret');
} }
} else { } else {
@ -137,7 +145,7 @@ class OIDCController extends Controller
->permittedFor($client->client_id) ->permittedFor($client->client_id)
->relatedTo((string) $user->uuid) ->relatedTo((string) $user->uuid)
->issuedAt($issuedAt) ->issuedAt($issuedAt)
->expiresAt($issuedAt->modify('+5 minutes')) ->expiresAt($issuedAt->modify('+5 weeks'))
->withClaim('email', $user->email); ->withClaim('email', $user->email);
if (!empty($payload['nonce'])) { if (!empty($payload['nonce'])) {
@ -154,7 +162,7 @@ class OIDCController extends Controller
'application_id' => $client->id, 'application_id' => $client->id,
'token' => $accessToken, 'token' => $accessToken,
'issued_at' => now()->toDateTimeString(), 'issued_at' => now()->toDateTimeString(),
'expires_at' => now()->addMonth()->toDateTimeString(), 'expires_at' => now()->addWeeks(5)->toDateTimeString(),
'ip' => $request->ip(), 'ip' => $request->ip(),
'user_agent' => $request->userAgent(), 'user_agent' => $request->userAgent(),
]); ]);
@ -183,11 +191,11 @@ class OIDCController extends Controller
// if (!$token || $token->expires_at->isPast()) { // if (!$token || $token->expires_at->isPast()) {
// return response()->json(['error' => 'invalid_token'], 401); // return response()->json(['error' => 'invalid_token'], 401);
// } // }
if (empty($token)) { if (empty($token)) {
return response()->json(['error' => 'invalid_token'], 401); return response()->json(['error' => 'invalid_token'], 401);
} }
$user = $token->user; $user = $token->user;
if (empty($user)) { if (empty($user)) {
return response()->json(['error' => 'invalid_token'], 401); return response()->json(['error' => 'invalid_token'], 401);

View File

@ -11,7 +11,7 @@ class AppServiceProvider extends ServiceProvider
*/ */
public function register(): void public function register(): void
{ {
if ($this->app->environment('local') && class_exists(\Laravel\Telescope\TelescopeServiceProvider::class)) { if (($this->app->environment('local') || env("ENABLE_PROD_TELESCOPE", false)) && class_exists(\Laravel\Telescope\TelescopeServiceProvider::class)) {
$this->app->register(\Laravel\Telescope\TelescopeServiceProvider::class); $this->app->register(\Laravel\Telescope\TelescopeServiceProvider::class);
$this->app->register(TelescopeServiceProvider::class); $this->app->register(TelescopeServiceProvider::class);
} }

View File

@ -15,14 +15,14 @@
"laravel/tinker": "^2.10.1", "laravel/tinker": "^2.10.1",
"lcobucci/jwt": "^5.5", "lcobucci/jwt": "^5.5",
"livewire/flux": "^2.1.1", "livewire/flux": "^2.1.1",
"livewire/volt": "^1.7.0" "livewire/volt": "^1.7.0",
"laravel/telescope": "^5.10"
}, },
"require-dev": { "require-dev": {
"fakerphp/faker": "^1.23", "fakerphp/faker": "^1.23",
"laravel/pail": "^1.2.2", "laravel/pail": "^1.2.2",
"laravel/pint": "^1.18", "laravel/pint": "^1.18",
"laravel/sail": "^1.41", "laravel/sail": "^1.41",
"laravel/telescope": "^5.10",
"mockery/mockery": "^1.6", "mockery/mockery": "^1.6",
"nunomaduro/collision": "^8.6", "nunomaduro/collision": "^8.6",
"pestphp/pest": "^3.8", "pestphp/pest": "^3.8",
@ -83,4 +83,4 @@
}, },
"minimum-stability": "stable", "minimum-stability": "stable",
"prefer-stable": true "prefer-stable": true
} }

404
composer.lock generated
View File

@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically" "This file is @generated automatically"
], ],
"content-hash": "5fbe8c27a97e598c161e41bbc086ecfc", "content-hash": "b43bb3b486e3ccbe42c600ceb287a3e7",
"packages": [ "packages": [
{ {
"name": "brick/math", "name": "brick/math",
@ -1144,16 +1144,16 @@
}, },
{ {
"name": "laravel/framework", "name": "laravel/framework",
"version": "v12.20.0", "version": "v12.21.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/laravel/framework.git", "url": "https://github.com/laravel/framework.git",
"reference": "1b9a00f8caf5503c92aa436279172beae1a484ff" "reference": "ac8c4e73bf1b5387b709f7736d41427e6af1c93b"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/laravel/framework/zipball/1b9a00f8caf5503c92aa436279172beae1a484ff", "url": "https://api.github.com/repos/laravel/framework/zipball/ac8c4e73bf1b5387b709f7736d41427e6af1c93b",
"reference": "1b9a00f8caf5503c92aa436279172beae1a484ff", "reference": "ac8c4e73bf1b5387b709f7736d41427e6af1c93b",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -1355,7 +1355,7 @@
"issues": "https://github.com/laravel/framework/issues", "issues": "https://github.com/laravel/framework/issues",
"source": "https://github.com/laravel/framework" "source": "https://github.com/laravel/framework"
}, },
"time": "2025-07-08T15:02:21+00:00" "time": "2025-07-22T15:41:55+00:00"
}, },
{ {
"name": "laravel/octane", "name": "laravel/octane",
@ -1567,6 +1567,75 @@
}, },
"time": "2025-03-19T13:51:03+00:00" "time": "2025-03-19T13:51:03+00:00"
}, },
{
"name": "laravel/telescope",
"version": "v5.10.2",
"source": {
"type": "git",
"url": "https://github.com/laravel/telescope.git",
"reference": "6d249d93ab06dc147ac62ea02b4272c2e7a24b72"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/laravel/telescope/zipball/6d249d93ab06dc147ac62ea02b4272c2e7a24b72",
"reference": "6d249d93ab06dc147ac62ea02b4272c2e7a24b72",
"shasum": ""
},
"require": {
"ext-json": "*",
"laravel/framework": "^8.37|^9.0|^10.0|^11.0|^12.0",
"php": "^8.0",
"symfony/console": "^5.3|^6.0|^7.0",
"symfony/var-dumper": "^5.0|^6.0|^7.0"
},
"require-dev": {
"ext-gd": "*",
"guzzlehttp/guzzle": "^6.0|^7.0",
"laravel/octane": "^1.4|^2.0|dev-develop",
"orchestra/testbench": "^6.40|^7.37|^8.17|^9.0|^10.0",
"phpstan/phpstan": "^1.10",
"phpunit/phpunit": "^9.0|^10.5|^11.5"
},
"type": "library",
"extra": {
"laravel": {
"providers": [
"Laravel\\Telescope\\TelescopeServiceProvider"
]
}
},
"autoload": {
"psr-4": {
"Laravel\\Telescope\\": "src/",
"Laravel\\Telescope\\Database\\Factories\\": "database/factories/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Taylor Otwell",
"email": "taylor@laravel.com"
},
{
"name": "Mohamed Said",
"email": "mohamed@laravel.com"
}
],
"description": "An elegant debug assistant for the Laravel framework.",
"keywords": [
"debugging",
"laravel",
"monitoring"
],
"support": {
"issues": "https://github.com/laravel/telescope/issues",
"source": "https://github.com/laravel/telescope/tree/v5.10.2"
},
"time": "2025-07-24T05:26:13+00:00"
},
{ {
"name": "laravel/tinker", "name": "laravel/tinker",
"version": "v2.10.1", "version": "v2.10.1",
@ -2573,16 +2642,16 @@
}, },
{ {
"name": "nesbot/carbon", "name": "nesbot/carbon",
"version": "3.10.1", "version": "3.10.2",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/CarbonPHP/carbon.git", "url": "https://github.com/CarbonPHP/carbon.git",
"reference": "1fd1935b2d90aef2f093c5e35f7ae1257c448d00" "reference": "76b5c07b8a9d2025ed1610e14cef1f3fd6ad2c24"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/CarbonPHP/carbon/zipball/1fd1935b2d90aef2f093c5e35f7ae1257c448d00", "url": "https://api.github.com/repos/CarbonPHP/carbon/zipball/76b5c07b8a9d2025ed1610e14cef1f3fd6ad2c24",
"reference": "1fd1935b2d90aef2f093c5e35f7ae1257c448d00", "reference": "76b5c07b8a9d2025ed1610e14cef1f3fd6ad2c24",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -2674,7 +2743,7 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2025-06-21T15:19:35+00:00" "time": "2025-08-02T09:36:06+00:00"
}, },
{ {
"name": "nette/schema", "name": "nette/schema",
@ -2826,16 +2895,16 @@
}, },
{ {
"name": "nikic/php-parser", "name": "nikic/php-parser",
"version": "v5.5.0", "version": "v5.6.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/nikic/PHP-Parser.git", "url": "https://github.com/nikic/PHP-Parser.git",
"reference": "ae59794362fe85e051a58ad36b289443f57be7a9" "reference": "221b0d0fdf1369c71047ad1d18bb5880017bbc56"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/ae59794362fe85e051a58ad36b289443f57be7a9", "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/221b0d0fdf1369c71047ad1d18bb5880017bbc56",
"reference": "ae59794362fe85e051a58ad36b289443f57be7a9", "reference": "221b0d0fdf1369c71047ad1d18bb5880017bbc56",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -2878,9 +2947,9 @@
], ],
"support": { "support": {
"issues": "https://github.com/nikic/PHP-Parser/issues", "issues": "https://github.com/nikic/PHP-Parser/issues",
"source": "https://github.com/nikic/PHP-Parser/tree/v5.5.0" "source": "https://github.com/nikic/PHP-Parser/tree/v5.6.0"
}, },
"time": "2025-05-31T08:24:38+00:00" "time": "2025-07-27T20:03:57+00:00"
}, },
{ {
"name": "nunomaduro/termwind", "name": "nunomaduro/termwind",
@ -3458,16 +3527,16 @@
}, },
{ {
"name": "psy/psysh", "name": "psy/psysh",
"version": "v0.12.9", "version": "v0.12.10",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/bobthecow/psysh.git", "url": "https://github.com/bobthecow/psysh.git",
"reference": "1b801844becfe648985372cb4b12ad6840245ace" "reference": "6e80abe6f2257121f1eb9a4c55bf29d921025b22"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/bobthecow/psysh/zipball/1b801844becfe648985372cb4b12ad6840245ace", "url": "https://api.github.com/repos/bobthecow/psysh/zipball/6e80abe6f2257121f1eb9a4c55bf29d921025b22",
"reference": "1b801844becfe648985372cb4b12ad6840245ace", "reference": "6e80abe6f2257121f1eb9a4c55bf29d921025b22",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -3517,12 +3586,11 @@
"authors": [ "authors": [
{ {
"name": "Justin Hileman", "name": "Justin Hileman",
"email": "justin@justinhileman.info", "email": "justin@justinhileman.info"
"homepage": "http://justinhileman.com"
} }
], ],
"description": "An interactive shell for modern PHP.", "description": "An interactive shell for modern PHP.",
"homepage": "http://psysh.org", "homepage": "https://psysh.org",
"keywords": [ "keywords": [
"REPL", "REPL",
"console", "console",
@ -3531,9 +3599,9 @@
], ],
"support": { "support": {
"issues": "https://github.com/bobthecow/psysh/issues", "issues": "https://github.com/bobthecow/psysh/issues",
"source": "https://github.com/bobthecow/psysh/tree/v0.12.9" "source": "https://github.com/bobthecow/psysh/tree/v0.12.10"
}, },
"time": "2025-06-23T02:35:06+00:00" "time": "2025-08-04T12:39:37+00:00"
}, },
{ {
"name": "ralouphie/getallheaders", "name": "ralouphie/getallheaders",
@ -3809,16 +3877,16 @@
}, },
{ {
"name": "symfony/console", "name": "symfony/console",
"version": "v7.3.1", "version": "v7.3.2",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/console.git", "url": "https://github.com/symfony/console.git",
"reference": "9e27aecde8f506ba0fd1d9989620c04a87697101" "reference": "5f360ebc65c55265a74d23d7fe27f957870158a1"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/console/zipball/9e27aecde8f506ba0fd1d9989620c04a87697101", "url": "https://api.github.com/repos/symfony/console/zipball/5f360ebc65c55265a74d23d7fe27f957870158a1",
"reference": "9e27aecde8f506ba0fd1d9989620c04a87697101", "reference": "5f360ebc65c55265a74d23d7fe27f957870158a1",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -3883,7 +3951,7 @@
"terminal" "terminal"
], ],
"support": { "support": {
"source": "https://github.com/symfony/console/tree/v7.3.1" "source": "https://github.com/symfony/console/tree/v7.3.2"
}, },
"funding": [ "funding": [
{ {
@ -3894,12 +3962,16 @@
"url": "https://github.com/fabpot", "url": "https://github.com/fabpot",
"type": "github" "type": "github"
}, },
{
"url": "https://github.com/nicolas-grekas",
"type": "github"
},
{ {
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2025-06-27T19:55:54+00:00" "time": "2025-07-30T17:13:41+00:00"
}, },
{ {
"name": "symfony/css-selector", "name": "symfony/css-selector",
@ -4035,16 +4107,16 @@
}, },
{ {
"name": "symfony/error-handler", "name": "symfony/error-handler",
"version": "v7.3.1", "version": "v7.3.2",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/error-handler.git", "url": "https://github.com/symfony/error-handler.git",
"reference": "35b55b166f6752d6aaf21aa042fc5ed280fce235" "reference": "0b31a944fcd8759ae294da4d2808cbc53aebd0c3"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/error-handler/zipball/35b55b166f6752d6aaf21aa042fc5ed280fce235", "url": "https://api.github.com/repos/symfony/error-handler/zipball/0b31a944fcd8759ae294da4d2808cbc53aebd0c3",
"reference": "35b55b166f6752d6aaf21aa042fc5ed280fce235", "reference": "0b31a944fcd8759ae294da4d2808cbc53aebd0c3",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -4092,7 +4164,7 @@
"description": "Provides tools to manage errors and ease debugging PHP code", "description": "Provides tools to manage errors and ease debugging PHP code",
"homepage": "https://symfony.com", "homepage": "https://symfony.com",
"support": { "support": {
"source": "https://github.com/symfony/error-handler/tree/v7.3.1" "source": "https://github.com/symfony/error-handler/tree/v7.3.2"
}, },
"funding": [ "funding": [
{ {
@ -4103,12 +4175,16 @@
"url": "https://github.com/fabpot", "url": "https://github.com/fabpot",
"type": "github" "type": "github"
}, },
{
"url": "https://github.com/nicolas-grekas",
"type": "github"
},
{ {
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2025-06-13T07:48:40+00:00" "time": "2025-07-07T08:17:57+00:00"
}, },
{ {
"name": "symfony/event-dispatcher", "name": "symfony/event-dispatcher",
@ -4268,16 +4344,16 @@
}, },
{ {
"name": "symfony/finder", "name": "symfony/finder",
"version": "v7.3.0", "version": "v7.3.2",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/finder.git", "url": "https://github.com/symfony/finder.git",
"reference": "ec2344cf77a48253bbca6939aa3d2477773ea63d" "reference": "2a6614966ba1074fa93dae0bc804227422df4dfe"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/finder/zipball/ec2344cf77a48253bbca6939aa3d2477773ea63d", "url": "https://api.github.com/repos/symfony/finder/zipball/2a6614966ba1074fa93dae0bc804227422df4dfe",
"reference": "ec2344cf77a48253bbca6939aa3d2477773ea63d", "reference": "2a6614966ba1074fa93dae0bc804227422df4dfe",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -4312,7 +4388,7 @@
"description": "Finds files and directories via an intuitive fluent interface", "description": "Finds files and directories via an intuitive fluent interface",
"homepage": "https://symfony.com", "homepage": "https://symfony.com",
"support": { "support": {
"source": "https://github.com/symfony/finder/tree/v7.3.0" "source": "https://github.com/symfony/finder/tree/v7.3.2"
}, },
"funding": [ "funding": [
{ {
@ -4323,25 +4399,29 @@
"url": "https://github.com/fabpot", "url": "https://github.com/fabpot",
"type": "github" "type": "github"
}, },
{
"url": "https://github.com/nicolas-grekas",
"type": "github"
},
{ {
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2024-12-30T19:00:26+00:00" "time": "2025-07-15T13:41:35+00:00"
}, },
{ {
"name": "symfony/http-foundation", "name": "symfony/http-foundation",
"version": "v7.3.1", "version": "v7.3.2",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/http-foundation.git", "url": "https://github.com/symfony/http-foundation.git",
"reference": "23dd60256610c86a3414575b70c596e5deff6ed9" "reference": "6877c122b3a6cc3695849622720054f6e6fa5fa6"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/http-foundation/zipball/23dd60256610c86a3414575b70c596e5deff6ed9", "url": "https://api.github.com/repos/symfony/http-foundation/zipball/6877c122b3a6cc3695849622720054f6e6fa5fa6",
"reference": "23dd60256610c86a3414575b70c596e5deff6ed9", "reference": "6877c122b3a6cc3695849622720054f6e6fa5fa6",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -4391,7 +4471,7 @@
"description": "Defines an object-oriented layer for the HTTP specification", "description": "Defines an object-oriented layer for the HTTP specification",
"homepage": "https://symfony.com", "homepage": "https://symfony.com",
"support": { "support": {
"source": "https://github.com/symfony/http-foundation/tree/v7.3.1" "source": "https://github.com/symfony/http-foundation/tree/v7.3.2"
}, },
"funding": [ "funding": [
{ {
@ -4402,25 +4482,29 @@
"url": "https://github.com/fabpot", "url": "https://github.com/fabpot",
"type": "github" "type": "github"
}, },
{
"url": "https://github.com/nicolas-grekas",
"type": "github"
},
{ {
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2025-06-23T15:07:14+00:00" "time": "2025-07-10T08:47:49+00:00"
}, },
{ {
"name": "symfony/http-kernel", "name": "symfony/http-kernel",
"version": "v7.3.1", "version": "v7.3.2",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/http-kernel.git", "url": "https://github.com/symfony/http-kernel.git",
"reference": "1644879a66e4aa29c36fe33dfa6c54b450ce1831" "reference": "6ecc895559ec0097e221ed2fd5eb44d5fede083c"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/http-kernel/zipball/1644879a66e4aa29c36fe33dfa6c54b450ce1831", "url": "https://api.github.com/repos/symfony/http-kernel/zipball/6ecc895559ec0097e221ed2fd5eb44d5fede083c",
"reference": "1644879a66e4aa29c36fe33dfa6c54b450ce1831", "reference": "6ecc895559ec0097e221ed2fd5eb44d5fede083c",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -4505,7 +4589,7 @@
"description": "Provides a structured process for converting a Request into a Response", "description": "Provides a structured process for converting a Request into a Response",
"homepage": "https://symfony.com", "homepage": "https://symfony.com",
"support": { "support": {
"source": "https://github.com/symfony/http-kernel/tree/v7.3.1" "source": "https://github.com/symfony/http-kernel/tree/v7.3.2"
}, },
"funding": [ "funding": [
{ {
@ -4516,25 +4600,29 @@
"url": "https://github.com/fabpot", "url": "https://github.com/fabpot",
"type": "github" "type": "github"
}, },
{
"url": "https://github.com/nicolas-grekas",
"type": "github"
},
{ {
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2025-06-28T08:24:55+00:00" "time": "2025-07-31T10:45:04+00:00"
}, },
{ {
"name": "symfony/mailer", "name": "symfony/mailer",
"version": "v7.3.1", "version": "v7.3.2",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/mailer.git", "url": "https://github.com/symfony/mailer.git",
"reference": "b5db5105b290bdbea5ab27b89c69effcf1cb3368" "reference": "d43e84d9522345f96ad6283d5dfccc8c1cfc299b"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/mailer/zipball/b5db5105b290bdbea5ab27b89c69effcf1cb3368", "url": "https://api.github.com/repos/symfony/mailer/zipball/d43e84d9522345f96ad6283d5dfccc8c1cfc299b",
"reference": "b5db5105b290bdbea5ab27b89c69effcf1cb3368", "reference": "d43e84d9522345f96ad6283d5dfccc8c1cfc299b",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -4585,7 +4673,7 @@
"description": "Helps sending emails", "description": "Helps sending emails",
"homepage": "https://symfony.com", "homepage": "https://symfony.com",
"support": { "support": {
"source": "https://github.com/symfony/mailer/tree/v7.3.1" "source": "https://github.com/symfony/mailer/tree/v7.3.2"
}, },
"funding": [ "funding": [
{ {
@ -4596,25 +4684,29 @@
"url": "https://github.com/fabpot", "url": "https://github.com/fabpot",
"type": "github" "type": "github"
}, },
{
"url": "https://github.com/nicolas-grekas",
"type": "github"
},
{ {
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2025-06-27T19:55:54+00:00" "time": "2025-07-15T11:36:08+00:00"
}, },
{ {
"name": "symfony/mime", "name": "symfony/mime",
"version": "v7.3.0", "version": "v7.3.2",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/mime.git", "url": "https://github.com/symfony/mime.git",
"reference": "0e7b19b2f399c31df0cdbe5d8cbf53f02f6cfcd9" "reference": "e0a0f859148daf1edf6c60b398eb40bfc96697d1"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/mime/zipball/0e7b19b2f399c31df0cdbe5d8cbf53f02f6cfcd9", "url": "https://api.github.com/repos/symfony/mime/zipball/e0a0f859148daf1edf6c60b398eb40bfc96697d1",
"reference": "0e7b19b2f399c31df0cdbe5d8cbf53f02f6cfcd9", "reference": "e0a0f859148daf1edf6c60b398eb40bfc96697d1",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -4669,7 +4761,7 @@
"mime-type" "mime-type"
], ],
"support": { "support": {
"source": "https://github.com/symfony/mime/tree/v7.3.0" "source": "https://github.com/symfony/mime/tree/v7.3.2"
}, },
"funding": [ "funding": [
{ {
@ -4680,12 +4772,16 @@
"url": "https://github.com/fabpot", "url": "https://github.com/fabpot",
"type": "github" "type": "github"
}, },
{
"url": "https://github.com/nicolas-grekas",
"type": "github"
},
{ {
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2025-02-19T08:51:26+00:00" "time": "2025-07-15T13:41:35+00:00"
}, },
{ {
"name": "symfony/polyfill-ctype", "name": "symfony/polyfill-ctype",
@ -5470,16 +5566,16 @@
}, },
{ {
"name": "symfony/routing", "name": "symfony/routing",
"version": "v7.3.0", "version": "v7.3.2",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/routing.git", "url": "https://github.com/symfony/routing.git",
"reference": "8e213820c5fea844ecea29203d2a308019007c15" "reference": "7614b8ca5fa89b9cd233e21b627bfc5774f586e4"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/routing/zipball/8e213820c5fea844ecea29203d2a308019007c15", "url": "https://api.github.com/repos/symfony/routing/zipball/7614b8ca5fa89b9cd233e21b627bfc5774f586e4",
"reference": "8e213820c5fea844ecea29203d2a308019007c15", "reference": "7614b8ca5fa89b9cd233e21b627bfc5774f586e4",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -5531,7 +5627,7 @@
"url" "url"
], ],
"support": { "support": {
"source": "https://github.com/symfony/routing/tree/v7.3.0" "source": "https://github.com/symfony/routing/tree/v7.3.2"
}, },
"funding": [ "funding": [
{ {
@ -5542,12 +5638,16 @@
"url": "https://github.com/fabpot", "url": "https://github.com/fabpot",
"type": "github" "type": "github"
}, },
{
"url": "https://github.com/nicolas-grekas",
"type": "github"
},
{ {
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2025-05-24T20:43:28+00:00" "time": "2025-07-15T11:36:08+00:00"
}, },
{ {
"name": "symfony/service-contracts", "name": "symfony/service-contracts",
@ -5634,16 +5734,16 @@
}, },
{ {
"name": "symfony/string", "name": "symfony/string",
"version": "v7.3.0", "version": "v7.3.2",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/string.git", "url": "https://github.com/symfony/string.git",
"reference": "f3570b8c61ca887a9e2938e85cb6458515d2b125" "reference": "42f505aff654e62ac7ac2ce21033818297ca89ca"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/string/zipball/f3570b8c61ca887a9e2938e85cb6458515d2b125", "url": "https://api.github.com/repos/symfony/string/zipball/42f505aff654e62ac7ac2ce21033818297ca89ca",
"reference": "f3570b8c61ca887a9e2938e85cb6458515d2b125", "reference": "42f505aff654e62ac7ac2ce21033818297ca89ca",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -5701,7 +5801,7 @@
"utf8" "utf8"
], ],
"support": { "support": {
"source": "https://github.com/symfony/string/tree/v7.3.0" "source": "https://github.com/symfony/string/tree/v7.3.2"
}, },
"funding": [ "funding": [
{ {
@ -5712,25 +5812,29 @@
"url": "https://github.com/fabpot", "url": "https://github.com/fabpot",
"type": "github" "type": "github"
}, },
{
"url": "https://github.com/nicolas-grekas",
"type": "github"
},
{ {
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2025-04-20T20:19:01+00:00" "time": "2025-07-10T08:47:49+00:00"
}, },
{ {
"name": "symfony/translation", "name": "symfony/translation",
"version": "v7.3.1", "version": "v7.3.2",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/translation.git", "url": "https://github.com/symfony/translation.git",
"reference": "241d5ac4910d256660238a7ecf250deba4c73063" "reference": "81b48f4daa96272efcce9c7a6c4b58e629df3c90"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/translation/zipball/241d5ac4910d256660238a7ecf250deba4c73063", "url": "https://api.github.com/repos/symfony/translation/zipball/81b48f4daa96272efcce9c7a6c4b58e629df3c90",
"reference": "241d5ac4910d256660238a7ecf250deba4c73063", "reference": "81b48f4daa96272efcce9c7a6c4b58e629df3c90",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -5797,7 +5901,7 @@
"description": "Provides tools to internationalize your application", "description": "Provides tools to internationalize your application",
"homepage": "https://symfony.com", "homepage": "https://symfony.com",
"support": { "support": {
"source": "https://github.com/symfony/translation/tree/v7.3.1" "source": "https://github.com/symfony/translation/tree/v7.3.2"
}, },
"funding": [ "funding": [
{ {
@ -5808,12 +5912,16 @@
"url": "https://github.com/fabpot", "url": "https://github.com/fabpot",
"type": "github" "type": "github"
}, },
{
"url": "https://github.com/nicolas-grekas",
"type": "github"
},
{ {
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2025-06-27T19:55:54+00:00" "time": "2025-07-30T17:31:46+00:00"
}, },
{ {
"name": "symfony/translation-contracts", "name": "symfony/translation-contracts",
@ -5969,16 +6077,16 @@
}, },
{ {
"name": "symfony/var-dumper", "name": "symfony/var-dumper",
"version": "v7.3.1", "version": "v7.3.2",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/var-dumper.git", "url": "https://github.com/symfony/var-dumper.git",
"reference": "6e209fbe5f5a7b6043baba46fe5735a4b85d0d42" "reference": "53205bea27450dc5c65377518b3275e126d45e75"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/var-dumper/zipball/6e209fbe5f5a7b6043baba46fe5735a4b85d0d42", "url": "https://api.github.com/repos/symfony/var-dumper/zipball/53205bea27450dc5c65377518b3275e126d45e75",
"reference": "6e209fbe5f5a7b6043baba46fe5735a4b85d0d42", "reference": "53205bea27450dc5c65377518b3275e126d45e75",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -5990,7 +6098,6 @@
"symfony/console": "<6.4" "symfony/console": "<6.4"
}, },
"require-dev": { "require-dev": {
"ext-iconv": "*",
"symfony/console": "^6.4|^7.0", "symfony/console": "^6.4|^7.0",
"symfony/http-kernel": "^6.4|^7.0", "symfony/http-kernel": "^6.4|^7.0",
"symfony/process": "^6.4|^7.0", "symfony/process": "^6.4|^7.0",
@ -6033,7 +6140,7 @@
"dump" "dump"
], ],
"support": { "support": {
"source": "https://github.com/symfony/var-dumper/tree/v7.3.1" "source": "https://github.com/symfony/var-dumper/tree/v7.3.2"
}, },
"funding": [ "funding": [
{ {
@ -6044,12 +6151,16 @@
"url": "https://github.com/fabpot", "url": "https://github.com/fabpot",
"type": "github" "type": "github"
}, },
{
"url": "https://github.com/nicolas-grekas",
"type": "github"
},
{ {
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2025-06-27T19:55:54+00:00" "time": "2025-07-29T20:02:46+00:00"
}, },
{ {
"name": "tijsverkoyen/css-to-inline-styles", "name": "tijsverkoyen/css-to-inline-styles",
@ -6921,16 +7032,16 @@
}, },
{ {
"name": "laravel/sail", "name": "laravel/sail",
"version": "v1.43.1", "version": "v1.44.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/laravel/sail.git", "url": "https://github.com/laravel/sail.git",
"reference": "3e7d899232a8c5e3ea4fc6dee7525ad583887e72" "reference": "a09097bd2a8a38e23ac472fa6a6cf5b0d1c1d3fe"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/laravel/sail/zipball/3e7d899232a8c5e3ea4fc6dee7525ad583887e72", "url": "https://api.github.com/repos/laravel/sail/zipball/a09097bd2a8a38e23ac472fa6a6cf5b0d1c1d3fe",
"reference": "3e7d899232a8c5e3ea4fc6dee7525ad583887e72", "reference": "a09097bd2a8a38e23ac472fa6a6cf5b0d1c1d3fe",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -6980,76 +7091,7 @@
"issues": "https://github.com/laravel/sail/issues", "issues": "https://github.com/laravel/sail/issues",
"source": "https://github.com/laravel/sail" "source": "https://github.com/laravel/sail"
}, },
"time": "2025-05-19T13:19:21+00:00" "time": "2025-07-04T16:17:06+00:00"
},
{
"name": "laravel/telescope",
"version": "v5.10.2",
"source": {
"type": "git",
"url": "https://github.com/laravel/telescope.git",
"reference": "6d249d93ab06dc147ac62ea02b4272c2e7a24b72"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/laravel/telescope/zipball/6d249d93ab06dc147ac62ea02b4272c2e7a24b72",
"reference": "6d249d93ab06dc147ac62ea02b4272c2e7a24b72",
"shasum": ""
},
"require": {
"ext-json": "*",
"laravel/framework": "^8.37|^9.0|^10.0|^11.0|^12.0",
"php": "^8.0",
"symfony/console": "^5.3|^6.0|^7.0",
"symfony/var-dumper": "^5.0|^6.0|^7.0"
},
"require-dev": {
"ext-gd": "*",
"guzzlehttp/guzzle": "^6.0|^7.0",
"laravel/octane": "^1.4|^2.0|dev-develop",
"orchestra/testbench": "^6.40|^7.37|^8.17|^9.0|^10.0",
"phpstan/phpstan": "^1.10",
"phpunit/phpunit": "^9.0|^10.5|^11.5"
},
"type": "library",
"extra": {
"laravel": {
"providers": [
"Laravel\\Telescope\\TelescopeServiceProvider"
]
}
},
"autoload": {
"psr-4": {
"Laravel\\Telescope\\": "src/",
"Laravel\\Telescope\\Database\\Factories\\": "database/factories/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Taylor Otwell",
"email": "taylor@laravel.com"
},
{
"name": "Mohamed Said",
"email": "mohamed@laravel.com"
}
],
"description": "An elegant debug assistant for the Laravel framework.",
"keywords": [
"debugging",
"laravel",
"monitoring"
],
"support": {
"issues": "https://github.com/laravel/telescope/issues",
"source": "https://github.com/laravel/telescope/tree/v5.10.2"
},
"time": "2025-07-24T05:26:13+00:00"
}, },
{ {
"name": "mockery/mockery", "name": "mockery/mockery",
@ -7136,16 +7178,16 @@
}, },
{ {
"name": "myclabs/deep-copy", "name": "myclabs/deep-copy",
"version": "1.13.3", "version": "1.13.4",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/myclabs/DeepCopy.git", "url": "https://github.com/myclabs/DeepCopy.git",
"reference": "faed855a7b5f4d4637717c2b3863e277116beb36" "reference": "07d290f0c47959fd5eed98c95ee5602db07e0b6a"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/faed855a7b5f4d4637717c2b3863e277116beb36", "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/07d290f0c47959fd5eed98c95ee5602db07e0b6a",
"reference": "faed855a7b5f4d4637717c2b3863e277116beb36", "reference": "07d290f0c47959fd5eed98c95ee5602db07e0b6a",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -7184,7 +7226,7 @@
], ],
"support": { "support": {
"issues": "https://github.com/myclabs/DeepCopy/issues", "issues": "https://github.com/myclabs/DeepCopy/issues",
"source": "https://github.com/myclabs/DeepCopy/tree/1.13.3" "source": "https://github.com/myclabs/DeepCopy/tree/1.13.4"
}, },
"funding": [ "funding": [
{ {
@ -7192,7 +7234,7 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2025-07-05T12:25:42+00:00" "time": "2025-08-01T08:46:24+00:00"
}, },
{ {
"name": "nunomaduro/collision", "name": "nunomaduro/collision",
@ -9459,16 +9501,16 @@
}, },
{ {
"name": "symfony/yaml", "name": "symfony/yaml",
"version": "v7.3.1", "version": "v7.3.2",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/yaml.git", "url": "https://github.com/symfony/yaml.git",
"reference": "0c3555045a46ab3cd4cc5a69d161225195230edb" "reference": "b8d7d868da9eb0919e99c8830431ea087d6aae30"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/yaml/zipball/0c3555045a46ab3cd4cc5a69d161225195230edb", "url": "https://api.github.com/repos/symfony/yaml/zipball/b8d7d868da9eb0919e99c8830431ea087d6aae30",
"reference": "0c3555045a46ab3cd4cc5a69d161225195230edb", "reference": "b8d7d868da9eb0919e99c8830431ea087d6aae30",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -9511,7 +9553,7 @@
"description": "Loads and dumps YAML files", "description": "Loads and dumps YAML files",
"homepage": "https://symfony.com", "homepage": "https://symfony.com",
"support": { "support": {
"source": "https://github.com/symfony/yaml/tree/v7.3.1" "source": "https://github.com/symfony/yaml/tree/v7.3.2"
}, },
"funding": [ "funding": [
{ {
@ -9522,12 +9564,16 @@
"url": "https://github.com/fabpot", "url": "https://github.com/fabpot",
"type": "github" "type": "github"
}, },
{
"url": "https://github.com/nicolas-grekas",
"type": "github"
},
{ {
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2025-06-03T06:57:57+00:00" "time": "2025-07-10T08:47:49+00:00"
}, },
{ {
"name": "ta-tikoma/phpunit-architecture-test", "name": "ta-tikoma/phpunit-architecture-test",

View File

@ -0,0 +1,50 @@
# Migrating from Authentik
> [!NOTE]
> You'll need access to your Authentik postgres instance as well as a database client.
## Applications
For applications we need:
- Name
- Client ID
- Client Secret
- Redirect URI
Run the following query in your database client of choice and download it as a csv or as insert statements
if your client allows.
::: code-group
```sql [PostgreSQL]
SELECT
p.name as name,
prov.client_id,
prov.client_secret,
prov._redirect_uris->0->>'url' as redirect_uri,
now() as created_at,
now() as updated_at
FROM
authentik_providers_oauth2_oauth2provider prov
join authentik_core_provider p
on prov.provider_ptr_id = p.id
```
:::
## Users
This is a little more involved since users will need to set their password again. If you
set up email sending they'll be able to just do the "forgot password" flow. If not, you
might have to handle it a different way.
::: code-group
```sql [PostgreSQL]
select
u.name,
u.email,
'cantbenull' as password, -- This won't work as a password but password can't be null
u.uuid
from authentik_core_user u
where u.email <> ''
```
:::

View File

@ -33,6 +33,10 @@ openssl rand -base64 32
> are stored. If these change, all the authentication will be messed up. > are stored. If these change, all the authentication will be messed up.
> [!WARNING]
> You should to bind to the `/app/storage/avatars` volume so you don't lose all avatars on restart.
::: code-group ::: code-group
```yaml [docker-compose.yml] ```yaml [docker-compose.yml]

View File

@ -38,7 +38,7 @@
<div x-show="!dockerView" class="space-y-4"> <div x-show="!dockerView" class="space-y-4">
<flux:input label="Client ID" disabled value="{{$app->client_id}}" copyable /> <flux:input label="Client ID" disabled value="{{$app->client_id}}" copyable />
<flux:input label="Client Secret" disabled value="{{$app->client_secret}}" copyable /> <flux:input label="Client Secret" disabled value="{{$app->client_secret}}" copyable />
<flux:input label="Redirect URI" disabled value="{{$app->redirect_uri}}" copyable /> <flux:input label="OIDC Discovery" disabled value="{{route('auth.openid-configuration')}}" copyable />
<flux:input label="Authorization Endpoint" disabled value="{{route('auth.authorize')}}" copyable /> <flux:input label="Authorization Endpoint" disabled value="{{route('auth.authorize')}}" copyable />
<flux:input label="Token Endpoint" disabled value="{{route('auth.token')}}" copyable /> <flux:input label="Token Endpoint" disabled value="{{route('auth.token')}}" copyable />
<flux:input label="User Endpoint" disabled value="{{route('auth.userinfo')}}" copyable /> <flux:input label="User Endpoint" disabled value="{{route('auth.userinfo')}}" copyable />

View File

@ -1,5 +1,5 @@
<div class="flex max-w-xl mx-auto min-h-svh flex-col items-center justify-center gap-6 p-6 md:p-10"> <div class="flex max-w-xl mx-auto min-h-svh flex-col items-center justify-center gap-6 p-6 md:p-10">
<x-card> <x-card class="p-10">
<flux:heading>You're about to log into</flux:heading> <flux:heading>You're about to log into</flux:heading>
<flux:heading size="xl">{{ $client->name }}</flux:heading> <flux:heading size="xl">{{ $client->name }}</flux:heading>
<flux:separator /> <flux:separator />