|
@@ -2,6 +2,7 @@
|
|
|
|
|
|
namespace ForkBB\Core;
|
|
namespace ForkBB\Core;
|
|
|
|
|
|
|
|
+use ForkBB\Core\Csrf;
|
|
use InvalidArgumentException;
|
|
use InvalidArgumentException;
|
|
|
|
|
|
class Router
|
|
class Router
|
|
@@ -73,9 +74,15 @@ class Router
|
|
'(_backslash_)',
|
|
'(_backslash_)',
|
|
];
|
|
];
|
|
|
|
|
|
- public function __construct(string $base)
|
|
|
|
|
|
+ /**
|
|
|
|
+ * @var Csrf
|
|
|
|
+ */
|
|
|
|
+ protected $csrf;
|
|
|
|
+
|
|
|
|
+ public function __construct(string $base, Csrf $csrf)
|
|
{
|
|
{
|
|
$this->baseUrl = $base;
|
|
$this->baseUrl = $base;
|
|
|
|
+ $this->csrf = $csrf;
|
|
$this->host = \parse_url($base, PHP_URL_HOST);
|
|
$this->host = \parse_url($base, PHP_URL_HOST);
|
|
$this->prefix = \parse_url($base, PHP_URL_PATH);
|
|
$this->prefix = \parse_url($base, PHP_URL_PATH);
|
|
$this->length = \strlen($this->prefix);
|
|
$this->length = \strlen($this->prefix);
|
|
@@ -121,6 +128,14 @@ class Router
|
|
return $result . $data . $anchor;
|
|
return $result . $data . $anchor;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ // автоматическое вычисление токена
|
|
|
|
+ if (
|
|
|
|
+ \array_key_exists('token', $args)
|
|
|
|
+ && ! isset($args['token'])
|
|
|
|
+ ) {
|
|
|
|
+ $args['token'] = $this->csrf->create($marker, $args);
|
|
|
|
+ }
|
|
|
|
+
|
|
list($link, $names, $request) = $data;
|
|
list($link, $names, $request) = $data;
|
|
$data = [];
|
|
$data = [];
|
|
// перечисление имен переменных для построения ссылки
|
|
// перечисление имен переменных для построения ссылки
|