Proyectos de Subversion LeadersLinked - Backend

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 LeadersLinked\Model\User;
11
use LeadersLinked\Mapper\UserMapper;
12
 
13
class AuthEmailAdapter implements AuthAdapterInterface
14
{
15
    /**
16
     *
17
     * @var AdapterInterface
18
     */
19
    private $adapter;
20
 
21
    /**
22
     *
23
     * @var string
24
     */
25
    private $email;
26
 
27
 
28
    /**
29
     *
30
     * @param AdapterInterface $adapter
31
     */
32
    public function __construct(AdapterInterface $adapter)
33
    {
34
        $this->adapter = $adapter;
35
    }
36
 
37
    /**
38
     *
39
     * @param string $email
40
     */
41
    public function setData($email)
42
    {
43
        $this->email = $email;
44
    }
45
 
46
    /**
47
     *
48
     * {@inheritDoc}
49
     * @see \Laminas\Authentication\Adapter\AdapterInterface::authenticate()
50
     */
51
    public function authenticate()
52
    {
53
 
54
        $userMapper = UserMapper::getInstance($this->adapter);
55
        $user = $userMapper->fetchOneByEmail($this->email);
56
 
57
 
58
        if(User::EMAIL_VERIFIED_NO == $user->email_verified) {
59
            return new Result(Result::FAILURE_UNCATEGORIZED, null, ['ERROR_USER_EMAIL_HASNT_BEEN_VARIFIED']);
60
        }
61
        if(User::BLOCKED_YES == $user->blocked) {
62
            return new Result(Result::FAILURE_UNCATEGORIZED, null, ['ERROR_USER_IS_BLOCKED']);
63
        }
64
 
65
        if(User::STATUS_INACTIVE == $user->status) {
66
            return new Result(Result::FAILURE_UNCATEGORIZED, null, ['ERROR_USER_IS_INACTIVE']);
67
        }
68
 
69
        $user->login_attempt = 0;
70
        $userMapper->update($user);
71
 
72
        $data = [
73
            'user_id' => $user->id,
74
            'company_id' =>  0,
75
        ];
76
 
77
        return new Result(Result::SUCCESS, $data, []);
78
    }
79
}