]> _ Git - cubist_cms-back.git/commitdiff
done #3161 @1
authorVincent Vanwaelscappel <vincent@cubedesigners.com>
Fri, 25 Oct 2019 13:35:21 +0000 (15:35 +0200)
committerVincent Vanwaelscappel <vincent@cubedesigners.com>
Fri, 25 Oct 2019 13:35:21 +0000 (15:35 +0200)
src/app/Middleware/CubistMiddleware.php [new file with mode: 0644]
src/app/Middleware/EmailObfuscate.php
src/app/Middleware/LocaleSelector.php

diff --git a/src/app/Middleware/CubistMiddleware.php b/src/app/Middleware/CubistMiddleware.php
new file mode 100644 (file)
index 0000000..be0e7ba
--- /dev/null
@@ -0,0 +1,60 @@
+<?php
+
+namespace Cubist\Backpack\app\Middleware;
+
+use Closure;
+use Illuminate\Http\Request;
+use Illuminate\Http\Response;
+
+
+class CubistMiddleware
+{
+    /**
+     * @var Request
+     */
+    public $request;
+
+    /**
+     * @var \Closure
+     */
+    public $next;
+
+    /**
+     * @var Response
+     */
+    protected $_response = null;
+
+    protected function can($permission)
+    {
+        $user = backpack_user();
+        if (null === $user) {
+            return false;
+        }
+        return $user->can($permission);
+
+    }
+
+    protected function onAdmin()
+    {
+        return strpos($this->request->getPathInfo(), '/admin') === 0;
+    }
+
+    public function handle(Request $request, Closure $next)
+    {
+        $this->request = $request;
+        $this->next = $next;
+    }
+
+    /**
+     * @return Response
+     */
+    public function getResponse()
+    {
+        if ($this->_response === null) {
+            $f=$this->next;
+            $this->_response = $f($this->request);
+        }
+        return $this->_response;
+    }
+
+}
index 9bb1dde76a98c5ba415c60e77cb855ef5ad7d750..f033596b54da9cdfe3972a41d384755aa27a0947 100644 (file)
@@ -8,17 +8,16 @@ use Illuminate\Contracts\Support\Renderable;
 use Illuminate\Http\Request;
 use Illuminate\Http\Response;
 
-class EmailObfuscate
+class EmailObfuscate extends CubistMiddleware
 {
     public function handle(Request $request, Closure $next)
     {
-
-        $response = $next($request);
-
-        if (strpos($request->getPathInfo(), '/admin') === 0) {
-            return $response;
+        parent::handle($request, $next);
+        if ($this->onAdmin()) {
+            return $this->getResponse();
         }
 
+        $response = $this->getResponse();
         // Apply logic differently based on the nature of $response.
         if ($response instanceof Renderable) {
             $response = $this->obfuscate($response->render());
index ef42e2e864bd2aabade95dfb4d6a7cf66f493bb5..6071a2b9890a3c79f28c9793f52debad666da070 100644 (file)
@@ -4,17 +4,19 @@ namespace Cubist\Backpack\app\Middleware;
 
 use Closure;
 use Cubist\Backpack\app\Magic\Models\Locale;
-use Illuminate\Auth\SessionGuard;
 use Illuminate\Http\Request;
 use Illuminate\Support\Facades\App;
-use Illuminate\Support\Facades\Auth;
-
-class LocaleSelector
-{
 
 
+class LocaleSelector extends CubistMiddleware
+{
     public function handle(Request $request, Closure $next)
     {
+        parent::handle($request, $next);
+        if ($this->onAdmin()) {
+            return $this->getResponse();
+        }
+
         $class = Locale::getLocaleClass();
 
         $localeEntities = $class::orderBy('default', 'DESC')->get();
@@ -35,7 +37,7 @@ class LocaleSelector
             null === $selectedLocale ||
             !(
                 $locales[$selectedLocale]->enabled ||
-                $this->_isAdmin()
+                $this->can('backpack_translation')
             )
         ) {
             $domain = $this->_getDomainByLocale($locales[$defaultLocale]);
@@ -50,7 +52,7 @@ class LocaleSelector
 
         $this->setLocale($selectedLocale);
 
-        return $next($request);
+        return $this->getResponse();
     }
 
     public function setLocale($locale)
@@ -101,13 +103,5 @@ class LocaleSelector
         return $map[$httpdomain] ?? null;
     }
 
-    protected function _isAdmin()
-    {
-        $user = backpack_user();
-        if (null === $user) {
-            return false;
-        }
-        return $user->can('backpack_translation');
 
-    }
 }