]> BookStack Code Mirror - bookstack/blobdiff - app/Http/Controllers/Auth/Saml2Controller.php
Add Perl syntax higlighting to code editor
[bookstack] / app / Http / Controllers / Auth / Saml2Controller.php
index d54e925bbf40ff17145564e123d3f44eafd10fc2..86389412861a033e6c9bc8170f8799cb3c23988a 100644 (file)
@@ -4,7 +4,6 @@ namespace BookStack\Http\Controllers\Auth;
 
 use BookStack\Auth\Access\Saml2Service;
 use BookStack\Http\Controllers\Controller;
-use Illuminate\Http\Request;
 
 class Saml2Controller extends Controller
 {
@@ -18,6 +17,15 @@ class Saml2Controller extends Controller
     {
         parent::__construct();
         $this->samlService = $samlService;
+
+        // SAML2 access middleware
+        $this->middleware(function ($request, $next) {
+            if (!config('saml2.enabled')) {
+                $this->showPermissionError();
+            }
+
+            return $next($request);
+        });
     }
 
     /**
@@ -31,6 +39,20 @@ class Saml2Controller extends Controller
         return redirect($loginDetails['url']);
     }
 
+    /**
+     * Start the logout flow via SAML2.
+     */
+    public function logout()
+    {
+        $logoutDetails = $this->samlService->logout();
+
+        if ($logoutDetails['id']) {
+            session()->flash('saml2_logout_request_id', $logoutDetails['id']);
+        }
+
+        return redirect($logoutDetails['url']);
+    }
+
     /*
      * Get the metadata for this SAML2 service provider.
      */
@@ -48,7 +70,9 @@ class Saml2Controller extends Controller
      */
     public function sls()
     {
-        // TODO
+        $requestId = session()->pull('saml2_logout_request_id', null);
+        $redirect = $this->samlService->processSlsResponse($requestId) ?? '/';
+        return redirect($redirect);
     }
 
     /**
@@ -65,6 +89,7 @@ class Saml2Controller extends Controller
             return redirect('/login');
         }
 
+        session()->put('last_login_type', 'saml2');
         return redirect()->intended();
     }