mirror of
				https://gitlab.com/Chill-Projet/chill-bundles.git
				synced 2025-11-04 03:08:25 +00:00 
			
		
		
		
	Compare commits
	
		
			3 Commits
		
	
	
		
			v3.0.0-alp
			...
			issue444_m
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| bb86d04e52 | |||
| 4c704734cd | |||
| 0ffd6a857c | 
@@ -15,19 +15,13 @@ use Chill\ActivityBundle\Security\Authorization\ActivityVoter;
 | 
			
		||||
use Chill\MainBundle\Routing\LocalMenuBuilderInterface;
 | 
			
		||||
use Knp\Menu\MenuItem;
 | 
			
		||||
use Symfony\Component\Security\Core\Authorization\AuthorizationCheckerInterface;
 | 
			
		||||
use Symfony\Component\Translation\TranslatorInterface;
 | 
			
		||||
use Symfony\Contracts\Translation\TranslatorInterface;
 | 
			
		||||
 | 
			
		||||
class PersonMenuBuilder implements LocalMenuBuilderInterface
 | 
			
		||||
{
 | 
			
		||||
    /**
 | 
			
		||||
     * @var AuthorizationCheckerInterface
 | 
			
		||||
     */
 | 
			
		||||
    protected $authorizationChecker;
 | 
			
		||||
    protected AuthorizationCheckerInterface $authorizationChecker;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @var TranslatorInterface
 | 
			
		||||
     */
 | 
			
		||||
    protected $translator;
 | 
			
		||||
    protected TranslatorInterface $translator;
 | 
			
		||||
 | 
			
		||||
    public function __construct(
 | 
			
		||||
        AuthorizationCheckerInterface $authorizationChecker,
 | 
			
		||||
 
 | 
			
		||||
@@ -16,29 +16,17 @@ use Chill\TaskBundle\Templating\UI\CountNotificationTask;
 | 
			
		||||
use Knp\Menu\MenuItem;
 | 
			
		||||
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
 | 
			
		||||
use Symfony\Component\Security\Core\Authorization\AuthorizationCheckerInterface;
 | 
			
		||||
use Symfony\Component\Translation\TranslatorInterface;
 | 
			
		||||
use Symfony\Contracts\Translation\TranslatorInterface;
 | 
			
		||||
 | 
			
		||||
class UserMenuBuilder implements LocalMenuBuilderInterface
 | 
			
		||||
{
 | 
			
		||||
    /**
 | 
			
		||||
     * @var AuthorizationCheckerInterface
 | 
			
		||||
     */
 | 
			
		||||
    public $authorizationChecker;
 | 
			
		||||
    public AuthorizationCheckerInterface $authorizationChecker;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @var CountNotificationTask
 | 
			
		||||
     */
 | 
			
		||||
    public $counter;
 | 
			
		||||
    public CountNotificationTask $counter;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @var TokenStorageInterface
 | 
			
		||||
     */
 | 
			
		||||
    public $tokenStorage;
 | 
			
		||||
    public TokenStorageInterface $tokenStorage;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @var TranslatorInterface
 | 
			
		||||
     */
 | 
			
		||||
    public $translator;
 | 
			
		||||
    public TranslatorInterface $translator;
 | 
			
		||||
 | 
			
		||||
    public function __construct(
 | 
			
		||||
        CountNotificationTask $counter,
 | 
			
		||||
 
 | 
			
		||||
@@ -14,14 +14,18 @@ namespace Chill\CalendarBundle\Menu;
 | 
			
		||||
use Chill\MainBundle\Routing\LocalMenuBuilderInterface;
 | 
			
		||||
use Chill\MainBundle\Security\Authorization\AuthorizationHelper;
 | 
			
		||||
use Chill\PersonBundle\Entity\AccompanyingPeriod;
 | 
			
		||||
use Chill\PersonBundle\Security\Authorization\AccompanyingPeriodVoter;
 | 
			
		||||
use Knp\Menu\MenuItem;
 | 
			
		||||
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
 | 
			
		||||
use Symfony\Component\Security\Core\Security;
 | 
			
		||||
use Symfony\Contracts\Translation\TranslatorInterface;
 | 
			
		||||
 | 
			
		||||
class AccompanyingCourseMenuBuilder implements LocalMenuBuilderInterface
 | 
			
		||||
{
 | 
			
		||||
    protected AuthorizationHelper $authorizationHelper;
 | 
			
		||||
 | 
			
		||||
    protected Security $security;
 | 
			
		||||
 | 
			
		||||
    protected TokenStorageInterface $tokenStorage;
 | 
			
		||||
 | 
			
		||||
    protected TranslatorInterface $translator;
 | 
			
		||||
@@ -29,11 +33,13 @@ class AccompanyingCourseMenuBuilder implements LocalMenuBuilderInterface
 | 
			
		||||
    public function __construct(
 | 
			
		||||
        TokenStorageInterface $tokenStorage,
 | 
			
		||||
        AuthorizationHelper $authorizationHelper,
 | 
			
		||||
        TranslatorInterface $translator
 | 
			
		||||
        TranslatorInterface $translator,
 | 
			
		||||
        Security $security
 | 
			
		||||
    ) {
 | 
			
		||||
        $this->translator = $translator;
 | 
			
		||||
        $this->authorizationHelper = $authorizationHelper;
 | 
			
		||||
        $this->tokenStorage = $tokenStorage;
 | 
			
		||||
        $this->security = $security;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function buildMenu($menuId, MenuItem $menu, array $parameters)
 | 
			
		||||
@@ -41,12 +47,14 @@ class AccompanyingCourseMenuBuilder implements LocalMenuBuilderInterface
 | 
			
		||||
        $period = $parameters['accompanyingCourse'];
 | 
			
		||||
 | 
			
		||||
        if (AccompanyingPeriod::STEP_DRAFT !== $period->getStep()) {
 | 
			
		||||
            $menu->addChild($this->translator->trans('Calendar'), [
 | 
			
		||||
                'route' => 'chill_calendar_calendar_list',
 | 
			
		||||
                'routeParameters' => [
 | 
			
		||||
                    'accompanying_period_id' => $period->getId(),
 | 
			
		||||
                ], ])
 | 
			
		||||
                ->setExtras(['order' => 35]);
 | 
			
		||||
            if ($this->security->isGranted(AccompanyingPeriodVoter::SEE, $period)) {
 | 
			
		||||
                $menu->addChild($this->translator->trans('Calendar'), [
 | 
			
		||||
                    'route' => 'chill_calendar_calendar_list',
 | 
			
		||||
                    'routeParameters' => [
 | 
			
		||||
                        'accompanying_period_id' => $period->getId(),
 | 
			
		||||
                    ], ])
 | 
			
		||||
                    ->setExtras(['order' => 35]);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -15,19 +15,13 @@ use Chill\AMLI\FamilyMembersBundle\Security\Voter\FamilyMemberVoter;
 | 
			
		||||
use Chill\MainBundle\Routing\LocalMenuBuilderInterface;
 | 
			
		||||
use Knp\Menu\MenuItem;
 | 
			
		||||
use Symfony\Component\Security\Core\Authorization\AuthorizationCheckerInterface;
 | 
			
		||||
use Symfony\Component\Translation\TranslatorInterface;
 | 
			
		||||
use Symfony\Contracts\Translation\TranslatorInterface;
 | 
			
		||||
 | 
			
		||||
class UserMenuBuilder implements LocalMenuBuilderInterface
 | 
			
		||||
{
 | 
			
		||||
    /**
 | 
			
		||||
     * @var AuthorizationCheckerInterface
 | 
			
		||||
     */
 | 
			
		||||
    protected $authorizationChecker;
 | 
			
		||||
    protected AuthorizationCheckerInterface $authorizationChecker;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @var TranslatorInterface
 | 
			
		||||
     */
 | 
			
		||||
    protected $translator;
 | 
			
		||||
    protected TranslatorInterface $translator;
 | 
			
		||||
 | 
			
		||||
    public function __construct(
 | 
			
		||||
        AuthorizationCheckerInterface $authorizationChecker,
 | 
			
		||||
 
 | 
			
		||||
@@ -12,11 +12,23 @@ declare(strict_types=1);
 | 
			
		||||
namespace Chill\MainBundle\Routing\MenuBuilder;
 | 
			
		||||
 | 
			
		||||
use Knp\Menu\MenuItem;
 | 
			
		||||
use Symfony\Component\Security\Core\Authorization\AuthorizationCheckerInterface;
 | 
			
		||||
 | 
			
		||||
class LocationMenuBuilder implements \Chill\MainBundle\Routing\LocalMenuBuilderInterface
 | 
			
		||||
{
 | 
			
		||||
    private AuthorizationCheckerInterface $authorizationChecker;
 | 
			
		||||
 | 
			
		||||
    public function __construct(AuthorizationCheckerInterface $authorizationChecker)
 | 
			
		||||
    {
 | 
			
		||||
        $this->authorizationChecker = $authorizationChecker;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function buildMenu($menuId, MenuItem $menu, array $parameters)
 | 
			
		||||
    {
 | 
			
		||||
        if (!$this->authorizationChecker->isGranted('ROLE_ADMIN')) {
 | 
			
		||||
            return;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        $menu->addChild('Location type list', [
 | 
			
		||||
            'route' => 'chill_crud_main_location_type_index',
 | 
			
		||||
        ])->setExtras(['order' => 205]);
 | 
			
		||||
 
 | 
			
		||||
@@ -12,11 +12,23 @@ declare(strict_types=1);
 | 
			
		||||
namespace Chill\MainBundle\Routing\MenuBuilder;
 | 
			
		||||
 | 
			
		||||
use Knp\Menu\MenuItem;
 | 
			
		||||
use Symfony\Component\Security\Core\Authorization\AuthorizationCheckerInterface;
 | 
			
		||||
 | 
			
		||||
class PermissionMenuBuilder implements \Chill\MainBundle\Routing\LocalMenuBuilderInterface
 | 
			
		||||
{
 | 
			
		||||
    private AuthorizationCheckerInterface $authorizationChecker;
 | 
			
		||||
 | 
			
		||||
    public function __construct(AuthorizationCheckerInterface $authorizationChecker)
 | 
			
		||||
    {
 | 
			
		||||
        $this->authorizationChecker = $authorizationChecker;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function buildMenu($menuId, MenuItem $menu, array $parameters)
 | 
			
		||||
    {
 | 
			
		||||
        if (!$this->authorizationChecker->isGranted('ROLE_ADMIN')) {
 | 
			
		||||
            return;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        $menu->addChild('Permissions group list', [
 | 
			
		||||
            'route' => 'admin_permissionsgroup',
 | 
			
		||||
        ])->setExtras([
 | 
			
		||||
 
 | 
			
		||||
@@ -15,22 +15,16 @@ use Chill\MainBundle\Routing\LocalMenuBuilderInterface;
 | 
			
		||||
use Chill\MainBundle\Security\Authorization\ChillExportVoter;
 | 
			
		||||
use Knp\Menu\MenuItem;
 | 
			
		||||
use Symfony\Component\Security\Core\Authorization\AuthorizationCheckerInterface;
 | 
			
		||||
use Symfony\Component\Translation\TranslatorInterface;
 | 
			
		||||
use Symfony\Contracts\Translation\TranslatorInterface;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Class SectionMenuBuilder.
 | 
			
		||||
 */
 | 
			
		||||
class SectionMenuBuilder implements LocalMenuBuilderInterface
 | 
			
		||||
{
 | 
			
		||||
    /**
 | 
			
		||||
     * @var AuthorizationCheckerInterface
 | 
			
		||||
     */
 | 
			
		||||
    protected $authorizationChecker;
 | 
			
		||||
    protected AuthorizationCheckerInterface $authorizationChecker;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @var TranslatorInterface
 | 
			
		||||
     */
 | 
			
		||||
    protected $translator;
 | 
			
		||||
    protected TranslatorInterface $translator;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * SectionMenuBuilder constructor.
 | 
			
		||||
@@ -46,22 +40,24 @@ class SectionMenuBuilder implements LocalMenuBuilderInterface
 | 
			
		||||
     */
 | 
			
		||||
    public function buildMenu($menuId, MenuItem $menu, array $parameters)
 | 
			
		||||
    {
 | 
			
		||||
        $menu->addChild($this->translator->trans('Homepage'), [
 | 
			
		||||
            'route' => 'chill_main_homepage',
 | 
			
		||||
        ])
 | 
			
		||||
            ->setExtras([
 | 
			
		||||
                'icons' => ['home'],
 | 
			
		||||
                'order' => 0,
 | 
			
		||||
            ]);
 | 
			
		||||
        if (!$this->authorizationChecker->isGranted('ROLE_USER')) {
 | 
			
		||||
            $menu->addChild($this->translator->trans('Homepage'), [
 | 
			
		||||
                'route' => 'chill_main_homepage',
 | 
			
		||||
            ])
 | 
			
		||||
                ->setExtras([
 | 
			
		||||
                    'icons' => ['home'],
 | 
			
		||||
                    'order' => 0,
 | 
			
		||||
                ]);
 | 
			
		||||
 | 
			
		||||
        $menu->addChild($this->translator->trans('Global timeline'), [
 | 
			
		||||
            'route' => 'chill_center_timeline',
 | 
			
		||||
        ])
 | 
			
		||||
            ->setExtras(
 | 
			
		||||
                [
 | 
			
		||||
                    'order' => 10,
 | 
			
		||||
                ]
 | 
			
		||||
            );
 | 
			
		||||
            $menu->addChild($this->translator->trans('Global timeline'), [
 | 
			
		||||
                'route' => 'chill_center_timeline',
 | 
			
		||||
            ])
 | 
			
		||||
                ->setExtras(
 | 
			
		||||
                    [
 | 
			
		||||
                        'order' => 10,
 | 
			
		||||
                    ]
 | 
			
		||||
                );
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if ($this->authorizationChecker->isGranted(ChillExportVoter::EXPORT)) {
 | 
			
		||||
            $menu->addChild($this->translator->trans('Export Menu'), [
 | 
			
		||||
 
 | 
			
		||||
@@ -15,11 +15,14 @@ use Chill\MainBundle\Entity\User;
 | 
			
		||||
use Chill\MainBundle\Notification\Counter\NotificationByUserCounter;
 | 
			
		||||
use Chill\MainBundle\Routing\LocalMenuBuilderInterface;
 | 
			
		||||
use Chill\MainBundle\Workflow\Counter\WorkflowByUserCounter;
 | 
			
		||||
use Symfony\Component\Security\Core\Authorization\AuthorizationCheckerInterface;
 | 
			
		||||
use Symfony\Component\Security\Core\Security;
 | 
			
		||||
use Symfony\Contracts\Translation\TranslatorInterface;
 | 
			
		||||
 | 
			
		||||
class UserMenuBuilder implements LocalMenuBuilderInterface
 | 
			
		||||
{
 | 
			
		||||
    private AuthorizationCheckerInterface $authorizationChecker;
 | 
			
		||||
 | 
			
		||||
    private NotificationByUserCounter $notificationByUserCounter;
 | 
			
		||||
 | 
			
		||||
    private Security $security;
 | 
			
		||||
@@ -32,16 +35,22 @@ class UserMenuBuilder implements LocalMenuBuilderInterface
 | 
			
		||||
        NotificationByUserCounter $notificationByUserCounter,
 | 
			
		||||
        WorkflowByUserCounter $workflowByUserCounter,
 | 
			
		||||
        Security $security,
 | 
			
		||||
        TranslatorInterface $translator
 | 
			
		||||
        TranslatorInterface $translator,
 | 
			
		||||
        AuthorizationCheckerInterface $authorizationChecker
 | 
			
		||||
    ) {
 | 
			
		||||
        $this->notificationByUserCounter = $notificationByUserCounter;
 | 
			
		||||
        $this->workflowByUserCounter = $workflowByUserCounter;
 | 
			
		||||
        $this->security = $security;
 | 
			
		||||
        $this->translator = $translator;
 | 
			
		||||
        $this->authorizationChecker = $authorizationChecker;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function buildMenu($menuId, \Knp\Menu\MenuItem $menu, array $parameters)
 | 
			
		||||
    {
 | 
			
		||||
        if (!$this->authorizationChecker->isGranted('ROLE_USER')) {
 | 
			
		||||
            return;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        $user = $this->security->getUser();
 | 
			
		||||
 | 
			
		||||
        if ($user instanceof User) {
 | 
			
		||||
 
 | 
			
		||||
@@ -19,6 +19,7 @@ use Chill\PersonBundle\Entity\Person;
 | 
			
		||||
use Chill\PersonBundle\Form\HouseholdMemberType;
 | 
			
		||||
use Chill\PersonBundle\Household\MembersEditor;
 | 
			
		||||
use Chill\PersonBundle\Repository\AccompanyingPeriodRepository;
 | 
			
		||||
use Chill\PersonBundle\Security\Authorization\HouseholdVoter;
 | 
			
		||||
use Chill\PersonBundle\Security\Authorization\PersonVoter;
 | 
			
		||||
use Symfony\Component\HttpFoundation\Exception\BadRequestException;
 | 
			
		||||
use Symfony\Component\HttpFoundation\Request;
 | 
			
		||||
@@ -26,7 +27,7 @@ use Symfony\Component\HttpFoundation\Response;
 | 
			
		||||
use Symfony\Component\Routing\Annotation\Route;
 | 
			
		||||
use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
 | 
			
		||||
use Symfony\Component\Serializer\Exception;
 | 
			
		||||
use Symfony\Component\Translation\TranslatorInterface;
 | 
			
		||||
use Symfony\Contracts\Translation\TranslatorInterface;
 | 
			
		||||
 | 
			
		||||
use function count;
 | 
			
		||||
 | 
			
		||||
@@ -56,7 +57,7 @@ class HouseholdMemberController extends ApiController
 | 
			
		||||
     */
 | 
			
		||||
    public function editMembership(Request $request, HouseholdMember $member): Response
 | 
			
		||||
    {
 | 
			
		||||
        // TODO ACL
 | 
			
		||||
        $this->denyAccessUnlessGranted(HouseholdVoter::EDIT, $member);
 | 
			
		||||
 | 
			
		||||
        $form = $this->createForm(HouseholdMemberType::class, $member, [
 | 
			
		||||
            'validation_groups' => ['household_memberships'],
 | 
			
		||||
 
 | 
			
		||||
@@ -29,10 +29,7 @@ class AccompanyingCourseMenuBuilder implements LocalMenuBuilderInterface
 | 
			
		||||
 | 
			
		||||
    protected Security $security;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @var TranslatorInterface
 | 
			
		||||
     */
 | 
			
		||||
    protected $translator;
 | 
			
		||||
    protected TranslatorInterface $translator;
 | 
			
		||||
 | 
			
		||||
    public function __construct(TranslatorInterface $translator, Registry $registry, Security $security)
 | 
			
		||||
    {
 | 
			
		||||
@@ -46,12 +43,14 @@ class AccompanyingCourseMenuBuilder implements LocalMenuBuilderInterface
 | 
			
		||||
        /** @var AccompanyingPeriod $period */
 | 
			
		||||
        $period = $parameters['accompanyingCourse'];
 | 
			
		||||
 | 
			
		||||
        $menu->addChild($this->translator->trans('Resume Accompanying Course'), [
 | 
			
		||||
            'route' => 'chill_person_accompanying_course_index',
 | 
			
		||||
            'routeParameters' => [
 | 
			
		||||
                'accompanying_period_id' => $period->getId(),
 | 
			
		||||
            ], ])
 | 
			
		||||
            ->setExtras(['order' => 10]);
 | 
			
		||||
        if ($this->security->isGranted(AccompanyingPeriodVoter::SEE, $period)) {
 | 
			
		||||
            $menu->addChild($this->translator->trans('Resume Accompanying Course'), [
 | 
			
		||||
                'route' => 'chill_person_accompanying_course_index',
 | 
			
		||||
                'routeParameters' => [
 | 
			
		||||
                    'accompanying_period_id' => $period->getId(),
 | 
			
		||||
                ], ])
 | 
			
		||||
                ->setExtras(['order' => 10]);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if ($this->security->isGranted(AccompanyingPeriodVoter::EDIT, $period)) {
 | 
			
		||||
            $menu->addChild($this->translator->trans('Edit Accompanying Course'), [
 | 
			
		||||
@@ -94,22 +93,24 @@ class AccompanyingCourseMenuBuilder implements LocalMenuBuilderInterface
 | 
			
		||||
 | 
			
		||||
        $workflow = $this->registry->get($period, 'accompanying_period_lifecycle');
 | 
			
		||||
 | 
			
		||||
        if (null !== $period->getClosingDate()) {
 | 
			
		||||
            $menu->addChild($this->translator->trans('Re-open accompanying course'), [
 | 
			
		||||
                'route' => 'chill_person_accompanying_course_reopen',
 | 
			
		||||
                'routeParameters' => [
 | 
			
		||||
                    'accompanying_period_id' => $period->getId(),
 | 
			
		||||
                ], ])
 | 
			
		||||
                ->setExtras(['order' => 99998]);
 | 
			
		||||
        }
 | 
			
		||||
        if ($this->security->isGranted(AccompanyingPeriodVoter::EDIT, $period)) {
 | 
			
		||||
            if (null !== $period->getClosingDate()) {
 | 
			
		||||
                $menu->addChild($this->translator->trans('Re-open accompanying course'), [
 | 
			
		||||
                    'route' => 'chill_person_accompanying_course_reopen',
 | 
			
		||||
                    'routeParameters' => [
 | 
			
		||||
                        'accompanying_period_id' => $period->getId(),
 | 
			
		||||
                    ], ])
 | 
			
		||||
                    ->setExtras(['order' => 99998]);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
        if ($workflow->can($period, 'close')) {
 | 
			
		||||
            $menu->addChild($this->translator->trans('Close Accompanying Course'), [
 | 
			
		||||
                'route' => 'chill_person_accompanying_course_close',
 | 
			
		||||
                'routeParameters' => [
 | 
			
		||||
                    'accompanying_period_id' => $period->getId(),
 | 
			
		||||
                ], ])
 | 
			
		||||
                ->setExtras(['order' => 99999]);
 | 
			
		||||
            if ($workflow->can($period, 'close')) {
 | 
			
		||||
                $menu->addChild($this->translator->trans('Close Accompanying Course'), [
 | 
			
		||||
                    'route' => 'chill_person_accompanying_course_close',
 | 
			
		||||
                    'routeParameters' => [
 | 
			
		||||
                        'accompanying_period_id' => $period->getId(),
 | 
			
		||||
                    ], ])
 | 
			
		||||
                    ->setExtras(['order' => 99999]);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -12,7 +12,9 @@ declare(strict_types=1);
 | 
			
		||||
namespace Chill\PersonBundle\Menu;
 | 
			
		||||
 | 
			
		||||
use Chill\MainBundle\Routing\LocalMenuBuilderInterface;
 | 
			
		||||
use Chill\PersonBundle\Security\Authorization\HouseholdVoter;
 | 
			
		||||
use Knp\Menu\MenuItem;
 | 
			
		||||
use Symfony\Component\Security\Core\Security;
 | 
			
		||||
use Symfony\Contracts\Translation\TranslatorInterface;
 | 
			
		||||
 | 
			
		||||
class HouseholdMenuBuilder implements LocalMenuBuilderInterface
 | 
			
		||||
@@ -22,9 +24,12 @@ class HouseholdMenuBuilder implements LocalMenuBuilderInterface
 | 
			
		||||
     */
 | 
			
		||||
    protected $translator;
 | 
			
		||||
 | 
			
		||||
    public function __construct(TranslatorInterface $translator)
 | 
			
		||||
    private $security;
 | 
			
		||||
 | 
			
		||||
    public function __construct(TranslatorInterface $translator, Security $security)
 | 
			
		||||
    {
 | 
			
		||||
        $this->translator = $translator;
 | 
			
		||||
        $this->security = $security;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function buildMenu($menuId, MenuItem $menu, array $parameters): void
 | 
			
		||||
@@ -32,40 +37,46 @@ class HouseholdMenuBuilder implements LocalMenuBuilderInterface
 | 
			
		||||
        /** @var \Chill\PersonBundle\Entity\Household\Household $household */
 | 
			
		||||
        $household = $parameters['household'];
 | 
			
		||||
 | 
			
		||||
        $menu->addChild($this->translator->trans('household.Household summary'), [
 | 
			
		||||
            'route' => 'chill_person_household_summary',
 | 
			
		||||
            'routeParameters' => [
 | 
			
		||||
                'household_id' => $household->getId(),
 | 
			
		||||
            ], ])
 | 
			
		||||
            ->setExtras(['order' => 10]);
 | 
			
		||||
        if ($this->security->isGranted(HouseholdVoter::SEE, $household)) {
 | 
			
		||||
            $menu->addChild($this->translator->trans('household.Household summary'), [
 | 
			
		||||
                'route' => 'chill_person_household_summary',
 | 
			
		||||
                'routeParameters' => [
 | 
			
		||||
                    'household_id' => $household->getId(),
 | 
			
		||||
                ], ])
 | 
			
		||||
                ->setExtras(['order' => 10]);
 | 
			
		||||
 | 
			
		||||
        $menu->addChild($this->translator->trans('household.Relationship'), [
 | 
			
		||||
            'route' => 'chill_person_household_relationship',
 | 
			
		||||
            'routeParameters' => [
 | 
			
		||||
                'household_id' => $household->getId(),
 | 
			
		||||
            ], ])
 | 
			
		||||
            ->setExtras(['order' => 15]);
 | 
			
		||||
            $menu->addChild($this->translator->trans('household.Relationship'), [
 | 
			
		||||
                'route' => 'chill_person_household_relationship',
 | 
			
		||||
                'routeParameters' => [
 | 
			
		||||
                    'household_id' => $household->getId(),
 | 
			
		||||
                ], ])
 | 
			
		||||
                ->setExtras(['order' => 15]);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        $menu->addChild($this->translator->trans('household_composition.Compositions'), [
 | 
			
		||||
            'route' => 'chill_person_household_composition_index',
 | 
			
		||||
            'routeParameters' => [
 | 
			
		||||
                'id' => $household->getId(),
 | 
			
		||||
            ], ])
 | 
			
		||||
            ->setExtras(['order' => 17]);
 | 
			
		||||
        if ($this->security->isGranted(HouseholdVoter::EDIT, $household)) {
 | 
			
		||||
            $menu->addChild($this->translator->trans('household_composition.Compositions'), [
 | 
			
		||||
                'route' => 'chill_person_household_composition_index',
 | 
			
		||||
                'routeParameters' => [
 | 
			
		||||
                    'id' => $household->getId(),
 | 
			
		||||
                ], ])
 | 
			
		||||
                ->setExtras(['order' => 17]);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        $menu->addChild($this->translator->trans('household.Accompanying period'), [
 | 
			
		||||
            'route' => 'chill_person_household_accompanying_period',
 | 
			
		||||
            'routeParameters' => [
 | 
			
		||||
                'household_id' => $household->getId(),
 | 
			
		||||
            ], ])
 | 
			
		||||
            ->setExtras(['order' => 20]);
 | 
			
		||||
        if ($this->security->isGranted(HouseholdVoter::SEE, $household)) {
 | 
			
		||||
            $menu->addChild($this->translator->trans('household.Accompanying period'), [
 | 
			
		||||
                'route' => 'chill_person_household_accompanying_period',
 | 
			
		||||
                'routeParameters' => [
 | 
			
		||||
                    'household_id' => $household->getId(),
 | 
			
		||||
                ], ])
 | 
			
		||||
                ->setExtras(['order' => 20]);
 | 
			
		||||
 | 
			
		||||
        $menu->addChild($this->translator->trans('household.Addresses'), [
 | 
			
		||||
            'route' => 'chill_person_household_addresses',
 | 
			
		||||
            'routeParameters' => [
 | 
			
		||||
                'household_id' => $household->getId(),
 | 
			
		||||
            ], ])
 | 
			
		||||
            ->setExtras(['order' => 30]);
 | 
			
		||||
            $menu->addChild($this->translator->trans('household.Addresses'), [
 | 
			
		||||
                'route' => 'chill_person_household_addresses',
 | 
			
		||||
                'routeParameters' => [
 | 
			
		||||
                    'household_id' => $household->getId(),
 | 
			
		||||
                ], ])
 | 
			
		||||
                ->setExtras(['order' => 30]);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public static function getMenuIds(): array
 | 
			
		||||
 
 | 
			
		||||
@@ -13,6 +13,7 @@ namespace Chill\PersonBundle\Menu;
 | 
			
		||||
 | 
			
		||||
use Chill\MainBundle\Routing\LocalMenuBuilderInterface;
 | 
			
		||||
use Chill\PersonBundle\Security\Authorization\AccompanyingPeriodVoter;
 | 
			
		||||
use Chill\PersonBundle\Security\Authorization\PersonVoter;
 | 
			
		||||
use Knp\Menu\MenuItem;
 | 
			
		||||
use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
 | 
			
		||||
use Symfony\Component\Security\Core\Security;
 | 
			
		||||
@@ -33,10 +34,7 @@ class PersonMenuBuilder implements LocalMenuBuilderInterface
 | 
			
		||||
     */
 | 
			
		||||
    protected $showAccompanyingPeriod;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @var TranslatorInterface
 | 
			
		||||
     */
 | 
			
		||||
    protected $translator;
 | 
			
		||||
    protected TranslatorInterface $translator;
 | 
			
		||||
 | 
			
		||||
    private Security $security;
 | 
			
		||||
 | 
			
		||||
@@ -52,45 +50,46 @@ class PersonMenuBuilder implements LocalMenuBuilderInterface
 | 
			
		||||
 | 
			
		||||
    public function buildMenu($menuId, MenuItem $menu, array $parameters)
 | 
			
		||||
    {
 | 
			
		||||
        $menu->addChild($this->translator->trans('Person details'), [
 | 
			
		||||
            'route' => 'chill_person_view',
 | 
			
		||||
            'routeParameters' => [
 | 
			
		||||
                'person_id' => $parameters['person']->getId(),
 | 
			
		||||
            ],
 | 
			
		||||
        ])
 | 
			
		||||
            ->setExtras([
 | 
			
		||||
                'order' => 50,
 | 
			
		||||
            ]);
 | 
			
		||||
        if ($this->security->isGranted(PersonVoter::SEE, $parameters['person'])) {
 | 
			
		||||
            $menu->addChild($this->translator->trans('Person details'), [
 | 
			
		||||
                'route' => 'chill_person_view',
 | 
			
		||||
                'routeParameters' => [
 | 
			
		||||
                    'person_id' => $parameters['person']->getId(),
 | 
			
		||||
                ],
 | 
			
		||||
            ])
 | 
			
		||||
                ->setExtras([
 | 
			
		||||
                    'order' => 50,
 | 
			
		||||
                ]);
 | 
			
		||||
            $menu->addChild($this->translator->trans('Residential addresses'), [
 | 
			
		||||
                'route' => 'chill_person_residential_address_list',
 | 
			
		||||
                'routeParameters' => [
 | 
			
		||||
                    'id' => $parameters['person']->getId(),
 | 
			
		||||
                ],
 | 
			
		||||
            ])
 | 
			
		||||
                ->setExtras([
 | 
			
		||||
                    'order' => 60,
 | 
			
		||||
                ]);
 | 
			
		||||
 | 
			
		||||
        $menu->addChild($this->translator->trans('Residential addresses'), [
 | 
			
		||||
            'route' => 'chill_person_residential_address_list',
 | 
			
		||||
            'routeParameters' => [
 | 
			
		||||
                'id' => $parameters['person']->getId(),
 | 
			
		||||
            ],
 | 
			
		||||
        ])
 | 
			
		||||
            ->setExtras([
 | 
			
		||||
                'order' => 60,
 | 
			
		||||
            ]);
 | 
			
		||||
            $menu->addChild($this->translator->trans('household.person history'), [
 | 
			
		||||
                'route' => 'chill_person_household_person_history',
 | 
			
		||||
                'routeParameters' => [
 | 
			
		||||
                    'person_id' => $parameters['person']->getId(),
 | 
			
		||||
                ],
 | 
			
		||||
            ])
 | 
			
		||||
                ->setExtras([
 | 
			
		||||
                    'order' => 99999,
 | 
			
		||||
                ]);
 | 
			
		||||
 | 
			
		||||
        $menu->addChild($this->translator->trans('household.person history'), [
 | 
			
		||||
            'route' => 'chill_person_household_person_history',
 | 
			
		||||
            'routeParameters' => [
 | 
			
		||||
                'person_id' => $parameters['person']->getId(),
 | 
			
		||||
            ],
 | 
			
		||||
        ])
 | 
			
		||||
            ->setExtras([
 | 
			
		||||
                'order' => 99999,
 | 
			
		||||
            ]);
 | 
			
		||||
 | 
			
		||||
        $menu->addChild($this->translator->trans('Person duplicate'), [
 | 
			
		||||
            'route' => 'chill_person_duplicate_view',
 | 
			
		||||
            'routeParameters' => [
 | 
			
		||||
                'person_id' => $parameters['person']->getId(),
 | 
			
		||||
            ],
 | 
			
		||||
        ])
 | 
			
		||||
            ->setExtras([
 | 
			
		||||
                'order' => 99999,
 | 
			
		||||
            ]);
 | 
			
		||||
            $menu->addChild($this->translator->trans('Person duplicate'), [
 | 
			
		||||
                'route' => 'chill_person_duplicate_view',
 | 
			
		||||
                'routeParameters' => [
 | 
			
		||||
                    'person_id' => $parameters['person']->getId(),
 | 
			
		||||
                ],
 | 
			
		||||
            ])
 | 
			
		||||
                ->setExtras([
 | 
			
		||||
                    'order' => 99999,
 | 
			
		||||
                ]);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if (
 | 
			
		||||
            'visible' === $this->showAccompanyingPeriod
 | 
			
		||||
@@ -107,15 +106,17 @@ class PersonMenuBuilder implements LocalMenuBuilderInterface
 | 
			
		||||
                ]);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        $menu->addChild($this->translator->trans('person_resources_menu'), [
 | 
			
		||||
            'route' => 'chill_person_resource_list',
 | 
			
		||||
            'routeParameters' => [
 | 
			
		||||
                'person_id' => $parameters['person']->getId(),
 | 
			
		||||
            ],
 | 
			
		||||
        ])
 | 
			
		||||
            ->setExtras([
 | 
			
		||||
                'order' => 99999,
 | 
			
		||||
            ]);
 | 
			
		||||
        if ($this->security->isGranted(PersonVoter::SEE, $parameters['person'])) {
 | 
			
		||||
            $menu->addChild($this->translator->trans('person_resources_menu'), [
 | 
			
		||||
                'route' => 'chill_person_resource_list',
 | 
			
		||||
                'routeParameters' => [
 | 
			
		||||
                    'person_id' => $parameters['person']->getId(),
 | 
			
		||||
                ],
 | 
			
		||||
            ])
 | 
			
		||||
                ->setExtras([
 | 
			
		||||
                    'order' => 99999,
 | 
			
		||||
                ]);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public static function getMenuIds(): array
 | 
			
		||||
 
 | 
			
		||||
@@ -12,6 +12,7 @@ declare(strict_types=1);
 | 
			
		||||
namespace Chill\PersonBundle\Menu;
 | 
			
		||||
 | 
			
		||||
use Chill\MainBundle\Routing\LocalMenuBuilderInterface;
 | 
			
		||||
use Chill\PersonBundle\Security\Authorization\AccompanyingPeriodVoter;
 | 
			
		||||
use Chill\PersonBundle\Security\Authorization\PersonVoter;
 | 
			
		||||
use Knp\Menu\MenuItem;
 | 
			
		||||
use Symfony\Component\Security\Core\Authorization\AuthorizationCheckerInterface;
 | 
			
		||||
@@ -56,13 +57,15 @@ class SectionMenuBuilder implements LocalMenuBuilderInterface
 | 
			
		||||
                ]);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        $menu->addChild($this->translator->trans('Create an accompanying course'), [
 | 
			
		||||
            'route' => 'chill_person_accompanying_course_new',
 | 
			
		||||
        ])
 | 
			
		||||
            ->setExtras([
 | 
			
		||||
                'order' => 11,
 | 
			
		||||
                'icons' => ['plus'],
 | 
			
		||||
            ]);
 | 
			
		||||
        if ($this->authorizationChecker->isGranted(AccompanyingPeriodVoter::CREATE)) {
 | 
			
		||||
            $menu->addChild($this->translator->trans('Create an accompanying course'), [
 | 
			
		||||
                'route' => 'chill_person_accompanying_course_new',
 | 
			
		||||
            ])
 | 
			
		||||
                ->setExtras([
 | 
			
		||||
                    'order' => 11,
 | 
			
		||||
                    'icons' => ['plus'],
 | 
			
		||||
                ]);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public static function getMenuIds(): array
 | 
			
		||||
 
 | 
			
		||||
@@ -16,19 +16,13 @@ use Chill\TaskBundle\Security\Authorization\TaskVoter;
 | 
			
		||||
use Knp\Menu\MenuItem;
 | 
			
		||||
use LogicException;
 | 
			
		||||
use Symfony\Component\Security\Core\Authorization\AuthorizationCheckerInterface;
 | 
			
		||||
use Symfony\Component\Translation\TranslatorInterface;
 | 
			
		||||
use Symfony\Contracts\Translation\TranslatorInterface;
 | 
			
		||||
 | 
			
		||||
class MenuBuilder implements LocalMenuBuilderInterface
 | 
			
		||||
{
 | 
			
		||||
    /**
 | 
			
		||||
     * @var AuthorizationCheckerInterface
 | 
			
		||||
     */
 | 
			
		||||
    protected $authorizationChecker;
 | 
			
		||||
    protected AuthorizationCheckerInterface $authorizationChecker;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @var TranslatorInterface
 | 
			
		||||
     */
 | 
			
		||||
    protected $translator;
 | 
			
		||||
    protected TranslatorInterface $translator;
 | 
			
		||||
 | 
			
		||||
    public function __construct(
 | 
			
		||||
        AuthorizationCheckerInterface $authorizationChecker,
 | 
			
		||||
 
 | 
			
		||||
@@ -15,19 +15,13 @@ use Chill\MainBundle\Routing\LocalMenuBuilderInterface;
 | 
			
		||||
use Chill\TaskBundle\Security\Authorization\TaskVoter;
 | 
			
		||||
use Knp\Menu\MenuItem;
 | 
			
		||||
use Symfony\Component\Security\Core\Authorization\AuthorizationCheckerInterface;
 | 
			
		||||
use Symfony\Component\Translation\TranslatorInterface;
 | 
			
		||||
use Symfony\Contracts\Translation\TranslatorInterface;
 | 
			
		||||
 | 
			
		||||
class SectionMenuBuilder implements LocalMenuBuilderInterface
 | 
			
		||||
{
 | 
			
		||||
    /**
 | 
			
		||||
     * @var AuthorizationCheckerInterface
 | 
			
		||||
     */
 | 
			
		||||
    public $authorizationChecker;
 | 
			
		||||
    public AuthorizationCheckerInterface $authorizationChecker;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @var TranslatorInterface
 | 
			
		||||
     */
 | 
			
		||||
    public $translator;
 | 
			
		||||
    public TranslatorInterface $translator;
 | 
			
		||||
 | 
			
		||||
    public function __construct(
 | 
			
		||||
        AuthorizationCheckerInterface $authorizationChecker,
 | 
			
		||||
 
 | 
			
		||||
@@ -17,29 +17,17 @@ use Chill\TaskBundle\Templating\UI\CountNotificationTask;
 | 
			
		||||
use Knp\Menu\MenuItem;
 | 
			
		||||
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
 | 
			
		||||
use Symfony\Component\Security\Core\Authorization\AuthorizationCheckerInterface;
 | 
			
		||||
use Symfony\Component\Translation\TranslatorInterface;
 | 
			
		||||
use Symfony\Contracts\Translation\TranslatorInterface;
 | 
			
		||||
 | 
			
		||||
class UserMenuBuilder implements LocalMenuBuilderInterface
 | 
			
		||||
{
 | 
			
		||||
    /**
 | 
			
		||||
     * @var AuthorizationCheckerInterface
 | 
			
		||||
     */
 | 
			
		||||
    public $authorizationChecker;
 | 
			
		||||
    public AuthorizationCheckerInterface $authorizationChecker;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @var CountNotificationTask
 | 
			
		||||
     */
 | 
			
		||||
    public $counter;
 | 
			
		||||
    public CountNotificationTask $counter;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @var TokenStorageInterface
 | 
			
		||||
     */
 | 
			
		||||
    public $tokenStorage;
 | 
			
		||||
    public TokenStorageInterface $tokenStorage;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @var TranslatorInterface
 | 
			
		||||
     */
 | 
			
		||||
    public $translator;
 | 
			
		||||
    public TranslatorInterface $translator;
 | 
			
		||||
 | 
			
		||||
    public function __construct(
 | 
			
		||||
        CountNotificationTask $counter,
 | 
			
		||||
 
 | 
			
		||||
@@ -15,22 +15,16 @@ use Chill\MainBundle\Routing\LocalMenuBuilderInterface;
 | 
			
		||||
use Chill\ThirdPartyBundle\Security\Voter\ThirdPartyVoter;
 | 
			
		||||
use Knp\Menu\MenuItem;
 | 
			
		||||
use Symfony\Component\Security\Core\Authorization\AuthorizationCheckerInterface;
 | 
			
		||||
use Symfony\Component\Translation\TranslatorInterface;
 | 
			
		||||
use Symfony\Contracts\Translation\TranslatorInterface;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Add an entry in section to go to third party index page.
 | 
			
		||||
 */
 | 
			
		||||
class MenuBuilder implements LocalMenuBuilderInterface
 | 
			
		||||
{
 | 
			
		||||
    /**
 | 
			
		||||
     * @var AuthorizationCheckerInterface
 | 
			
		||||
     */
 | 
			
		||||
    protected $authorizationChecker;
 | 
			
		||||
    protected AuthorizationCheckerInterface $authorizationChecker;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @var TranslatorInterface
 | 
			
		||||
     */
 | 
			
		||||
    protected $translator;
 | 
			
		||||
    protected TranslatorInterface $translator;
 | 
			
		||||
 | 
			
		||||
    public function __construct(
 | 
			
		||||
        AuthorizationCheckerInterface $authorizationChecker,
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user