Rev 17002 | AutorÃa | Comparar con el anterior | Ultima modificación | Ver Log |
<?phpdeclare(strict_types=1);namespace LeadersLinked\Plugin;use Laminas\Mvc\Controller\Plugin\AbstractPlugin;use Laminas\Db\Adapter\AdapterInterface;use Laminas\Authentication\AuthenticationService;use LeadersLinked\Model\Device;use LeadersLinked\Mapper\DeviceMapper;use LeadersLinked\Model\UserType;use LeadersLinked\Mapper\CompanyMapper;use LeadersLinked\Library\Storage;class CurrentUserPlugin extends AbstractPlugin{/**** @var \LeadersLinked\Plugin\CurrentUserPlugin*/private static $_instance;/**** @var AuthenticationService*/private $auth;/**** @var boolean*/private $hasIdentity;/**** @var boolean*/private $hasImpersonate;/**** @return \LeadersLinked\Model\User*/private $user;/**** @return \LeadersLinked\Model\User*/private $impersonateUser;/***** @var \LeadersLinked\Model\Company*/private $company;/**** @var array*/private $config;/**** @var \LeadersLinked\Plugin\CurrentUserPlugin*/private $adapter;/**** @param array $config* @param AdapterInterface $adapter* @return \LeadersLinked\Plugin\CurrentUserPlugin*/public static function getInstance($config, $adapter){if(self::$_instance == null) {self::$_instance = new CurrentUserPlugin($config, $adapter);}return self::$_instance;}/**** @param array $config* @param AdapterInterface $adapter*/private function __construct($config, $adapter){$this->config = $config;$this->adapter = $adapter;$this->auth = new \Laminas\Authentication\AuthenticationService();$this->impersonateUser = null;$this->hasIdentity = false;$this->hasImpersonate = false;if($this->auth->hasIdentity()) {$identity = $this->auth->getIdentity();$userMapper = \LeadersLinked\Mapper\UserMapper::getInstance($adapter);$this->user = $userMapper->fetchOne($identity['user_id']);if($this->user) {$this->hasIdentity = true;if($this->user->impersonate_user_id) {$this->hasImpersonate = true;$this->impersonateUser = $userMapper->fetchOne($this->user->impersonate_user_id);}if($identity['company_id']) {$companyMapper = CompanyMapper::getInstance($adapter);$this->company = $companyMapper->fetchOne($identity['company_id']);}}}}/**** @return \LeadersLinked\Model\User*/public function getUser(){return $this->user;}/**** @return \LeadersLinked\Model\User*/public function getImpersonateUser(){return $this->impersonateUser;}/**** @return int*/public function getUserId(){if($this->hasIdentity) {if($this->hasImpersonate) {return $this->impersonateUser->id;} else {return $this->user->id;}} else {return 0;}}/*** @return string*/public function getUserTypeId(){if($this->hasIdentity) {if($this->hasImpersonate) {return $this->impersonateUser->usertype_id;} else {return $this->user->usertype_id;}} else {return UserType::GUEST;}}/**** @return boolean*/public function hasImpersonate(){return $this->hasImpersonate;}/**** @return boolean*/public function hasIdentity(){return $this->hasIdentity;}/**** @return \LeadersLinked\Model\Company*/public function getCompany(){return $this->company;}public function getCompanyId(){if($this->company) {return $this->company->id;} else {return 0;}}public function clearIdentity(){$this->auth->clearIdentity();}public function getCompanyImage(){if($this->company) {$storage = Storage::getInstance($this->config, $this->adapter);return $storage->getCompanyImage($this->company);}}public function getCompanyCover(){if($this->company) {$storage = Storage::getInstance($this->config, $this->adapter);return $storage->getCompanyCover($this->company);}}public function getUserImage(){if($this->user) {$storage = Storage::getInstance($this->config, $this->adapter);return $storage->getUserImage($this->user);}}}