Issue #437: Fixed CSRF-token returning null on first refresh after cookies are removed.

This commit is contained in:
Simon Sessingø
2021-03-18 02:50:06 +01:00
parent 11a69c2f72
commit fb726c3613
3 changed files with 29 additions and 8 deletions

View File

@@ -2,7 +2,9 @@
<module type="WEB_MODULE" version="4">
<component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/spec" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/Pecee" isTestSource="false" packagePrefix="Pecee\" />
<sourceFolder url="file://$MODULE_DIR$/tests" isTestSource="true" />
<excludeFolder url="file://$MODULE_DIR$/vendor/composer" />
<excludeFolder url="file://$MODULE_DIR$/vendor/doctrine/instantiator" />
<excludeFolder url="file://$MODULE_DIR$/vendor/hamcrest/hamcrest-php" />

31
.idea/workspace.xml generated
View File

@@ -5,8 +5,9 @@
</component>
<component name="ChangeListManager">
<list default="true" id="a7058529-bdc4-40b4-a50d-c50564dc83f0" name="Default" comment="">
<change beforePath="$PROJECT_DIR$/.idea/simple-php-router.iml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/simple-php-router.iml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/tests/Pecee/SimpleRouter/InputHandlerTest.php" beforeDir="false" afterPath="$PROJECT_DIR$/tests/Pecee/SimpleRouter/InputHandlerTest.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/Pecee/Http/Security/CookieTokenProvider.php" beforeDir="false" afterPath="$PROJECT_DIR$/src/Pecee/Http/Security/CookieTokenProvider.php" afterDir="false" />
</list>
<option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" />
@@ -70,6 +71,14 @@
<component name="Git.Settings">
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
</component>
<component name="GitSEFilterConfiguration">
<file-type-list>
<filtered-out-file-type name="LOCAL_BRANCH" />
<filtered-out-file-type name="REMOTE_BRANCH" />
<filtered-out-file-type name="TAG" />
<filtered-out-file-type name="COMMIT_BY_MESSAGE" />
</file-type-list>
</component>
<component name="IdeDocumentHistory">
<option name="CHANGED_PATHS">
<list>
@@ -185,6 +194,7 @@
<option name="width" value="2295" />
<option name="height" value="1235" />
</component>
<component name="ProjectId" id="1puNexBUD99jjBAKJYQWVgC8eR3" />
<component name="ProjectLevelVcsManager" settingsEditedManually="true">
<ConfirmationsSetting value="2" id="Add" />
</component>
@@ -258,17 +268,25 @@
</pane>
</panes>
</component>
<component name="ProjectViewState">
<option name="hideEmptyMiddlePackages" value="true" />
<option name="showLibraryContents" value="true" />
</component>
<component name="PropertiesComponent">
<property name="RunOnceActivity.OpenProjectViewOnStart" value="true" />
<property name="RunOnceActivity.ShowReadmeOnStart" value="true" />
<property name="WebServerToolWindowFactoryState" value="false" />
<property name="last_opened_file_path" value="$PROJECT_DIR$/../pecee-pixie" />
<property name="last_opened_file_path" value="$PROJECT_DIR$" />
<property name="node.js.detected.package.eslint" value="true" />
<property name="node.js.detected.package.standard" value="true" />
<property name="node.js.path.for.package.eslint" value="project" />
<property name="node.js.path.for.package.standard" value="project" />
<property name="node.js.selected.package.eslint" value="" />
<property name="node.js.selected.package.standard" value="" />
<property name="nodejs_package_manager_path" value="npm" />
<property name="run.code.analysis.last.selected.profile" value="pProject Default" />
<property name="settings.editor.selected.configurable" value="preferences.pluginManager" />
<property name="vue.rearranger.settings.migration" value="true" />
</component>
<component name="RecentsManager">
<key name="CopyFile.RECENT_KEYS">
@@ -308,10 +326,10 @@
</configuration>
<list>
<item itemvalue="PHP Script.debug.php" />
<item itemvalue="PHPUnit.tests" />
<item itemvalue="PHPUnit.phpunit.xml" />
<item itemvalue="PHPUnit.EventHandlerTest" />
<item itemvalue="PHPUnit.RouterRouteTest" />
<item itemvalue="PHPUnit.phpunit.xml" />
<item itemvalue="PHPUnit.tests" />
</list>
<recent_temporary>
<list>
@@ -323,6 +341,7 @@
</list>
</recent_temporary>
</component>
<component name="SpellCheckerSettings" RuntimeDictionaries="0" Folders="0" CustomDictionaries="0" DefaultDictionary="project-level" UseSingleDictionary="true" transferred="true" />
<component name="SvnConfiguration">
<configuration />
</component>
@@ -403,6 +422,8 @@
<workItem from="1535671881115" duration="506000" />
<workItem from="1535806837271" duration="204000" />
<workItem from="1543101575756" duration="1207000" />
<workItem from="1616029119335" duration="207000" />
<workItem from="1616030812009" duration="1360000" />
</task>
<servers />
</component>
@@ -480,7 +501,7 @@
</layout>
</component>
<component name="TypeScriptGeneratedFilesManager">
<option name="version" value="1" />
<option name="version" value="3" />
</component>
<component name="XSLT-Support.FileAssociations.UIState">
<expand />

View File

@@ -17,7 +17,7 @@ class CookieTokenProvider implements ITokenProvider
*/
public function __construct()
{
$this->token = $this->getToken();
$this->token = ($this->hasToken() === true) ? $_COOKIE[static::CSRF_KEY] : null;
if ($this->token === null) {
$this->token = $this->generateToken();
@@ -73,8 +73,6 @@ class CookieTokenProvider implements ITokenProvider
*/
public function getToken(?string $defaultValue = null): ?string
{
$this->token = ($this->hasToken() === true) ? $_COOKIE[static::CSRF_KEY] : null;
return $this->token ?? $defaultValue;
}