X-Git-Url: https://git.localhorst.tv/?a=blobdiff_plain;ds=sidebyside;f=app%2FPolicies%2FRoundPolicy.php;h=f9f2d461bd76ff0b425f1a4f8b3dc6c688e45178;hb=1c91e5dcedd930bea5fe44ea95a77a9ecd0177a4;hp=045785d28047aed0bd5d9e177d767234e1471aea;hpb=55f2d7cd6c290a0d26db177d54d20c393f890bbb;p=alttp.git diff --git a/app/Policies/RoundPolicy.php b/app/Policies/RoundPolicy.php index 045785d..f9f2d46 100644 --- a/app/Policies/RoundPolicy.php +++ b/app/Policies/RoundPolicy.php @@ -91,4 +91,58 @@ class RoundPolicy { return false; } + + /** + * Determine whether the user can see the results for this round. + * + * @param \App\Models\User $user + * @param \App\Models\Round $round + * @return \Illuminate\Auth\Access\Response|bool + */ + public function seeResults(?User $user, Round $round) + { + return + $round->locked || + ($user && $user->hasFinished($round)) || + ($user && $user->isTournamentMonitor($round->tournament)) || + ($user && $user->isTournamentAdmin($round->tournament) && !$user->isRunner($round->tournament)) || + $round->isComplete(); + } + + /** + * Determine whether the user can set the seed for this round. + * + * @param \App\Models\User $user + * @param \App\Models\Round $round + * @return \Illuminate\Auth\Access\Response|bool + */ + public function setSeed(User $user, Round $round) + { + return !$round->locked && ($user->isAdmin() || $user->isRunner($round->tournament) || $user->isTournamentAdmin($round->tournament)); + } + + /** + * Determine whether the user can lock this round. + * + * @param \App\Models\User $user + * @param \App\Models\Round $round + * @return \Illuminate\Auth\Access\Response|bool + */ + public function lock(User $user, Round $round) + { + return !$round->tournament->locked && ($user->isAdmin() || $user->isTournamentAdmin($round->tournament)); + } + + /** + * Determine whether the user can unlock this round. + * + * @param \App\Models\User $user + * @param \App\Models\Round $round + * @return \Illuminate\Auth\Access\Response|bool + */ + public function unlock(User $user, Round $round) + { + return $this->lock($user, $round); + } + }