Completed
Pull Request — master (#3)
by Shingo
02:27
created

TokenExtractorModule::configure()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 10
Code Lines 7

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 8
CRAP Score 1

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 10
ccs 8
cts 8
cp 1
rs 9.4285
cc 1
eloc 7
nc 1
nop 0
crap 1
1
<?php
2
3
/**
4
 * This file is part of the BEAR.JwtAuthModule package.
5
 *
6
 * @license http://opensource.org/licenses/MIT MIT
7
 */
8
namespace BEAR\JwtAuth;
9
10
use BEAR\JwtAuth\Annotation\Cookie;
11
use BEAR\JwtAuth\Annotation\Header;
12
use BEAR\JwtAuth\Annotation\QueryParam;
13
use BEAR\JwtAuth\Extractor\AuthorizationHeaderTokenExtractor;
14
use BEAR\JwtAuth\Extractor\CookieTokenExtractor;
15
use BEAR\JwtAuth\Extractor\QueryParameterTokenExtractor;
16
use BEAR\JwtAuth\Extractor\TokenExtractorInterface;
17
use Ray\Di\AbstractModule;
18
use Ray\Di\Scope;
19
20
class TokenExtractorModule extends AbstractModule
21
{
22
    /**
23
     * Used to detect token in header.
24
     *
25
     * @var array
26
     */
27
    private $header = ['Authorization', '/Bearer\s+(.*)$/i'];
28
29
    /**
30
     * Used to detect token in cookie.
31
     *
32
     * @var string
33
     */
34
    private $cookie = 'token';
35
36
    /**
37
     * Used to detect token in query string.
38
     *
39
     * @var string
40
     */
41
    private $queryParam = 'token';
42
43 16
    protected function configure()
44
    {
45 16
        $this->bind()->annotatedWith(Header::class)->toInstance($this->header);
46 16
        $this->bind()->annotatedWith(Cookie::class)->toInstance($this->cookie);
47 16
        $this->bind()->annotatedWith(QueryParam::class)->toInstance($this->queryParam);
48
49 16
        $this->bind(TokenExtractorInterface::class)->to(AuthorizationHeaderTokenExtractor::class)->in(Scope::SINGLETON);
50 16
        $this->bind(TokenExtractorInterface::class)->annotatedWith('query')->to(QueryParameterTokenExtractor::class)->in(Scope::SINGLETON);
51 16
        $this->bind(TokenExtractorInterface::class)->annotatedWith('cookie')->to(CookieTokenExtractor::class)->in(Scope::SINGLETON);
52 16
    }
53
}
54