From 4d2f37eec10f4372fae275b4aae5aff6bcd8452e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Fromme?= Date: Mon, 2 Dec 2024 14:27:40 +0100 Subject: [PATCH] feat: allow withdrawal of application unless rejected --- src/Security/Voter/ApplicationVoter.php | 12 +++++++----- templates/teamer/assignment/detail.html.twig | 6 ++++-- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/src/Security/Voter/ApplicationVoter.php b/src/Security/Voter/ApplicationVoter.php index f86cf78..347e87b 100644 --- a/src/Security/Voter/ApplicationVoter.php +++ b/src/Security/Voter/ApplicationVoter.php @@ -54,12 +54,14 @@ class ApplicationVoter extends Voter if ($this->security->isGranted('ROLE_TEAMER') && in_array($attribute, $teamerAttributes)) { $teamer = $user->getTeamer(); + + if ($teamer !== $application->getTeamer()) { + return false; + } + return match ($attribute) { - static::WITHDRAW => $teamer === $application->getTeamer(), - static::DELETE => $teamer === $application->getTeamer() - && Application::STATUS_REJECTED === $status, - static::VIEW => $teamer === $application->getTeamer() - && Application::STATUS_REJECTED !== $status, + static::DELETE => Application::STATUS_REJECTED === $status, + static::VIEW, static::WITHDRAW => Application::STATUS_REJECTED !== $status, default => false, }; } diff --git a/templates/teamer/assignment/detail.html.twig b/templates/teamer/assignment/detail.html.twig index 60dc181..ad07250 100644 --- a/templates/teamer/assignment/detail.html.twig +++ b/templates/teamer/assignment/detail.html.twig @@ -22,12 +22,14 @@ {% if application.comment and application.commentVisible %} Begründung: {{ application.comment|nl2br}} {% endif %} - {% elseif application.status == constant('App\\Entity\\Application::STATUS_PENDING') %} + {% endif %} + {% if application.status == constant('App\\Entity\\Application::STATUS_PENDING') %} {% if application.comment and application.commentVisible %} Begründung: {{ application.comment|nl2br}} {% endif %} - {% else %} + {% endif %} + {% if is_granted('WITHDRAW', application) %}