Proyectos de Subversion LeadersLinked - Services

Rev

Rev 1 | | Comparar con el anterior | Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
1 efrain 1
<?php
345 www 2
declare(strict_types = 1);
1 efrain 3
namespace LeadersLinked\Authentication;
4
 
345 www 5
use Laminas\Authentication\Adapter\AdapterInterface as AuthAdapterInterface;
1 efrain 6
use Laminas\Authentication\Result;
7
use Laminas\Db\Adapter\AdapterInterface;
8
use Laminas\Log\LoggerInterface;
9
use LeadersLinked\Model\User;
10
use LeadersLinked\Mapper\UserMapper;
11
use LeadersLinked\Library\Functions;
12
use LeadersLinked\Model\UserProfile;
13
use LeadersLinked\Mapper\UserProfileMapper;
14
use LeadersLinked\Mapper\UserProviderMapper;
15
 
16
class AuthEmailAdapter implements AuthAdapterInterface
17
{
345 www 18
 
1 efrain 19
    /**
20
     *
21
     * @var AdapterInterface
22
     */
23
    private $adapter;
24
 
25
    /**
345 www 26
     *
1 efrain 27
     * @var string
28
     */
29
    private $email;
345 www 30
 
1 efrain 31
    /**
345 www 32
     *
1 efrain 33
     * @var int
34
     */
35
    private $network_id;
36
 
37
    /**
345 www 38
     *
1 efrain 39
     * @param AdapterInterface $adapter
40
     */
41
    public function __construct(AdapterInterface $adapter)
42
    {
345 www 43
        $this->adapter = $adapter;
1 efrain 44
    }
45
 
46
    /**
345 www 47
     *
1 efrain 48
     * @param string $email
49
     * @param int $network_id
50
     * @return null
51
     */
52
    public function setData($email, $network_id)
53
    {
54
        $this->email = $email;
55
        $this->network_id = $network_id;
56
    }
345 www 57
 
1 efrain 58
    /**
345 www 59
     *
60
     * {@inheritdoc}
1 efrain 61
     * @see \Laminas\Authentication\Adapter\AdapterInterface::authenticate()
62
     */
63
    public function authenticate()
64
    {
65
        $userMapper = UserMapper::getInstance($this->adapter);
66
        $user = $userMapper->fetchOneByEmailAndNetworkId($this->email, $this->network_id);
67
 
345 www 68
        if ($user) {
69
 
70
            if (User::EMAIL_VERIFIED_NO == $user->email_verified) {
71
                return new Result(Result::FAILURE_UNCATEGORIZED, null, [
72
                    'ERROR_USER_EMAIL_HASNT_BEEN_VARIFIED'
73
                ]);
1 efrain 74
            }
345 www 75
            if (User::BLOCKED_YES == $user->blocked) {
76
                return new Result(Result::FAILURE_UNCATEGORIZED, null, [
77
                    'ERROR_USER_IS_BLOCKED'
78
                ]);
1 efrain 79
            }
345 www 80
 
81
            if (User::STATUS_INACTIVE == $user->status) {
82
                return new Result(Result::FAILURE_UNCATEGORIZED, null, [
83
                    'ERROR_USER_IS_INACTIVE'
84
                ]);
1 efrain 85
            }
345 www 86
 
87
            if (User::REQUEST_ACCESS_PENDING == $user->request_access) {
88
                return new Result(Result::FAILURE_UNCATEGORIZED, null, [
89
                    'ERROR_USER_REQUEST_ACCESS_IS_PENDING'
90
                ]);
1 efrain 91
            }
345 www 92
 
93
            if (User::REQUEST_ACCESS_REJECTED == $user->request_access) {
94
                return new Result(Result::FAILURE_UNCATEGORIZED, null, [
95
                    'ERROR_USER_REQUEST_ACCESS_IS_REJECTED'
96
                ]);
97
            }
98
 
1 efrain 99
            $user->login_attempt = 0;
100
            $userMapper->update($user);
345 www 101
 
1 efrain 102
            $data = [
103
                'user_id' => $user->id,
345 www 104
                'device_id' => ''
1 efrain 105
            ];
345 www 106
 
1 efrain 107
            return new Result(Result::SUCCESS, $data, []);
108
        } else {
345 www 109
            return new Result(Result::FAILURE, null, [
110
                'ERROR_USER_NOT_FOUND'
111
            ]);
112
        }
1 efrain 113
    }
114
}