Proyectos de Subversion LeadersLinked - Backend

Rev

Rev 15342 | Ir a la última revisión | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |

<?php

declare(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;


class CurrentUserPlugin extends AbstractPlugin
{
    
    /**
     * 
     * @var AuthenticationService
     */
    protected $auth;
    
    /**
     *
     * @var boolean
     */
    protected $hasIdentity;
    
    
    /**
     *
     * @return \LeadersLinked\Model\User
     */
    protected $user;
    
    
    /***
     * 
     * @var \LeadersLinked\Model\Company
     */
    protected $company;
    
    
    /**
     *
     * @param AdapterInterface $adapter
     */
    public function __construct($adapter) 
    {
        $this->auth = new \Laminas\Authentication\AuthenticationService();
        $this->hasIdentity = 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($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 string
     */
    public function getDeviceId()
    {
        return $this->deviceId;
    }

    
    /**
     * 
     * @return int
     */
    public function getUserId()
    {
        if($this->hasIdentity) {
            return $this->user->id;
        } else {
            return 0;
        }
    }
    

    /**
     * @return string
     */
    public function getUserTypeId()
    {
        if($this->hasIdentity) {
           return $this->user->usertype_id;
        } else {
            return UserType::GUEST;
        }
    }
    
    
    /**
     * 
     * @return \LeadersLinked\Model\Company
     */
    public function getCompany()
    {
        return $this->company;    
    }
    
    public function getCompanyId()
    {
        if($this->company) {
            
        } else {
            return 0;
        }
    }
    
    /**
     * 
     * @return boolean
     */
    public function hasIdentity() 
    {
        return $this->user ? true : false;
    }
    
    public function clearIdentity()
    {
        $this->auth->clearIdentity();
    }

   
}