diff --git a/src/Bundle/ChillActivityBundle/DependencyInjection/ChillActivityExtension.php b/src/Bundle/ChillActivityBundle/DependencyInjection/ChillActivityExtension.php index a7d0ebf25..1c3718ee3 100644 --- a/src/Bundle/ChillActivityBundle/DependencyInjection/ChillActivityExtension.php +++ b/src/Bundle/ChillActivityBundle/DependencyInjection/ChillActivityExtension.php @@ -89,8 +89,12 @@ class ChillActivityExtension extends Extension implements PrependExtensionInterf ActivityVoter::CREATE_ACCOMPANYING_COURSE => array(ActivityVoter::SEE_DETAILS), ActivityVoter::DELETE => array(ActivityVoter::SEE_DETAILS), ActivityVoter::SEE_DETAILS => array(ActivityVoter::SEE), - ActivityVoter::FULL => [ActivityVoter::CREATE, ActivityVoter::DELETE, - ActivityVoter::UPDATE], + ActivityVoter::FULL => [ + ActivityVoter::CREATE_PERSON, + ActivityVoter::CREATE_ACCOMPANYING_COURSE, + ActivityVoter::DELETE, + ActivityVoter::UPDATE + ], ) )); } diff --git a/src/Bundle/ChillActivityBundle/Resources/views/Activity/listAccompanyingCourse.html.twig b/src/Bundle/ChillActivityBundle/Resources/views/Activity/listAccompanyingCourse.html.twig index 42bc25026..c5de72308 100644 --- a/src/Bundle/ChillActivityBundle/Resources/views/Activity/listAccompanyingCourse.html.twig +++ b/src/Bundle/ChillActivityBundle/Resources/views/Activity/listAccompanyingCourse.html.twig @@ -24,7 +24,7 @@ diff --git a/src/Bundle/ChillActivityBundle/Security/Authorization/ActivityVoter.php b/src/Bundle/ChillActivityBundle/Security/Authorization/ActivityVoter.php index 6c81baab4..2273b912c 100644 --- a/src/Bundle/ChillActivityBundle/Security/Authorization/ActivityVoter.php +++ b/src/Bundle/ChillActivityBundle/Security/Authorization/ActivityVoter.php @@ -134,14 +134,22 @@ class ActivityVoter extends AbstractChillVoter implements ProvideRoleHierarchyIn } else { throw new \RuntimeException("could not determine context of activity"); } - } - - if ($subject instanceof AccompanyingPeriod) { + } elseif ($subject instanceof AccompanyingPeriod) { if (AccompanyingPeriod::STEP_CLOSED === $subject->getStep()) { if (\in_array($attribute, [self::UPDATE, self::CREATE, self::DELETE])) { return false; } } + + // transform the attribute + if (self::CREATE === $attribute) { + $attribute = self::CREATE_ACCOMPANYING_COURSE; + } + } elseif ($subject instanceof Person) { + // transform the attribute + if (self::CREATE === $attribute) { + $attribute = self::CREATE_PERSON; + } } return $this->voterHelper->voteOnAttribute($attribute, $subject, $token);