]> git.localhorst.tv Git - alttp.git/blobdiff - app/Policies/RoundPolicy.php
round titles
[alttp.git] / app / Policies / RoundPolicy.php
index 1e29803d24764f258b311c806c9456c98a064b57..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,6 +117,31 @@ class RoundPolicy
         */
        public function setSeed(User $user, Round $round)
        {
-               return $user->role === 'admin' || $user->isParticipant($round->tournament);
+               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);
+       }
+
 }