diff --git a/app/Http/Controllers/Auth/SsoLoginController.php b/app/Http/Controllers/Auth/SsoLoginController.php index 10ed459..d06cbe3 100644 --- a/app/Http/Controllers/Auth/SsoLoginController.php +++ b/app/Http/Controllers/Auth/SsoLoginController.php @@ -88,7 +88,11 @@ class SsoLoginController extends Controller if ($request->filled('error')) { if (in_array($request->query('error'), ['login_required', 'interaction_required', 'consent_required'], true) && ! $request->boolean('interactive')) { - return redirect()->away((string) config('ladill.marketing_url')); + return redirect()->route('sso.connect', [ + 'redirect' => $intended, + 'interactive' => 1, + 'fallback' => 1, + ]); } return $this->finishCallback($request, $intended, (string) $request->query('error_description', $request->query('error'))); @@ -285,6 +289,10 @@ class SsoLoginController extends Controller private function resolveLanding(IdentityTeamClient $identity, User $user, string $intended): string { + if ($this->isMeetJoinUrl($intended)) { + return $intended; + } + try { return $identity->postAuthRedirect($user->ownerRef(), $intended); } catch (\Throwable) { @@ -292,6 +300,14 @@ class SsoLoginController extends Controller } } + private function isMeetJoinUrl(string $url): bool + { + $meetHost = config('app.meet_domain', 'meet.ladill.com'); + + return str_starts_with($url, 'https://'.$meetHost.'/r/') + || str_starts_with($url, 'http://'.$meetHost.'/r/'); + } + private function safeReturnUrl(string $url): string { $host = parse_url($url, PHP_URL_HOST); diff --git a/app/Http/Middleware/EnsurePlatformSession.php b/app/Http/Middleware/EnsurePlatformSession.php index a3af287..7912de2 100644 --- a/app/Http/Middleware/EnsurePlatformSession.php +++ b/app/Http/Middleware/EnsurePlatformSession.php @@ -68,6 +68,7 @@ class EnsurePlatformSession return redirect()->route('sso.connect', [ 'redirect' => $request->fullUrl(), + 'interactive' => 1, ]); } } diff --git a/bootstrap/app.php b/bootstrap/app.php index 16408be..d8ed3c1 100644 --- a/bootstrap/app.php +++ b/bootstrap/app.php @@ -54,9 +54,15 @@ return Application::configure(basePath: dirname(__DIR__)) }, ) ->withMiddleware(function (Middleware $middleware): void { - $middleware->redirectGuestsTo(fn (Request $request) => route('sso.connect', [ - 'redirect' => $request->fullUrl(), - ])); + $middleware->redirectGuestsTo(function (Request $request) { + $params = ['redirect' => $request->fullUrl()]; + + if ($request->is('r/*', 'room/*')) { + $params['interactive'] = 1; + } + + return route('sso.connect', $params); + }); $middleware->web(append: [ SetActingAccount::class, ]); diff --git a/config/ladill.php b/config/ladill.php index 7e9e2bf..ce81526 100644 --- a/config/ladill.php +++ b/config/ladill.php @@ -1,6 +1,6 @@ 'care', - 'marketing_url' => env('LADILL_MARKETING_URL', 'https://ladill.com/products/care'), + 'product_slug' => 'meet', + 'marketing_url' => env('LADILL_MARKETING_URL', 'https://ladill.com'), ]; diff --git a/resources/views/meet/join/denied.blade.php b/resources/views/meet/join/denied.blade.php index 4a3714d..70dfb4b 100644 --- a/resources/views/meet/join/denied.blade.php +++ b/resources/views/meet/join/denied.blade.php @@ -11,7 +11,7 @@