@@ -86,20 +86,24 @@ public function startup(Event $event)
86
86
87
87
$ cookieData = $ request ->getCookie ($ cookieName );
88
88
if ($ cookieData ) {
89
- $ request-> params [ '_csrfToken ' ] = $ cookieData ;
89
+ $ request = $ request -> withParam ( '_csrfToken ' , $ cookieData) ;
90
90
}
91
91
92
92
if ($ request ->is ('requested ' )) {
93
+ $ controller ->request = $ request ;
94
+
93
95
return ;
94
96
}
95
97
96
98
if ($ request ->is ('get ' ) && $ cookieData === null ) {
97
- $ this ->_setCookie ($ request , $ response );
99
+ list ($ request , $ response ) = $ this ->_setCookie ($ request , $ response );
100
+ $ controller ->response = $ response ;
98
101
}
99
102
if ($ request ->is (['put ' , 'post ' , 'delete ' , 'patch ' ]) || $ request ->getData ()) {
100
103
$ this ->_validateToken ($ request );
101
- unset( $ request-> data [ $ this ->_config ['field ' ] ]);
104
+ $ request = $ request -> withoutData ( $ this ->_config ['field ' ]);
102
105
}
106
+ $ controller ->request = $ request ;
103
107
}
104
108
105
109
/**
@@ -122,22 +126,23 @@ public function implementedEvents()
122
126
*
123
127
* @param \Cake\Http\ServerRequest $request The request object.
124
128
* @param \Cake\Http\Response $response The response object.
125
- * @return void
129
+ * @return array An array of the modified request, response.
126
130
*/
127
131
protected function _setCookie (ServerRequest $ request , Response $ response )
128
132
{
129
133
$ expiry = new Time ($ this ->_config ['expiry ' ]);
130
134
$ value = hash ('sha512 ' , Security::randomBytes (16 ), false );
131
135
132
- $ request ->params ['_csrfToken ' ] = $ value ;
133
- $ response ->cookie ([
134
- 'name ' => $ this ->_config ['cookieName ' ],
136
+ $ request = $ request ->withParam ('_csrfToken ' , $ value );
137
+ $ response = $ response ->withCookie ($ this ->_config ['cookieName ' ], [
135
138
'value ' => $ value ,
136
139
'expire ' => $ expiry ->format ('U ' ),
137
140
'path ' => $ request ->getAttribute ('webroot ' ),
138
141
'secure ' => $ this ->_config ['secure ' ],
139
142
'httpOnly ' => $ this ->_config ['httpOnly ' ],
140
143
]);
144
+
145
+ return [$ request , $ response ];
141
146
}
142
147
143
148
/**
0 commit comments