diff --git a/src/Pecee/CsrfToken.php b/src/Pecee/CsrfToken.php index 0828279d..87b47b54 100644 --- a/src/Pecee/CsrfToken.php +++ b/src/Pecee/CsrfToken.php @@ -1,4 +1,5 @@ token = $token; setcookie(static::CSRF_KEY, $token, time() + 60 * 120, '/'); } /** * Get csrf token + * @param string|null $defaultValue * @return string|null */ - public function getToken() + public function getToken($defaultValue = null) { - if ($this->hasToken() === true) { - return $_COOKIE[static::CSRF_KEY]; - } + $this->token = ($this->hasToken() === true) ? $_COOKIE[static::CSRF_KEY] : null; + + return ($this->token !== null) ? $this->token : $defaultValue; + } - return null; + /** + * Refresh existing token + */ + public function refresh() + { + if ($this->token !== null) { + $this->setToken($this->token); + } } /** diff --git a/src/Pecee/Http/Middleware/BaseCsrfVerifier.php b/src/Pecee/Http/Middleware/BaseCsrfVerifier.php index 6791029f..7eb80d6a 100644 --- a/src/Pecee/Http/Middleware/BaseCsrfVerifier.php +++ b/src/Pecee/Http/Middleware/BaseCsrfVerifier.php @@ -20,7 +20,7 @@ public function __construct() $this->csrfToken = new CsrfToken(); // Generate or get the CSRF-Token from Cookie. - $this->token = ($this->hasToken() === false) ? $this->generateToken() : $this->csrfToken->getToken(); + $this->token = $this->csrfToken->getToken($this->generateToken()); } /** @@ -73,6 +73,9 @@ public function handle(Request $request) } + // Refresh existing token + $this->csrfToken->refresh(); + } public function generateToken()