Passed
Pull Request — master (#49)
by
unknown
12:41
created

LogSuccessfulOtherDeviceLogout::handle()   A

Complexity

Conditions 3
Paths 3

Size

Total Lines 18
Code Lines 11

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 3
eloc 11
c 1
b 0
f 0
nc 3
nop 1
dl 0
loc 18
rs 9.9
1
<?php
2
3
namespace Yadahan\AuthenticationLog\Listeners;
4
5
use Illuminate\Auth\Events\OtherDeviceLogout;
6
use Illuminate\Http\Request;
7
use Illuminate\Support\Carbon;
8
use Yadahan\AuthenticationLog\AuthenticationLog;
9
10
class LogSuccessfulOtherDeviceLogout
11
{
12
    /**
13
     * The request.
14
     *
15
     * @var \Illuminate\Http\Request
16
     */
17
    public $request;
18
19
    /**
20
     * Create the event listener.
21
     *
22
     * @param  \Illuminate\Http\Request  $request
23
     * @return void
24
     */
25
    public function __construct(Request $request)
26
    {
27
        $this->request = $request;
28
    }
29
30
    /**
31
     * Handle the event.
32
     *
33
     * @param  Logout  $event
0 ignored issues
show
Bug introduced by
The type Yadahan\AuthenticationLog\Listeners\Logout was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
34
     * @return void
35
     */
36
    public function handle(OtherDeviceLogout $event)
37
    {
38
        if ($event->user) {
39
            $user = $event->user;
40
            $ip = $this->request->ip();
41
            $userAgent = $this->request->userAgent();
42
            $authenticationLog = $user->authentications()->whereIpAddress($ip)->whereUserAgent($userAgent)->first();
0 ignored issues
show
Bug introduced by
The method authentications() does not exist on Illuminate\Contracts\Auth\Authenticatable. It seems like you code against a sub-type of Illuminate\Contracts\Auth\Authenticatable such as Illuminate\Foundation\Auth\User. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

42
            $authenticationLog = $user->/** @scrutinizer ignore-call */ authentications()->whereIpAddress($ip)->whereUserAgent($userAgent)->first();
Loading history...
43
44
            if (! $authenticationLog) {
45
                $authenticationLog = new AuthenticationLog([
46
                    'ip_address' => $ip,
47
                    'user_agent' => $userAgent,
48
                ]);
49
            }
50
51
            $authenticationLog->logout_at = Carbon::now();
52
53
            $user->authentications()->save($authenticationLog);
54
        }
55
    }
56
}
57