Spaces:
No application file
No application file
declare(strict_types=1); | |
namespace Mautic\CoreBundle\Twig\Extension; | |
use Mautic\CoreBundle\Twig\Helper\SecurityHelper; | |
use Mautic\UserBundle\Entity\User; | |
use Twig\Extension\AbstractExtension; | |
use Twig\TwigFunction; | |
class SecurityExtension extends AbstractExtension | |
{ | |
public function __construct( | |
private SecurityHelper $securityHelper | |
) { | |
} | |
public function getFunctions() | |
{ | |
return [ | |
new TwigFunction('securityGetAuthenticationContext', [$this, 'getContext']), | |
new TwigFunction('securityGetCsrfToken', [$this, 'getCsrfToken']), | |
new TwigFunction('securityHasEntityAccess', [$this, 'hasEntityAccess']), | |
new TwigFunction('securityIsGranted', [$this, 'isGranted']), | |
]; | |
} | |
public function getContext(): string | |
{ | |
return $this->securityHelper->getAuthenticationContent(); | |
} | |
public function getCsrfToken(string $intention): string | |
{ | |
return $this->securityHelper->getCsrfToken($intention); | |
} | |
/** | |
* Helper function to check if the logged in user has access to an entity. | |
* | |
* @param string|bool $ownPermission | |
* @param string|bool $otherPermission | |
* @param User|int $ownerId | |
*/ | |
public function hasEntityAccess($ownPermission, $otherPermission, $ownerId): bool | |
{ | |
return $this->securityHelper->hasEntityAccess($ownPermission, $otherPermission, $ownerId); | |
} | |
/** | |
* @return mixed | |
*/ | |
public function isGranted(string $permission) | |
{ | |
return $this->securityHelper->isGranted($permission); | |
} | |
} | |