Completed
Push — master ( 454df3...d9944b )
by Jimmy
04:56 queued 02:18
created

Filter   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 57
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 3
eloc 12
c 1
b 0
f 0
dl 0
loc 57
ccs 10
cts 10
cp 1
rs 10

2 Methods

Rating   Name   Duplication   Size   Complexity  
A handle() 0 12 2
A __construct() 0 5 1
1
<?php
2
3
namespace Spinen\ClickUp\Http\Middleware;
4
5
use Closure;
6
use Illuminate\Contracts\Routing\UrlGenerator;
7
use Illuminate\Http\Request;
8
use Illuminate\Routing\Redirector;
9
use Spinen\ClickUp\Api\Client as ClickUp;
10
11
/**
12
 * Class Filter
13
 *
14
 * @package Spinen\ClickUp\Http\Middleware
15
 */
16
class Filter
17
{
18
    /**
19
     * The ClickUp client instance.
20
     *
21
     * @var ClickUp
22
     */
23
    protected $clickup;
24
25
    /**
26
     * The redirector instance.
27
     *
28
     * @var Redirector
29
     */
30
    protected $redirector;
31
32
    /**
33
     * The UrlGenerator instance.
34
     *
35
     * @var UrlGenerator
36
     */
37
    protected $url_generator;
38
39
    /**
40
     * Create a new ClickUp filter middleware instance.
41
     *
42
     * @param ClickUp $clickup
43
     * @param Redirector $redirector
44
     * @param UrlGenerator $url_generator
45
     */
46 5
    public function __construct(ClickUp $clickup, Redirector $redirector, UrlGenerator $url_generator)
47
    {
48 5
        $this->clickup = $clickup;
49 5
        $this->redirector = $redirector;
50 5
        $this->url_generator = $url_generator;
51
    }
52
53
    /**
54
     * Handle an incoming request.
55
     *
56
     * @param Request $request Request
57
     * @param Closure $next Closure
58
     *
59
     * @return mixed
60
     */
61 4
    public function handle(Request $request, Closure $next)
62
    {
63 4
        if (!$request->user()->clickup_token) {
64
            // Set intended route, so that after linking account, user is put where they were going
65 3
            $this->redirector->setIntendedUrl($request->path());
66
67 3
            return $this->redirector->to(
68 3
                $this->clickup->oauthUri($this->url_generator->route('clickup.sso.redirect_url', $request->user()))
69
            );
70
        }
71
72 1
        return $next($request);
73
    }
74
}
75