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 AuthSocialAdapter 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 $id;
345 www 30
 
1 efrain 31
    /**
32
     *
33
     * @var string
34
     */
35
    private $provider;
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 $id
49
     * @param string $provider
50
     */
51
    public function setData($id, $provider)
52
    {
53
        $this->id = $id;
54
        $this->provider = $provider;
55
    }
345 www 56
 
1 efrain 57
    /**
345 www 58
     *
59
     * {@inheritdoc}
1 efrain 60
     * @see \Laminas\Authentication\Adapter\AdapterInterface::authenticate()
61
     */
62
    public function authenticate()
63
    {
64
        $userProviderMapper = UserProviderMapper::getInstance($this->adapter);
65
        $userProvider = $userProviderMapper->fetchOneByIdAndProdiver($this->id, $this->provider);
345 www 66
 
67
        if (! $userProvider) {
68
            return new Result(Result::FAILURE_IDENTITY_NOT_FOUND, null, [
69
                'ERROR_USER_PROVIDER_NOT_FOUND'
70
            ]);
1 efrain 71
        }
345 www 72
 
1 efrain 73
        $userMapper = UserMapper::getInstance($this->adapter);
74
        $user = $userMapper->fetchOne($userProvider->user_id);
75
 
345 www 76
        if (User::EMAIL_VERIFIED_NO == $user->email_verified) {
77
            return new Result(Result::FAILURE_UNCATEGORIZED, null, [
78
                'ERROR_USER_EMAIL_HASNT_BEEN_VARIFIED'
79
            ]);
1 efrain 80
        }
345 www 81
        if (User::BLOCKED_YES == $user->blocked) {
82
            return new Result(Result::FAILURE_UNCATEGORIZED, null, [
83
                'ERROR_USER_IS_BLOCKED'
84
            ]);
1 efrain 85
        }
345 www 86
 
87
        if (User::STATUS_INACTIVE == $user->status) {
88
            return new Result(Result::FAILURE_UNCATEGORIZED, null, [
89
                'ERROR_USER_IS_INACTIVE'
90
            ]);
1 efrain 91
        }
345 www 92
 
93
        if (User::REQUEST_ACCESS_PENDING == $user->request_access) {
94
            return new Result(Result::FAILURE_UNCATEGORIZED, null, [
95
                'ERROR_USER_REQUEST_ACCESS_IS_PENDING'
96
            ]);
1 efrain 97
        }
98
 
345 www 99
        if (User::REQUEST_ACCESS_REJECTED == $user->request_access) {
100
            return new Result(Result::FAILURE_UNCATEGORIZED, null, [
101
                'ERROR_USER_REQUEST_ACCESS_IS_REJECTED'
102
            ]);
103
        }
104
 
1 efrain 105
        $user->login_attempt = 0;
106
        $userMapper->update($user);
345 www 107
 
1 efrain 108
        $data = [
109
            'user_id' => $user->id,
345 www 110
            'device_id' => ''
1 efrain 111
        ];
345 www 112
 
1 efrain 113
        return new Result(Result::SUCCESS, $data, []);
114
    }
115
}