Completed
Branch master (8e0976)
by Adam
04:13
created

ForumWrite::handle()   B

Complexity

Conditions 6
Paths 5

Size

Total Lines 21

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 6
nc 5
nop 2
dl 0
loc 21
rs 8.9617
c 0
b 0
f 0
1
<?php
2
3
namespace Coyote\Http\Middleware;
4
5
use Closure;
6
use Illuminate\Contracts\Auth\Access\Gate;
7
use Illuminate\Http\Request;
8
9
class ForumWrite extends AbstractMiddleware
10
{
11
    /**
12
     * @var Gate
13
     */
14
    protected $gate;
15
16
    /**
17
     * @param Gate $gate
18
     */
19
    public function __construct(Gate $gate)
20
    {
21
        $this->gate = $gate;
22
    }
23
24
    /**
25
     * Handle an incoming request.
26
     *
27
     * @param  Request  $request
28
     * @param  Closure  $next
29
     * @return mixed
30
     */
31
    public function handle(Request $request, Closure $next)
32
    {
33
        $forum = $request->route('forum');
34
35
        if (!$forum->enable_anonymous && empty($request->user())) {
36
            return $this->login($request);
37
        }
38
39
        if ($forum->is_locked) {
40
            return $this->unauthorized($request);
41
        }
42
43
        $topic = $request->route('topic');
44
        if (!empty($topic)) {
45
            if ($this->gate->denies('write', $topic)) {
46
                return $this->unauthorized($request);
47
            }
48
        }
49
50
        return $next($request);
51
    }
52
}
53