Skip to content

Commit c6db124

Browse files
authored
Merge pull request #69 from ramosisw/master
Add support to cookies
2 parents 8d27419 + 243dc84 commit c6db124

File tree

2 files changed

+63
-0
lines changed

2 files changed

+63
-0
lines changed

src/Auth/JwtAuthenticate.php

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ class JwtAuthenticate extends BaseAuthenticate
6060
*
6161
* Settings for this object.
6262
*
63+
* - `cookie` - Cookie name to check. Defaults to `false`.
6364
* - `header` - Header name to check. Defaults to `'authorization'`.
6465
* - `prefix` - Token prefix. Defaults to `'bearer'`.
6566
* - `parameter` - The url parameter name of the token. Defaults to `token`.
@@ -89,6 +90,7 @@ class JwtAuthenticate extends BaseAuthenticate
8990
public function __construct(ComponentRegistry $registry, $config)
9091
{
9192
$defaultConfig = [
93+
'cookie' => false,
9294
'header' => 'authorization',
9395
'prefix' => 'bearer',
9496
'parameter' => 'token',
@@ -200,6 +202,15 @@ public function getToken($request = null)
200202
return $this->_token = str_ireplace($config['prefix'] . ' ', '', $header);
201203
}
202204

205+
if (!empty($this->_config['cookie'])) {
206+
$token = $request->getCookie($this->_config['cookie']);
207+
if ($token !== null) {
208+
$token = (string)$token;
209+
}
210+
211+
return $this->_token = $token;
212+
}
213+
203214
if (!empty($this->_config['parameter'])) {
204215
$token = $request->getQuery($this->_config['parameter']);
205216
if ($token !== null) {

tests/TestCase/Auth/JwtAuthenticateTest.php

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -321,4 +321,56 @@ public function testCustomKey()
321321
$result = $auth->getUser($request, $this->response);
322322
$this->assertEquals($payload, $result);
323323
}
324+
325+
/**
326+
* test authenticate token as cookie.
327+
*
328+
* @return void
329+
*/
330+
public function testAuthenticateCookie()
331+
{
332+
$request = new ServerRequest('posts/index');
333+
334+
$this->auth = new JwtAuthenticate($this->Registry, [
335+
'userModel' => 'Users',
336+
'cookie' => 'jwt',
337+
]);
338+
339+
$result = $this->auth->getUser($request, $this->response);
340+
$this->assertFalse($result);
341+
342+
$expected = [
343+
'id' => 1,
344+
'group_id' => 1,
345+
'user_name' => 'admad',
346+
'email' => '[email protected]',
347+
'created' => new Time('2014-03-17 01:18:23'),
348+
'updated' => new Time('2014-03-17 01:20:31'),
349+
];
350+
351+
$request = new ServerRequest([
352+
'url' => 'posts/index',
353+
'cookies' => ['jwt' => $this->token]
354+
]);
355+
356+
$result = $this->auth->getUser($request, $this->response);
357+
$this->assertEquals($expected, $result);
358+
359+
$this->auth->setConfig('cookie', 'tokenname');
360+
$request = new ServerRequest([
361+
'url' => 'posts/index',
362+
'cookies' => ['tokenname' => $this->token]
363+
]);
364+
365+
$result = $this->auth->getUser($request, $this->response);
366+
$this->assertEquals($expected, $result);
367+
368+
$request = new ServerRequest([
369+
'url' => 'posts/index',
370+
'cookies' => ['wrongtoken' => $this->token]
371+
]);
372+
373+
$result = $this->auth->getUser($request, $this->response);
374+
$this->assertFalse($result);
375+
}
324376
}

0 commit comments

Comments
 (0)