--- /dev/null
+<?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;
+ }
+
+}
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());
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();
null === $selectedLocale ||
!(
$locales[$selectedLocale]->enabled ||
- $this->_isAdmin()
+ $this->can('backpack_translation')
)
) {
$domain = $this->_getDomainByLocale($locales[$defaultLocale]);
$this->setLocale($selectedLocale);
- return $next($request);
+ return $this->getResponse();
}
public function setLocale($locale)
return $map[$httpdomain] ?? null;
}
- protected function _isAdmin()
- {
- $user = backpack_user();
- if (null === $user) {
- return false;
- }
- return $user->can('backpack_translation');
- }
}