* @copyright Since 2007 PrestaShop SA and Contributors * @license https://opensource.org/licenses/OSL-3.0 Open Software License (OSL 3.0) */ namespace PrestaShop\PrestaShop\Adapter\Employee; use PrestaShop\PrestaShop\Core\Employee\Access\EmployeeFormAccessCheckerInterface; use PrestaShop\PrestaShop\Core\Employee\ContextEmployeeProviderInterface; use PrestaShop\PrestaShop\Core\Employee\EmployeeDataProviderInterface; /** * Class EmployeeFormAccessChecker checks employee's access to the employee form. */ final class EmployeeFormAccessChecker implements EmployeeFormAccessCheckerInterface { /** * @var ContextEmployeeProviderInterface */ private $contextEmployeeProvider; /** * @var EmployeeDataProviderInterface */ private $employeeDataProvider; /** * @param ContextEmployeeProviderInterface $contextEmployeeProvider * @param EmployeeDataProviderInterface $employeeDataProvider */ public function __construct( ContextEmployeeProviderInterface $contextEmployeeProvider, EmployeeDataProviderInterface $employeeDataProvider ) { $this->contextEmployeeProvider = $contextEmployeeProvider; $this->employeeDataProvider = $employeeDataProvider; } /** * {@inheritdoc} */ public function isRestrictedAccess($employeeId) { if (!is_int($employeeId)) { throw new \InvalidArgumentException(sprintf('Employee ID must be an integer, %s given', gettype($employeeId))); } return $employeeId === $this->contextEmployeeProvider->getId(); } /** * {@inheritdoc} */ public function canAccessEditFormFor($employeeId) { // To access super admin edit form you must be a super admin. if ($this->employeeDataProvider->isSuperAdmin($employeeId)) { return $this->contextEmployeeProvider->isSuperAdmin(); } return true; } }