fix somes validation and acompanying period voter

This commit is contained in:
2022-05-02 16:22:25 +02:00
parent 8113fddcb2
commit 065b10b877
4 changed files with 54 additions and 31 deletions

View File

@@ -25,6 +25,9 @@ use function in_array;
class AccompanyingPeriodVoter extends AbstractChillVoter implements ProvideRoleHierarchyInterface
{
/**
* all the roles that are linked to an accompanying period
*/
public const ALL = [
self::SEE,
self::SEE_DETAILS,
@@ -34,7 +37,6 @@ class AccompanyingPeriodVoter extends AbstractChillVoter implements ProvideRoleH
self::FULL,
self::TOGGLE_CONFIDENTIAL_ALL,
self::TOGGLE_INTENSITY,
self::REASSIGN_BULK,
self::RE_OPEN_COURSE,
];
@@ -67,6 +69,9 @@ class AccompanyingPeriodVoter extends AbstractChillVoter implements ProvideRoleH
*/
public const RE_OPEN_COURSE = 'CHILL_PERSON_ACCOMPANYING_PERIOD_REOPEN';
/**
* Allow user to bulk reassign the courses
*/
public const REASSIGN_BULK = 'CHILL_PERSON_ACCOMPANYING_COURSE_REASSIGN_BULK';
public const SEE = 'CHILL_PERSON_ACCOMPANYING_PERIOD_SEE';
@@ -101,7 +106,7 @@ class AccompanyingPeriodVoter extends AbstractChillVoter implements ProvideRoleH
$this->security = $security;
$this->voterHelper = $voterHelperFactory
->generate(self::class)
->addCheckFor(null, [self::CREATE])
->addCheckFor(null, [self::CREATE, self::REASSIGN_BULK])
->addCheckFor(AccompanyingPeriod::class, [self::TOGGLE_CONFIDENTIAL, ...self::ALL])
->addCheckFor(Person::class, [self::SEE])
->build();
@@ -109,7 +114,16 @@ class AccompanyingPeriodVoter extends AbstractChillVoter implements ProvideRoleH
public function getRoles(): array
{
return self::ALL;
return [
self::SEE,
self::SEE_DETAILS,
self::CREATE,
self::EDIT,
self::DELETE,
self::FULL,
self::TOGGLE_CONFIDENTIAL_ALL,
self::REASSIGN_BULK,
];
}
public function getRolesWithHierarchy(): array
@@ -119,7 +133,7 @@ class AccompanyingPeriodVoter extends AbstractChillVoter implements ProvideRoleH
public function getRolesWithoutScope(): array
{
return [];
return [self::REASSIGN_BULK];
}
protected function supports($attribute, $subject)
@@ -169,8 +183,11 @@ class AccompanyingPeriodVoter extends AbstractChillVoter implements ProvideRoleH
return true;
}
if ($this->voterHelper->voteOnAttribute(self::TOGGLE_CONFIDENTIAL_ALL, $subject, $token)) {
return true;
}
return false;
// return $this->voterHelper->voteOnAttribute(self::TOGGLE_CONFIDENTIAL_ALL, $subject, $token);
}
if (self::TOGGLE_INTENSITY === $attribute) {
@@ -181,10 +198,6 @@ class AccompanyingPeriodVoter extends AbstractChillVoter implements ProvideRoleH
return false;
}
// if (self::REASSIGN_BULK === $attribute) {
// }
// if confidential, only the referent can see it
if ($subject->isConfidential()) {
return $token->getUser() === $subject->getUser();