From 477d010f69d50d3d1363bbb518587ccb0ea718b5 Mon Sep 17 00:00:00 2001 From: Joel Clermont Date: Tue, 16 Sep 2025 14:02:48 -0500 Subject: [PATCH 1/2] allow login redirectUrl customization --- src/Http/Requests/AuthKitLoginRequest.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/Http/Requests/AuthKitLoginRequest.php b/src/Http/Requests/AuthKitLoginRequest.php index 67113d6..ff1db26 100644 --- a/src/Http/Requests/AuthKitLoginRequest.php +++ b/src/Http/Requests/AuthKitLoginRequest.php @@ -18,7 +18,8 @@ class AuthKitLoginRequest extends FormRequest * @param array{ * screenHint?: 'sign-in'|'sign-up', * domainHint?: string, - * loginHint?: string + * loginHint?: string, + * redirectUrl?: string, * } $options */ public function redirect(array $options = []): Response @@ -26,7 +27,7 @@ public function redirect(array $options = []): Response WorkOS::configure(); $url = (new UserManagement)->getAuthorizationUrl( - config('services.workos.redirect_url'), + $options['redirectUrl'] ?? config('services.workos.redirect_url'), $state = [ 'state' => Str::random(20), 'previous_url' => base64_encode(URL::previous()), From 55de131a69b3bd545f8de314f46d29a7c2690c51 Mon Sep 17 00:00:00 2001 From: Joel Clermont Date: Tue, 16 Sep 2025 14:12:02 -0500 Subject: [PATCH 2/2] add tests --- tests/Feature/AuthKitLoginRequestTest.php | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/tests/Feature/AuthKitLoginRequestTest.php b/tests/Feature/AuthKitLoginRequestTest.php index d7ba94c..2f90568 100644 --- a/tests/Feature/AuthKitLoginRequestTest.php +++ b/tests/Feature/AuthKitLoginRequestTest.php @@ -105,14 +105,30 @@ ->toContain('login_hint='.urlencode('francisco@laravel.com')); }); +it('uses default redirect URL when not specified', function () { + $response = $this->request->redirect(); + + expect($response->headers->get('Location')) + ->toContain('redirect_uri='.urlencode('https://laravel.com/authenticate')); +}); + +it('uses custom redirect URL when specified', function () { + $response = $this->request->redirect(['redirectUrl' => 'https://custom.laravel.com/authenticate']); + + expect($response->headers->get('Location')) + ->toContain('redirect_uri='.urlencode('https://custom.laravel.com/authenticate')); +}); + it('supports multiple parameters at once', function () { $response = $this->request->redirect([ 'screenHint' => 'sign-in', 'domainHint' => 'laravel.com', 'loginHint' => 'francisco@laravel.com', + 'redirectUrl' => 'https://custom.laravel.com/authenticate', ]); expect($response->headers->get('Location'))->toContain('screen_hint=sign-in') ->toContain('domain_hint=laravel.com') - ->toContain('login_hint='.urlencode('francisco@laravel.com')); + ->toContain('login_hint='.urlencode('francisco@laravel.com')) + ->toContain('redirect_uri='.urlencode('https://custom.laravel.com/authenticate')); });