]> BookStack Code Mirror - bookstack/blobdiff - app/Http/Controllers/Auth/OidcController.php
Fixed failing test after drawio default url change
[bookstack] / app / Http / Controllers / Auth / OidcController.php
index f4103cb0a788acb640d4bdf46f17bed930fa5c8a..78a47e4888f55a3eb25232ae13acc7a88dce981c 100644 (file)
@@ -2,14 +2,14 @@
 
 namespace BookStack\Http\Controllers\Auth;
 
+use BookStack\Auth\Access\Oidc\OidcException;
 use BookStack\Auth\Access\Oidc\OidcService;
 use BookStack\Http\Controllers\Controller;
 use Illuminate\Http\Request;
 
 class OidcController extends Controller
 {
-
-    protected $oidcService;
+    protected OidcService $oidcService;
 
     /**
      * OpenIdController constructor.
@@ -25,7 +25,14 @@ class OidcController extends Controller
      */
     public function login()
     {
-        $loginDetails = $this->oidcService->login();
+        try {
+            $loginDetails = $this->oidcService->login();
+        } catch (OidcException $exception) {
+            $this->showErrorNotification($exception->getMessage());
+
+            return redirect('/login');
+        }
+
         session()->flash('oidc_state', $loginDetails['state']);
 
         return redirect($loginDetails['url']);
@@ -42,10 +49,18 @@ class OidcController extends Controller
 
         if ($storedState !== $responseState) {
             $this->showErrorNotification(trans('errors.oidc_fail_authed', ['system' => config('oidc.name')]));
+
+            return redirect('/login');
+        }
+
+        try {
+            $this->oidcService->processAuthorizeResponse($request->query('code'));
+        } catch (OidcException $oidcException) {
+            $this->showErrorNotification($oidcException->getMessage());
+
             return redirect('/login');
         }
 
-        $this->oidcService->processAuthorizeResponse($request->query('code'));
         return redirect()->intended();
     }
 }