]> git.localhorst.tv Git - alttp.git/blobdiff - app/Policies/RoundPolicy.php
respond to whispers
[alttp.git] / app / Policies / RoundPolicy.php
index c1a1a4845beb157e0ddcc50547ced4d28b440531..1f872c57bf054edaaf7de6fbba5ea60857c1e40b 100644 (file)
@@ -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,7 +117,7 @@ class RoundPolicy
         */
        public function setSeed(User $user, Round $round)
        {
-               return $user->isAdmin() || (!$round->locked && ($user->isRunner($round->tournament) || $user->isTournamentAdmin($round->tournament)));
+               return !$round->locked && ($user->isRunner($round->tournament) || $user->isTournamentAdmin($round->tournament));
        }
 
        /**
@@ -113,7 +129,7 @@ class RoundPolicy
         */
        public function lock(User $user, Round $round)
        {
-               return $user->isAdmin() || $user->isTournamentAdmin($round->tournament);
+               return !$round->tournament->locked && ($user->isTournamentAdmin($round->tournament));
        }
 
        /**