SentinelAuthentication   A
last analyzed

Complexity

Total Complexity 18

Size/Duplication

Total Lines 143
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 1

Importance

Changes 4
Bugs 1 Features 0
Metric Value
wmc 18
lcom 0
cbo 1
dl 0
loc 143
rs 10
c 4
b 1
f 0

11 Methods

Rating   Name   Duplication   Size   Complexity  
A login() 0 16 4
A register() 0 4 1
A assignRole() 0 4 1
A logout() 0 4 1
A activate() 0 11 2
A createActivation() 0 4 1
A createReminderCode() 0 6 2
A completeResetPassword() 0 4 1
A hasAccess() 0 8 2
A check() 0 4 1
A id() 0 8 2
1
<?php namespace Modules\User\Repositories\Sentinel;
2
3
use Cartalyst\Sentinel\Checkpoints\NotActivatedException;
4
use Cartalyst\Sentinel\Checkpoints\ThrottlingException;
5
use Cartalyst\Sentinel\Laravel\Facades\Activation;
6
use Cartalyst\Sentinel\Laravel\Facades\Reminder;
7
use Cartalyst\Sentinel\Laravel\Facades\Sentinel;
8
use Modules\Core\Contracts\Authentication;
9
use Modules\User\Events\UserHasActivatedAccount;
10
11
class SentinelAuthentication implements Authentication
12
{
13
    /**
14
     * Authenticate a user
15
     * @param  array $credentials
16
     * @param  bool  $remember    Remember the user
17
     * @return mixed
18
     */
19
    public function login(array $credentials, $remember = false)
20
    {
21
        try {
22
            if (Sentinel::authenticate($credentials, $remember)) {
23
                return false;
24
            }
25
26
            return 'Invalid login or password.';
27
        } catch (NotActivatedException $e) {
0 ignored issues
show
Bug introduced by
The class Cartalyst\Sentinel\Check...s\NotActivatedException does not exist. Did you forget a USE statement, or did you not list all dependencies?

Scrutinizer analyzes your composer.json/composer.lock file if available to determine the classes, and functions that are defined by your dependencies.

It seems like the listed class was neither found in your dependencies, nor was it found in the analyzed files in your repository. If you are using some other form of dependency management, you might want to disable this analysis.

Loading history...
28
            return 'Account not yet validated. Please check your email.';
29
        } catch (ThrottlingException $e) {
0 ignored issues
show
Bug introduced by
The class Cartalyst\Sentinel\Checkpoints\ThrottlingException does not exist. Did you forget a USE statement, or did you not list all dependencies?

Scrutinizer analyzes your composer.json/composer.lock file if available to determine the classes, and functions that are defined by your dependencies.

It seems like the listed class was neither found in your dependencies, nor was it found in the analyzed files in your repository. If you are using some other form of dependency management, you might want to disable this analysis.

Loading history...
30
            $delay = $e->getDelay();
31
32
            return "Your account is blocked for {$delay} second(s).";
33
        }
34
    }
35
36
    /**
37
     * Register a new user.
38
     * @param  array $user
39
     * @return bool
40
     */
41
    public function register(array $user)
42
    {
43
        return Sentinel::getUserRepository()->create((array) $user);
44
    }
45
46
    /**
47
     * Assign a role to the given user.
48
     * @param  \Modules\User\Repositories\UserRepository $user
49
     * @param  \Modules\User\Repositories\RoleRepository $role
50
     * @return mixed
51
     */
52
    public function assignRole($user, $role)
53
    {
54
        return $role->users()->attach($user);
0 ignored issues
show
Bug introduced by
The method users() does not seem to exist on object<Modules\User\Repositories\RoleRepository>.

This check looks for calls to methods that do not seem to exist on a given type. It looks for the method on the type itself as well as in inherited classes or implemented interfaces.

This is most likely a typographical error or the method has been renamed.

Loading history...
55
    }
56
57
    /**
58
     * Log the user out of the application.
59
     * @return bool
60
     */
61
    public function logout()
62
    {
63
        return Sentinel::logout();
64
    }
65
66
    /**
67
     * Activate the given used id
68
     * @param  int    $userId
69
     * @param  string $code
70
     * @return mixed
71
     */
72
    public function activate($userId, $code)
73
    {
74
        $user = Sentinel::findById($userId);
75
76
        $success = Activation::complete($user, $code);
77
        if ($success) {
78
            event(new UserHasActivatedAccount($user));
79
        }
80
81
        return $success;
82
    }
83
84
    /**
85
     * Create an activation code for the given user
86
     * @param  \Modules\User\Repositories\UserRepository $user
87
     * @return mixed
88
     */
89
    public function createActivation($user)
90
    {
91
        return Activation::create($user)->code;
92
    }
93
94
    /**
95
     * Create a reminders code for the given user
96
     * @param  \Modules\User\Repositories\UserRepository $user
97
     * @return mixed
98
     */
99
    public function createReminderCode($user)
100
    {
101
        $reminder = Reminder::exists($user) ?: Reminder::create($user);
102
103
        return $reminder->code;
104
    }
105
106
    /**
107
     * Completes the reset password process
108
     * @param $user
109
     * @param  string $code
110
     * @param  string $password
111
     * @return bool
112
     */
113
    public function completeResetPassword($user, $code, $password)
114
    {
115
        return Reminder::complete($user, $code, $password);
116
    }
117
118
    /**
119
     * Determines if the current user has access to given permission
120
     * @param $permission
121
     * @return bool
122
     */
123
    public function hasAccess($permission)
124
    {
125
        if (! Sentinel::check()) {
126
            return false;
127
        }
128
129
        return Sentinel::hasAccess($permission);
130
    }
131
132
    /**
133
     * Check if the user is logged in
134
     * @return mixed
135
     */
136
    public function check()
137
    {
138
        return Sentinel::check();
139
    }
140
141
    /**
142
     * Get the ID for the currently authenticated user
143
     * @return int
144
     */
145
    public function id()
146
    {
147
        if (! $user = $this->check()) {
148
            return;
149
        }
150
151
        return $user->id;
152
    }
153
}
154