WEBD-325-45/week-03/project/libraries/src/Application/IdentityAwareTrait.php

92 lines
1.7 KiB
PHP

<?php
/**
* Joomla! Content Management System
*
* @copyright (C) 2005 Open Source Matters, Inc. <https://www.joomla.org>
* @license GNU General Public License version 2 or later; see LICENSE
*/
namespace Octoleo\CMS\Application;
use Octoleo\CMS\User\User;
use Octoleo\CMS\User\UserFactoryInterface;
/**
* Trait for application classes which are identity (user) aware
*
* @since 1.0.0
*/
trait IdentityAwareTrait
{
/**
* The application identity object.
*
* @var User
* @since 1.0.0
*/
protected $identity;
/**
* UserFactoryInterface
*
* @var UserFactoryInterface
* @since 1.0.0
*/
private $userFactory;
/**
* Get the application identity.
*
* @return User
*
* @since 1.0.0
*/
public function getIdentity(): User
{
return $this->identity;
}
/**
* Allows the application to load a custom or default identity.
*
* @param User $identity An optional identity object. If omitted, a null user object is created.
*
* @return IdentityAwareInterface
*
* @since 1.0.0
*/
public function loadIdentity(User $identity = null): IdentityAwareInterface
{
$this->identity = $identity ?: $this->userFactory->loadUserById(0);
return $this;
}
/**
* Set the user factory to use.
*
* @param UserFactoryInterface $userFactory The user factory to use
*
* @return void
*
* @since 1.0.0
*/
public function setUserFactory(UserFactoryInterface $userFactory)
{
$this->userFactory = $userFactory;
}
/**
* Get the user factory to use.
*
* @return UserFactoryInterface
*
* @since 1.0.0
*/
public function getUserFactory(): UserFactoryInterface
{
return $this->userFactory;
}
}