From bfbaf4a2fbde66e6dacac30deafe10665a2a231b Mon Sep 17 00:00:00 2001 From: Daniel Subiabre Date: Fri, 21 Feb 2025 12:40:47 +0100 Subject: [PATCH] Allow admins to edit projects --- src/Security/Voter/ProjectVoter.php | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/Security/Voter/ProjectVoter.php b/src/Security/Voter/ProjectVoter.php index ae52a8a..46b1d71 100644 --- a/src/Security/Voter/ProjectVoter.php +++ b/src/Security/Voter/ProjectVoter.php @@ -3,6 +3,7 @@ namespace App\Security\Voter; use App\ApiResource\Project\ProjectApiResource; +use App\Entity\User\User; use Symfony\Component\Security\Core\Authentication\Token\TokenInterface; use Symfony\Component\Security\Core\Authorization\Voter\Voter; @@ -28,11 +29,24 @@ final class ProjectVoter extends Voter switch ($attribute) { case self::EDIT: - return $this->isOwnerOf($subject, $user); + return $this->canEdit($subject, $user); case self::VIEW: return true; } return false; } + + private function canEdit(ProjectApiResource $project, User $user): bool + { + if (!$user instanceof User) { + return false; + } + + if ($user->hasRoles(['ROLE_ADMIN'])) { + return true; + } + + return $this->isOwnerOf($project, $user); + } }