Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

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

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