X-Git-Url: https://git.localhorst.tv/?a=blobdiff_plain;f=app%2FPolicies%2FRoundPolicy.php;h=1f872c57bf054edaaf7de6fbba5ea60857c1e40b;hb=4f4b2fd64141cbbff953881e2705602a00b85df5;hp=7ea3cacb8544a31cc65e90e3fbdac9f2e40a70ef;hpb=09c1644b5f64d7423905ae1be8f79da0b482289a;p=alttp.git diff --git a/app/Policies/RoundPolicy.php b/app/Policies/RoundPolicy.php index 7ea3cac..1f872c5 100644 --- a/app/Policies/RoundPolicy.php +++ b/app/Policies/RoundPolicy.php @@ -41,7 +41,7 @@ class RoundPolicy */ public function create(User $user) { - return $user->role === 'admin'; + return false; } /** @@ -53,7 +53,7 @@ class RoundPolicy */ public function update(User $user, Round $round) { - return $user->role === 'admin'; + return !$round->tournament->locked && $user->isTournamentAdmin($round->tournament); } /** @@ -92,6 +92,22 @@ 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)) || + $round->isComplete(); + } + /** * Determine whether the user can set the seed for this round. * @@ -101,6 +117,31 @@ class RoundPolicy */ public function setSeed(User $user, Round $round) { - return $user->role === 'admin' || ($user->isParticipant($round->tournament) && !$round->locked); + return !$round->locked && ($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->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); + } + }