Created some twig extensions for checking membership using the new authorization manager callbacks

This commit is contained in:
2022-02-10 12:56:18 +00:00
parent 99add37bdd
commit fade1f8441
2 changed files with 88 additions and 1 deletions

View File

@@ -0,0 +1,72 @@
<?php
/*
* AVSDev UF Organisations (https://avsdev.uk)
*
* @link https://git.avsdev.uk/avsdev/sprinkle-organisations
* @license https://git.avsdev.uk/avsdev/sprinkle-organisations/blob/master/LICENSE.md (LGPL-3.0 License)
*/
namespace UserFrosting\Sprinkle\Organisations\Twig;
use Psr\Container\ContainerInterface;
use Twig\Extension\AbstractExtension;
use Twig\Extension\GlobalsInterface;
use Twig\TwigFunction;
use UserFrosting\Support\Repository\Repository as Config;
/**
* Extends Twig functionality for the Organisation sprinkle.
*
* @author Craig Williams (https://avsdev.uk)
*/
class OrganisationsExtension extends AbstractExtension implements GlobalsInterface
{
/**
* @var ContainerInterface
*/
protected $services;
/**
* @var Config
*/
protected $config;
/**
* @param ContainerInterface $services
*/
public function __construct(ContainerInterface $services)
{
$this->services = $services;
$this->config = $services->config;
}
public function getName()
{
return 'avsdev/organisations';
}
public function getFunctions()
{
return [
// Add Twig function for checking permissions during dynamic menu rendering
new TwigFunction('isOrganisationMember', function ($organisation) {
$authorizer = $this->services->authorizer;
$currentUser = $this->services->currentUser;
return $authorizer->runCallback($currentUser, 'is_organisation_member', $currentUser->id, $organisation->id);
}),
new TwigFunction('isOrganisationAdmin', function ($organisation) {
$authorizer = $this->services->authorizer;
$currentUser = $this->services->currentUser;
return $authorizer->runCallback($currentUser, 'is_organisation_admin', $currentUser->id, $organisation->id);
}),
];
}
public function getGlobals()
{
return [];
}
}