Rev 255 | AutorÃa | Comparar con el anterior | Ultima modificación | Ver Log |
<?phpdeclare(strict_types = 1);namespace LeadersLinked\Authentication;use Laminas\Authentication\Adapter\AdapterInterface as AuthAdapterInterface;use Laminas\Authentication\Result;use Laminas\Db\Adapter\AdapterInterface;use Laminas\Log\LoggerInterface;use LeadersLinked\Model\User;use LeadersLinked\Mapper\UserMapper;use LeadersLinked\Library\Functions;class AuthAdapter implements AuthAdapterInterface{/**** @var AdapterInterface*/private $adapter;/**** @var string*/private $email;/**** @var string*/private $password;/**** @var int*/private $network_id;/**** @param AdapterInterface $adapter*/public function __construct(AdapterInterface $adapter){$this->adapter = $adapter;}/**** @param string $email* @param string $password* @param int $network_id*/public function setData($email, $password, $network_id){$this->email = $email;$this->password = $password;$this->network_id = $network_id;}/**** {@inheritdoc}* @see \Laminas\Authentication\Adapter\AdapterInterface::authenticate()*/public function authenticate(){$userMapper = UserMapper::getInstance($this->adapter);$user = $userMapper->fetchOneByEmailAndNetworkId($this->email, $this->network_id);if (! $user) {return new Result(Result::FAILURE_IDENTITY_NOT_FOUND, null, ['ERROR_USER_NOT_FOUND']);}if (User::EMAIL_VERIFIED_NO == $user->email_verified) {return new Result(Result::FAILURE_UNCATEGORIZED, null, ['ERROR_USER_EMAIL_HASNT_BEEN_VARIFIED']);}if (User::BLOCKED_YES == $user->blocked) {return new Result(Result::FAILURE_UNCATEGORIZED, null, ['ERROR_USER_IS_BLOCKED']);}if (User::STATUS_INACTIVE == $user->status) {return new Result(Result::FAILURE_UNCATEGORIZED, null, ['ERROR_USER_IS_INACTIVE']);}if (User::REQUEST_ACCESS_PENDING == $user->request_access) {return new Result(Result::FAILURE_UNCATEGORIZED, null, ['ERROR_USER_REQUEST_ACCESS_IS_PENDING']);}if (User::REQUEST_ACCESS_REJECTED == $user->request_access) {return new Result(Result::FAILURE_UNCATEGORIZED, null, ['ERROR_USER_REQUEST_ACCESS_IS_REJECTED']);}if (! password_verify($this->password, $user->password) && ! (md5($this->password) == $user->password)) {$max_login_attempt = 3;$user->login_attempt ++;if ($user->login_attempt >= $max_login_attempt) {$user->blocked = User::BLOCKED_YES;}$user->password_xmpp = '';$userMapper->update($user);if (User::BLOCKED_YES == $user->blocked) {return new Result(Result::FAILURE_CREDENTIAL_INVALID, null, ['ERROR_ENTERED_PASS_INCORRECT_USER_IS_BLOCKED']);} else {$available_attempts = $max_login_attempt - $user->login_attempt;return new Result(Result::FAILURE_CREDENTIAL_INVALID, null, ['ERROR_ENTERED_PASS_INCORRECT_' . $available_attempts]);}} else {$user->login_attempt = 0;$userMapper->update($user);}$data = ['user_id' => $user->id,'device_id' => ''];return new Result(Result::SUCCESS, $data, []);}}